diff --git a/src/admin/mymodels/abstractmodel.php b/src/admin/mymodels/abstractmodel.php index c3b934d..6bfe2e2 100644 --- a/src/admin/mymodels/abstractmodel.php +++ b/src/admin/mymodels/abstractmodel.php @@ -96,7 +96,14 @@ abstract class ClubsAbstractModel $mappings = $this->getDataMappings(); $values = array(); foreach($mappings as $m) - $values[$m] = $q->q($this->$m); + $values[$m] = $this->$m; + + $this->preFilter($values); + + foreach($mappings as $m) + $values[$m] = $q->q($values[$m]); + + $this->postFilter($values); $q->insert($this->getTableName()) ->columns(array_map(array($q, 'qn'), $mappings)) @@ -121,7 +128,14 @@ abstract class ClubsAbstractModel $mapping = $this->getDataMappings(); $values = array(); foreach($mapping as $m) - $values[$m] = $q->q($this->$m); + $values[$m] = $this->$m; + + $this->preFilter($values); + + foreach($mapping as $m) + $values[$m] = $q->q($values[$m]); + + $this->postFilter($values); $q->update($this->getTableName()); foreach($mapping as $m) @@ -152,4 +166,8 @@ abstract class ClubsAbstractModel return true; } + protected function preFilter(&$values){} + protected function postFilter(&$values){} + + } diff --git a/src/admin/mymodels/place.php b/src/admin/mymodels/place.php index aec0100..951f739 100644 --- a/src/admin/mymodels/place.php +++ b/src/admin/mymodels/place.php @@ -1,23 +1,14 @@ id; - } /** * @return string @@ -67,125 +58,39 @@ class ClubsPlace $this->area = $area; } - protected function loadData(array $data) - { - $this->id = $data['id']; - $this->name = $data['name']; - } - protected function __construct() {} - public static function loadOffers() + public static function loadPlaces() { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - $q->select('*') - ->from('#__club_offers'); - $dbo->setQuery($q); - $dbo->execute(); - $list = $dbo->loadAssocList('id'); - - $ret = array(); - foreach($list as $o) - { - $oo = new ClubsOffer(); - $oo->loadData($o); - - $ret[] = $oo; - } - - return $ret; + return self::loadElements(self::tableName, self::className); } - public static function loadOffer(int $id) + public static function loadPlace(int $id) { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - $q->select('*')->from('#__club_offers')->where('id=' . (int) $id); - $dbo->setQuery($q); - $dbo->execute(); - - $row = $dbo->loadAssoc(); - - if($row == null) - { - throw new Exception("No offer found."); - // TODO - } - - $offer = new ClubsOffer(); - $offer->loadData($row); - return $offer; + return self::loadElement($id, self::tableName, self::className); } - public static function createOffer() + public static function createPlace() { - $offer = new ClubsOffer(); - $offer->id = 'new'; - return $offer; + $place = new ClubsPlace(); + $place->id = 'new'; + return $place; } - - public function save() + protected function getDataMappings() { - if($this->id === 'new') - $this->insertOffer(); - else - $this->updateOffer(); + return array('name', 'address', 'area'); } + + private const tableName = '#__club_places'; + private const className = 'ClubsPlace'; - private function insertOffer() + protected function getTableName() { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - - $vname = $q->q($this->name); - - $q->insert('#__club_offers') - ->columns(array('name')) - ->values("$vname") - ; - - $dbo->transactionStart(); - $dbo->setQuery($q); - $dbo->execute(); - $this->id = $dbo->insertid(); - $dbo->transactionCommit(); + return self::tableName; } - - private function updateOffer() - { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - - $vname = $q->q($this->name); - - $q->update('#__club_offers') - ->set(array( - "name=$vname" - )) - ->where("id=". (int) $this->id) - ; - - $dbo->setQuery($q); - $dbo->execute(); - } - - public function delete() - { - if($this->id === 'new') - return; - $dbo = Factory::getDbo(); - - $q = $dbo->getQuery(true); - $q->delete('#__club_offers') - ->where('id=' . (int) $this->id); - - $dbo->setQuery($q); - $dbo->execute(); - } - + }