Started creating abstract model to simplify writing code
This commit is contained in:
parent
893dc754f0
commit
4b2dbff104
@ -96,7 +96,14 @@ abstract class ClubsAbstractModel
|
|||||||
$mappings = $this->getDataMappings();
|
$mappings = $this->getDataMappings();
|
||||||
$values = array();
|
$values = array();
|
||||||
foreach($mappings as $m)
|
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())
|
$q->insert($this->getTableName())
|
||||||
->columns(array_map(array($q, 'qn'), $mappings))
|
->columns(array_map(array($q, 'qn'), $mappings))
|
||||||
@ -121,7 +128,14 @@ abstract class ClubsAbstractModel
|
|||||||
$mapping = $this->getDataMappings();
|
$mapping = $this->getDataMappings();
|
||||||
$values = array();
|
$values = array();
|
||||||
foreach($mapping as $m)
|
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());
|
$q->update($this->getTableName());
|
||||||
foreach($mapping as $m)
|
foreach($mapping as $m)
|
||||||
@ -152,4 +166,8 @@ abstract class ClubsAbstractModel
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function preFilter(&$values){}
|
||||||
|
protected function postFilter(&$values){}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// No direct access.
|
// No direct access.
|
||||||
use Joomla\CMS\Factory;
|
|
||||||
|
|
||||||
defined('_JEXEC') or die;
|
defined('_JEXEC') or die;
|
||||||
|
|
||||||
class ClubsPlace
|
class ClubsPlace extends ClubsAbstractModel
|
||||||
{
|
{
|
||||||
protected $id;
|
|
||||||
protected $name;
|
protected $name;
|
||||||
protected $address;
|
protected $address;
|
||||||
protected $area;
|
protected $area;
|
||||||
/**
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getId()
|
|
||||||
{
|
|
||||||
return $this->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
@ -67,124 +58,38 @@ class ClubsPlace
|
|||||||
$this->area = $area;
|
$this->area = $area;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function loadData(array $data)
|
|
||||||
{
|
|
||||||
$this->id = $data['id'];
|
|
||||||
$this->name = $data['name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function __construct()
|
protected function __construct()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
public static function loadOffers()
|
public static function loadPlaces()
|
||||||
{
|
{
|
||||||
$dbo = Factory::getDbo();
|
return self::loadElements(self::tableName, self::className);
|
||||||
$q = $dbo->getQuery(true);
|
}
|
||||||
$q->select('*')
|
|
||||||
->from('#__club_offers');
|
|
||||||
$dbo->setQuery($q);
|
|
||||||
$dbo->execute();
|
|
||||||
$list = $dbo->loadAssocList('id');
|
|
||||||
|
|
||||||
$ret = array();
|
|
||||||
foreach($list as $o)
|
public static function loadPlace(int $id)
|
||||||
{
|
{
|
||||||
$oo = new ClubsOffer();
|
return self::loadElement($id, self::tableName, self::className);
|
||||||
$oo->loadData($o);
|
|
||||||
|
|
||||||
$ret[] = $oo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $ret;
|
public static function createPlace()
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static function loadOffer(int $id)
|
|
||||||
{
|
{
|
||||||
$dbo = Factory::getDbo();
|
$place = new ClubsPlace();
|
||||||
$q = $dbo->getQuery(true);
|
$place->id = 'new';
|
||||||
$q->select('*')->from('#__club_offers')->where('id=' . (int) $id);
|
return $place;
|
||||||
$dbo->setQuery($q);
|
}
|
||||||
$dbo->execute();
|
|
||||||
|
|
||||||
$row = $dbo->loadAssoc();
|
protected function getDataMappings()
|
||||||
|
|
||||||
if($row == null)
|
|
||||||
{
|
{
|
||||||
throw new Exception("No offer found.");
|
return array('name', 'address', 'area');
|
||||||
// TODO
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$offer = new ClubsOffer();
|
private const tableName = '#__club_places';
|
||||||
$offer->loadData($row);
|
private const className = 'ClubsPlace';
|
||||||
return $offer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function createOffer()
|
protected function getTableName()
|
||||||
{
|
{
|
||||||
$offer = new ClubsOffer();
|
return self::tableName;
|
||||||
$offer->id = 'new';
|
|
||||||
return $offer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function save()
|
|
||||||
{
|
|
||||||
if($this->id === 'new')
|
|
||||||
$this->insertOffer();
|
|
||||||
else
|
|
||||||
$this->updateOffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function insertOffer()
|
|
||||||
{
|
|
||||||
$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();
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user