diff --git a/src/admin/abstract/model.php b/src/admin/abstract/model.php index f6470b9..c82635c 100644 --- a/src/admin/abstract/model.php +++ b/src/admin/abstract/model.php @@ -74,9 +74,13 @@ abstract class AbstractClubsModel $obj = new $className(); $obj->loadData($row); + $obj->loadCustomData($row); return $obj; } + protected function loadCustomData($assoc) + {} + public function save() { if($this->id === 'new') @@ -146,16 +150,15 @@ abstract class AbstractClubsModel $dbo->execute(); } - protected function prepareDelete(){} + protected function prepareDelete($dbo){} public function delete() { if($this->id === 'new') return; - $this->prepareDelete(); - $dbo = Factory::getDbo(); + $this->prepareDelete($dbo); $q = $dbo->getQuery(true); $q->delete($this->getTableName()) diff --git a/src/admin/mymodels/club.php b/src/admin/mymodels/club.php index dbbafff..c9492c6 100644 --- a/src/admin/mymodels/club.php +++ b/src/admin/mymodels/club.php @@ -1,11 +1,10 @@ presidentId; + return $this->president->getId(); } /** @@ -87,7 +86,7 @@ class ClubsClub */ public function getPresident() { - return ClubsUser::loadUser((int) $this->presidentId); + return $this->president; } /** @@ -151,7 +150,7 @@ class ClubsClub */ public function setPresidentId(int $presidentId) { - $this->presidentId = $presidentId; + $this->president = ClubsUser::loadUser($presidentId); } /** @@ -159,15 +158,7 @@ class ClubsClub */ public function setPresident(ClubsUser $user) { - $this->presidentId = $user->getId(); - } - - /** - * @return int - */ - public function getId() - { - return $this->id; + $this->president = $user; } /** @@ -185,136 +176,63 @@ class ClubsClub { $this->name = $name; } - - protected function loadData(array $data) + + + + public static function loadClubs() { - $mapping = array('id', 'name', 'address', 'city', 'homepage', 'mail', 'iban', 'bic', 'charitable', 'presidentId'); - - foreach($mapping as $m) - $this->$m = $data[$m]; + return self::loadElements(self::tableName, self::className); + } + + public static function loadClub($id) + { + return self::loadElement($id, self::tableName, self::className); } protected function __construct() {} - public static function loadClubs() - { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - $q->select('*') - ->from('#__club_clubs'); - $dbo->setQuery($q); - $dbo->execute(); - $list = $dbo->loadAssocList('id'); - - $ret = array(); - foreach($list as $c) - { - $co = new ClubsClub(); - $co->loadData($c); - - $ret[] = $co; - } - - return $ret; - } - - /** - * @param int $id - * @throws Exception - * @return ClubsOffer - */ - public static function loadClub(int $id) - { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - $q->select('*')->from('#__club_clubs')->where('id=' . (int) $id); - $dbo->setQuery($q); - $dbo->execute(); - - $row = $dbo->loadAssoc(); - - if($row == null) - { - throw new Exception("No club found."); - // TODO - } - - $club = new ClubsClub(); - $club->loadData($row); - return $club; - } - public static function createClub() { $club = new ClubsClub(); $club->id = 'new'; return $club; } + - public function save() + protected function loadCustomData($assoc) { - if($this->id === 'new') - $this->insertClub(); - else - $this->updateClub(); + parent::loadCustomData($assoc); + $this->president = ClubsUser::loadUser($assoc['president']); } - private function insertClub() + protected function postQuoteFilter(&$values) { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - - $mapping = array('name', 'address', 'city', 'homepage', 'mail', 'iban', 'bic', 'charitable', 'presidentId'); - $values = array(); - foreach($mapping as $m) - $values[$m] = $q->q($this->$m); - - $q->insert('#__club_clubs') - ->columns(array('name')) - ->values(join(',', $values)) - ; - - $dbo->transactionStart(); - $dbo->setQuery($q); - $dbo->execute(); - $this->id = $dbo->insertid(); - $dbo->transactionCommit(); + parent::postQuoteFilter($values); + $values['president'] = $this->president->getId(); } - private function updateClub() + protected function prepareDelete($dbo) + {} + + protected function getDataMappings() { - $dbo = Factory::getDbo(); - $q = $dbo->getQuery(true); - - $mapping = array('name', 'address', 'city', 'homepage', 'mail', 'iban', 'bic', 'charitable', 'presidentId'); - $values = array(); - foreach($mapping as $m) - $values[$m] = $q->q($this->$m); - - $q->update('#__club_clubs'); - foreach($mapping as $m) - $q->set($q->qn($m) . '=' . $values[$m]); - $q->where("id=". (int) $this->id); - - $dbo->setQuery($q); - $dbo->execute(); + return array('neme', 'address', 'city', 'homepage', 'mail', 'iban', 'bic', 'charitable'); + } + + protected function getRequiredDataMappings() + { + return array('neme', 'address', 'city', 'mail', 'iban', 'bic', 'charitable'); } - public function delete() + private const tableName = '#__club_clubs'; + private const className = 'ClubsClub'; + protected function getTableName() { - if($this->id === 'new') - return; - $dbo = Factory::getDbo(); - - $q = $dbo->getQuery(true); - $q->delete('#__club_clubs') - ->where('id=' . (int) $this->id); - - $dbo->setQuery($q); - $dbo->execute(); + return self::tableName; } + }