906 Zeilen
27 KiB
PHP
906 Zeilen
27 KiB
PHP
<?php
|
|
/**
|
|
* Project:
|
|
* Contenido Content Management System
|
|
*
|
|
* Description:
|
|
* Objects for Category handling.
|
|
*
|
|
* Requirements:
|
|
* @con_php_req 5.0
|
|
*
|
|
*
|
|
* @package Contenido Backend classes
|
|
* @version 0.8.2
|
|
* @author Rudi Bieller
|
|
* @copyright four for business AG <www.4fb.de>
|
|
* @license http://www.contenido.org/license/LIZENZ.txt
|
|
* @link http://www.4fb.de
|
|
* @link http://www.contenido.org
|
|
*
|
|
* {@internal
|
|
* created 2008-02-15
|
|
* modified 2008-02-22 Contenido_Categories now implements Countable
|
|
* modified 2008-08-20 Removed unnecessary/redundant security fixes (typecasting is already done in getter methods) that were made during security fixing phase
|
|
* changed method setDebug() in Contenido_Category_Base to allow all debug modes available
|
|
* modified 2009-01-05 Bugfix in Contenido_Categories::load() Subcategories will be loaded only if set so.
|
|
* modified 2009-01-14 Removed duplicate row in sql select at method load()
|
|
* $Id$:
|
|
* }}
|
|
*
|
|
*/
|
|
|
|
if(!defined('CON_FRAMEWORK')) {
|
|
die('Illegal call');
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Base class for Contenido_Category, Contenido_Categories, Contenido_Category_Language.
|
|
* @version 0.9.0
|
|
* @author Rudi Bieller
|
|
* @copyright four for business AG <www.4fb.de>
|
|
* {@internal
|
|
* created 2008-02-15
|
|
* }}
|
|
*/
|
|
class Contenido_Category_Base {
|
|
/**
|
|
* @var obj
|
|
* @access protected
|
|
*/
|
|
protected $oDb;
|
|
/**
|
|
* @var array
|
|
* @access protected
|
|
*/
|
|
protected $aCfg;
|
|
/**
|
|
* @var boolean
|
|
* @access protected
|
|
*/
|
|
protected $bDbg;
|
|
/**
|
|
* @var string
|
|
* @access protected
|
|
*/
|
|
protected $sDbgMode;
|
|
/**
|
|
* @var obj
|
|
* @access protected
|
|
*/
|
|
protected $oDbg;
|
|
|
|
/**
|
|
* Constructor.
|
|
* @access public
|
|
* @param DB_ConLite $oDb
|
|
* @param array $aCfg
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function __construct(DB_ConLite $oDb, array $aCfg) {
|
|
$this->oDb = $oDb;
|
|
$this->aCfg = $aCfg;
|
|
$this->bDbg = false;
|
|
$this->oDbg = null;
|
|
}
|
|
|
|
/**
|
|
* Set internal property for debugging on/off and choose appropriate debug object
|
|
* @access public
|
|
* @param boolean $bDebug
|
|
* @param string $sDebugMode
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function setDebug($bDebug = true, $sDebugMode = 'visible') {
|
|
if ($bDebug === false) {
|
|
$this->bDbg = false;
|
|
$this->oDbg = null;
|
|
$this->sDbgMode = 'hidden';
|
|
} else {
|
|
if (!in_array($sDebugMode, array('visible', 'visible_adv', 'file', 'devnull', 'hidden'))) {
|
|
$sDebugMode = 'devnull';
|
|
}
|
|
try {
|
|
$this->sDbgMode = $sDebugMode;
|
|
$this->bDbg = true;
|
|
$this->oDbg = DebuggerFactory::getDebugger($sDebugMode);
|
|
} catch (InvalidArgumentException $e) {
|
|
throw $e;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Implementation of a Contenido Category.
|
|
* @version 0.9.0
|
|
* @author Rudi Bieller
|
|
* @copyright four for business AG <www.4fb.de>
|
|
* {@internal
|
|
* created 2008-02-15
|
|
* }}
|
|
*/
|
|
class Contenido_Category extends Contenido_Category_Base {
|
|
/**#@+
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iIdCat;
|
|
protected $iIdClient;
|
|
protected $iIdParent;
|
|
protected $iIdPre;
|
|
protected $iIdPost;
|
|
protected $iStatus;
|
|
/**#@-*/
|
|
|
|
/**#@+
|
|
* @var string
|
|
* @access protected
|
|
*/
|
|
protected $sAuthor;
|
|
protected $sCreated;
|
|
protected $sModified;
|
|
/**#@-*/
|
|
|
|
/**
|
|
* @var obj
|
|
* @access protected
|
|
*/
|
|
protected $oCategoryLanguage;
|
|
/**
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iIdLang;
|
|
|
|
/**
|
|
* @var boolean
|
|
* @access protected
|
|
*/
|
|
protected $bLoadSubCategories;
|
|
|
|
/**
|
|
* @var obj
|
|
* @access protected
|
|
*/
|
|
protected $oSubCategories; // if required, this holds the SubCategories of current Category
|
|
|
|
/**
|
|
* @var boolean
|
|
* @access protected
|
|
*/
|
|
protected $bHasSubCategories;
|
|
|
|
/**
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iCurrentSubCategoriesLoadDepth; // current level of SubCategories
|
|
|
|
/**
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iSubCategoriesLoadDepth; // up to which level should SubCategories be loaded
|
|
|
|
/**
|
|
* @var obj DB_ConLite
|
|
* @access private
|
|
*/
|
|
private $_oDb;
|
|
|
|
|
|
/**
|
|
* Constructor.
|
|
* @access public
|
|
* @param DB_ConLite $oDb
|
|
* @param array $aCfg
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function __construct(DB_ConLite $oDb, array $aCfg) {
|
|
parent::__construct($oDb, $aCfg);
|
|
$this->oSubCategories = null;
|
|
$this->bHasSubCategories = false;
|
|
$this->iSubCategoriesLoadDepth = 0;
|
|
$this->iCurrentSubCategoriesLoadDepth = 0;
|
|
}
|
|
|
|
/**
|
|
* Loads properties for a given idcat. Optionally, also properties from catlang will be loaded into object.
|
|
*
|
|
* @access public
|
|
* @param int $iIdCat
|
|
* @param boolean $bIncludeLanguage If set to true, also creates Contenido_Category_Language object
|
|
* @param int $iIdlang If $bIncludeLanguage is set to true, you must set this value, too or use setIdLang() before!
|
|
* @return boolean
|
|
* @throws InvalidArgumentException
|
|
* @throws Exception TODO
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function load($iIdCat, $bIncludeLanguage = false, $iIdlang = -1) {
|
|
if (intval($iIdCat) <= 0) {
|
|
throw new InvalidArgumentException('Idcat to load must be greater than 0!');
|
|
}
|
|
$this->setIdLang($iIdlang);
|
|
if ($bIncludeLanguage === true && $this->getIdLang() == -1) {
|
|
throw new InvalidArgumentException('When setting $bIncludeLanguage to true you must provide an $iIdlang!');
|
|
}
|
|
$sSql = 'SELECT
|
|
idclient, parentid, preid, postid, status, author, created, lastmodified
|
|
FROM
|
|
' . $this->aCfg['tab']['cat'] . '
|
|
WHERE
|
|
idcat = ' . Contenido_Security::toInteger($iIdCat);
|
|
if ($this->bDbg === true) {
|
|
$this->oDbg->show($sSql, 'Contenido_Category::load($iIdCat, $bIncludeLanguage = false, $iIdlang = -1): $sSql');
|
|
}
|
|
$this->oDb->query($sSql);
|
|
if ($this->oDb->Errno != 0) {
|
|
return false;
|
|
}
|
|
$this->oDb->next_record();
|
|
$this->setIdCat($iIdCat);
|
|
$this->setIdClient($this->oDb->f('idclient'));
|
|
$this->setIdParent($this->oDb->f('parentid'));
|
|
$this->setIdPre($this->oDb->f('preid'));
|
|
$this->setIdPost($this->oDb->f('postid'));
|
|
$this->setStatus($this->oDb->f('status'));
|
|
$this->setAuthor($this->oDb->f('author'));
|
|
$this->setDateCreated($this->oDb->f('created'));
|
|
$this->setDateModified($this->oDb->f('lastmodified'));
|
|
if ($bIncludeLanguage === true) {
|
|
try {
|
|
$oCategoryLanguage = new Contenido_Category_Language($this->oDb, $this->aCfg);
|
|
$oCategoryLanguage->setDebug($this->bDbg, $this->sDbgMode);
|
|
$oCategoryLanguage->setIdCat($this->getIdCat());
|
|
$oCategoryLanguage->setIdLang($this->getIdLang());
|
|
$oCategoryLanguage->load();
|
|
$this->setCategoryLanguage($oCategoryLanguage);
|
|
} catch (Exception $e) {
|
|
throw $e;
|
|
}
|
|
}
|
|
if ($this->bLoadSubCategories === true) {
|
|
$this->_getSubCategories($iIdCat, $bIncludeLanguage, $iIdlang);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Loads SubCategories depending on values for $this->bLoadSubCategories and $this->iSubCategoriesLoadDepth
|
|
* @access private
|
|
* @param int $iIdcat
|
|
* @param boolean $bIncludeLanguage If set to true, also creates Contenido_Category_Language object
|
|
* @param int $iIdlang If $bIncludeLanguage is set to true, you must set this value, too or use setIdLang() before!
|
|
* @return Contenido_Categories
|
|
* @author Rudi Bieller
|
|
*/
|
|
private function _getSubCategories($iIdcat, $bIncludeLanguage = false, $iIdlang = -1) {
|
|
if (intval($iIdcat) <= 0) {
|
|
throw new InvalidArgumentException('Idcat to load must be greater than 0!');
|
|
}
|
|
if ($bIncludeLanguage === true && $this->getIdLang() == -1) {
|
|
throw new InvalidArgumentException('When setting $bIncludeLanguage to true you must provide an $iIdlang!');
|
|
}
|
|
// if we don't have a Contenido_Categories object created yet, do it now
|
|
if (is_null($this->oSubCategories)) {
|
|
$this->oSubCategories = new Contenido_Categories($this->oDb, $this->aCfg);
|
|
$this->_oDb = new DB_ConLite();
|
|
}
|
|
$aSubCategories = $this->_getSubCategoriesAsArray($iIdcat);
|
|
// current load depth: $this->iCurrentSubCategoriesLoadDepth
|
|
// load depth to go to: $this->iSubCategoriesLoadDepth
|
|
foreach ($aSubCategories as $iIdcatCurrent) {
|
|
try {
|
|
$oCategory = new Contenido_Category($this->_oDb, $this->aCfg);
|
|
$oCategory->setDebug($this->bDbg, $this->sDbgMode);
|
|
if ($this->iSubCategoriesLoadDepth > 0) {
|
|
$oCategory->setloadSubCategories($this->bLoadSubCategories, ($this->iSubCategoriesLoadDepth - 1));
|
|
}
|
|
$oCategory->load($iIdcatCurrent, $bIncludeLanguage, $iIdlang);
|
|
$this->oSubCategories->add($oCategory);
|
|
} catch (InvalidArgumentException $e) {
|
|
throw $e;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Return array with idcats of subcategories of given idcat
|
|
* @access private
|
|
* @param int $iIdcat
|
|
* @return array
|
|
* @author Rudi Bieller
|
|
*/
|
|
private function _getSubCategoriesAsArray($iIdcat) {
|
|
if (intval($iIdcat) <= 0) {
|
|
throw new InvalidArgumentException('Idcat to load must be greater than 0!');
|
|
}
|
|
$aSubCats = array();
|
|
$sSql = 'SELECT
|
|
cattree.idcat
|
|
FROM
|
|
'.$this->aCfg["tab"]["cat_tree"].' AS cattree,
|
|
'.$this->aCfg["tab"]["cat"].' AS cat,
|
|
'.$this->aCfg["tab"]["cat_lang"].' AS catlang
|
|
WHERE
|
|
cattree.idcat = cat.idcat AND
|
|
cat.idcat = catlang.idcat AND
|
|
cat.idclient = ' . $this->getIdClient() . ' AND
|
|
catlang.idlang = ' . $this->getIdLang() . ' AND
|
|
catlang.visible = 1 AND
|
|
cat.parentid = ' . Contenido_Security::toInteger($iIdcat) .'
|
|
ORDER BY
|
|
cattree.idtree';
|
|
if ($this->bDbg === true) {
|
|
$this->oDbg->show($sSql, 'Contenido_Category::_getSubCategoriesAsArray($iIdcat): $sSql');
|
|
}
|
|
$this->oDb->query($sSql);
|
|
if ($this->oDb->Errno != 0) {
|
|
return false;
|
|
}
|
|
while ($this->oDb->next_record()) {
|
|
$aSubCats[] = $this->oDb->f('idcat');
|
|
}
|
|
return $aSubCats;
|
|
}
|
|
|
|
// SETTER
|
|
|
|
/**
|
|
* If you need to load SubCategories, set to true and set how deep SubCategories should be loaded
|
|
* @access public
|
|
* @param boolean $bLoad
|
|
* @param int $iLoadDepth
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function setloadSubCategories($bLoad = false, $iLoadDepth = 0) {
|
|
$this->bLoadSubCategories = (boolean) $bLoad;
|
|
$this->iSubCategoriesLoadDepth = (int) $iLoadDepth;
|
|
}
|
|
|
|
/**
|
|
* Set internal property with SubCategories of current Category
|
|
* @access public
|
|
* @param Contenido_Categories $oCategories
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function setSubCategories(Contenido_Categories $oCategories) {
|
|
$this->oSubCategories = $oCategories;
|
|
}
|
|
|
|
public function setCategoryLanguage(Contenido_Category_Language $oCatLang) {
|
|
$this->oCategoryLanguage = $oCatLang;
|
|
}
|
|
|
|
public function setIdCat($iIdcat) {
|
|
$this->iIdCat = (int) $iIdcat;
|
|
}
|
|
public function setIdClient($iIdcient) {
|
|
$this->iIdClient = (int) $iIdcient;
|
|
}
|
|
public function setIdParent($iIdcatParent) {
|
|
$this->iIdParent = (int) $iIdcatParent;
|
|
}
|
|
public function setIdPre($iIdcatPre) {
|
|
$this->iIdPre = (int) $iIdcatPre;
|
|
}
|
|
public function setIdPost($iIdcatPost) {
|
|
$this->iIdPost = (int) $iIdcatPost;
|
|
}
|
|
public function setStatus($iStatus) {
|
|
$iStatus = (int) $iStatus;
|
|
$aValid = array(0, 1);
|
|
if (!in_array($iStatus, $aValid)) {
|
|
throw new InvalidArgumentException('Status must be either 0 or 1');
|
|
}
|
|
$this->iStatus = $iStatus;
|
|
}
|
|
public function setAuthor($sAuthor) {
|
|
// TODO: input validation, strlen 32
|
|
$this->sAuthor = (string) $sAuthor;
|
|
}
|
|
public function setDateCreated($sDateCreated) {
|
|
// TODO: input validation, correct date/datetime format
|
|
$this->sCreated = (string) $sDateCreated;
|
|
}
|
|
public function setDateModified($sDateModified) {
|
|
// TODO: input validation, correct date/datetime format
|
|
$this->sModified = (string) $sDateModified;
|
|
}
|
|
public function setIdLang($iIdlang) {
|
|
$this->iIdLang = (int) $iIdlang;
|
|
}
|
|
|
|
// GETTER
|
|
|
|
public function getSubCategories() {
|
|
return is_null($this->oSubCategories) ? new Contenido_Categories($this->oDb, $this->aCfg) : $this->oSubCategories;
|
|
}
|
|
|
|
public function getCategoryLanguage() {
|
|
return !is_null($this->oCategoryLanguage) ? $this->oCategoryLanguage : new Contenido_Category_Language($this->oDb, $this->aCfg);
|
|
}
|
|
|
|
public function getIdCat() {
|
|
return !is_null($this->iIdCat) ? (int) $this->iIdCat : -1;
|
|
}
|
|
public function getIdClient() {
|
|
return !is_null($this->iIdClient) ? (int) $this->iIdClient : -1;
|
|
}
|
|
public function getIdParent() {
|
|
return !is_null($this->iIdParent) ? (int) $this->iIdParent : -1;
|
|
}
|
|
public function getIdPre() {
|
|
return !is_null($this->iIdPre) ? (int) $this->iIdPre : -1;
|
|
}
|
|
public function getIdPost() {
|
|
return !is_null($this->iIdPost) ? (int) $this->iIdPost : -1;
|
|
}
|
|
public function getStatus() {
|
|
return !is_null($this->iStatus) ? (int) $this->iStatus : -1;
|
|
}
|
|
public function getAuthor() {
|
|
return !is_null($this->sAuthor) ? (string) $this->sAuthor : '';
|
|
}
|
|
public function getDateCreated() {
|
|
return !is_null($this->sCreated) ? (string) $this->sCreated : '';
|
|
}
|
|
public function getDateModified() {
|
|
return !is_null($this->sModified) ? (string) $this->sModified : '';
|
|
}
|
|
public function getIdLang() {
|
|
return (!is_null($this->iIdLang) && $this->iIdLang > 0) ? (int) $this->iIdLang : -1;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implementation of a "Collection" of Contenido Categories.
|
|
* @version 0.9.0
|
|
* @author Rudi Bieller
|
|
* @copyright four for business AG <www.4fb.de>
|
|
* {@internal
|
|
* created 2008-02-15
|
|
* modified 2008-02-25 Implemented ArrayAccess; added methods reverse(), ksort() and krsort().
|
|
* }}
|
|
*/
|
|
class Contenido_Categories extends Contenido_Category_Base implements IteratorAggregate, ArrayAccess, Countable {
|
|
/**
|
|
* @var array
|
|
* @access protected
|
|
*/
|
|
protected $aContenidoCategories;
|
|
/**
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iIdLang;
|
|
/**
|
|
* @var boolean
|
|
* @access protected
|
|
*/
|
|
protected $bLoadSubCategories;
|
|
|
|
/**
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iSubCategoriesLoadDepth; // up to which level should SubCategories be loaded
|
|
|
|
/**
|
|
* Constructor.
|
|
* @access public
|
|
* @param DB_ConLite $oDb
|
|
* @param array $aCfg
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function __construct(DB_ConLite $oDb, array $aCfg) {
|
|
parent::__construct($oDb, $aCfg);
|
|
$this->aContenidoCategories = array();
|
|
$this->bLoadSubCategories = false;
|
|
$this->iSubCategoriesLoadDepth = 0;
|
|
}
|
|
|
|
/**
|
|
* Loads a range of Category-IDs.
|
|
* @access public
|
|
* @param array $aCategoryIds
|
|
* @param boolean $bIncludeLanguage
|
|
* @param int $iIdlang If $bIncludeLanguage is set to true, you must set this value, too or use setIdLang() before!
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function load(array $aCategoryIds, $bIncludeLanguage = false, $iIdlang = -1) {
|
|
$this->setIdLang($iIdlang);
|
|
if (sizeof($aCategoryIds) > 0) {
|
|
// loop over passed category ids and create single Category object on each run
|
|
foreach ($aCategoryIds as $iId) {
|
|
$iIdLang = $this->getIdLang();
|
|
$oCategory = new Contenido_Category($this->oDb, $this->aCfg);
|
|
$oCategory->setDebug($this->bDbg, $this->sDbgMode);
|
|
if ($this->iSubCategoriesLoadDepth > 0) {
|
|
$oCategory->setloadSubCategories($this->bLoadSubCategories, $this->iSubCategoriesLoadDepth);
|
|
}
|
|
$oCategory->load($iId, $bIncludeLanguage, $iIdLang);
|
|
$this->add($oCategory);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add a Contenido_Category object into internal array ("Collection")
|
|
* @access public
|
|
* @param Contenido_Category $oContenidoCategory
|
|
* @param int $iOffset
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function add(Contenido_Category $oContenidoCategory, $iOffset = null) {
|
|
$this->offsetSet($iOffset, $oContenidoCategory);
|
|
}
|
|
|
|
/**
|
|
* If you need to load SubCategories, set to true and set how deep SubCategories should be loaded
|
|
* @access public
|
|
* @param boolean $bLoad
|
|
* @param int $iLoadDepth
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function setloadSubCategories($bLoad = false, $iLoadDepth = 0) {
|
|
$this->bLoadSubCategories = (boolean) $bLoad;
|
|
$this->iSubCategoriesLoadDepth = (int) $iLoadDepth;
|
|
}
|
|
|
|
/**
|
|
* Set internal property for Contenido-Idlang
|
|
* @access public
|
|
* @param int $iIdlang
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function setIdLang($iIdlang) {
|
|
$this->iIdLang = (int) $iIdlang;
|
|
}
|
|
|
|
/**
|
|
* Get internal property for Contenido-Idlang
|
|
* @access public
|
|
* @return int
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function getIdLang() {
|
|
return (!is_null($this->iIdLang) && $this->iIdLang > 0) ? (int) $this->iIdLang : -1;
|
|
}
|
|
|
|
/**
|
|
* Interface method for Iterator.
|
|
* @access public
|
|
* @return ArrayObject
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function getIterator () {
|
|
return new ArrayObject($this->aContenidoCategories);
|
|
}
|
|
|
|
/**
|
|
* Interface method for Countable.
|
|
* @access public
|
|
* @return int
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function count () {
|
|
return sizeof($this->aContenidoCategories);
|
|
}
|
|
|
|
/**
|
|
* Sort list of Contenido_Category objects by assigned key
|
|
* @access public
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function ksort() {
|
|
ksort($this->aContenidoCategories);
|
|
}
|
|
|
|
/**
|
|
* Sort list of Contenido_Category objects by assigned key in reverse order
|
|
* @access public
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function krsort() {
|
|
krsort($this->aContenidoCategories);
|
|
}
|
|
|
|
/**
|
|
* Sort list of Contenido_Category objects in reverse order
|
|
* @access public
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function reverse() {
|
|
$this->aContenidoCategories = array_reverse($this->aContenidoCategories);
|
|
}
|
|
|
|
// Methods for ArrayAccess
|
|
|
|
/**
|
|
* Interface method for ArrayAccess.
|
|
* @access public
|
|
* @param int $mOffset
|
|
* @return boolean
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function offsetExists($mOffset) {
|
|
return array_key_exists($this->aContenidoCategories, $mOffset);
|
|
}
|
|
/**
|
|
* Interface method for ArrayAccess.
|
|
* @access public
|
|
* @param int $mOffset
|
|
* @return obj
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function offsetGet($mOffset) {
|
|
return $this->aContenidoCategories[$mOffset];
|
|
}
|
|
/**
|
|
* Interface method for ArrayAccess.
|
|
* @access public
|
|
* @param int $mOffset
|
|
* @param mixed $mValue
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function offsetSet($mOffset, $mValue) {
|
|
if (is_null($mOffset)) {
|
|
$this->aContenidoCategories[] = $mValue;
|
|
} else {
|
|
$this->aContenidoCategories[$mOffset] = $mValue;
|
|
}
|
|
}
|
|
/**
|
|
* Interface method for ArrayAccess.
|
|
* @access public
|
|
* @param int $mOffset
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function offsetUnset($mOffset) {
|
|
unset($this->aContenidoCategories[$mOffset]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implementation of a Contenido Category for a given Contenido Language.
|
|
* @version 0.9.0
|
|
* @author Rudi Bieller
|
|
* @copyright four for business AG <www.4fb.de>
|
|
* {@internal
|
|
* created 2008-02-15
|
|
* }}
|
|
*/
|
|
class Contenido_Category_Language extends Contenido_Category_Base {
|
|
/**#@+
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iIdCatlang;
|
|
protected $iIdCat;
|
|
protected $iIdLang;
|
|
protected $iIdTplcfg;
|
|
/**#@-*/
|
|
|
|
/**
|
|
* @var string
|
|
* @access protected
|
|
*/
|
|
protected $sName;
|
|
protected $sAlias;
|
|
|
|
/**#@+
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iVisible;
|
|
protected $iPublic;
|
|
protected $iStatus;
|
|
/**#@-*/
|
|
|
|
/**#@+
|
|
* @var string
|
|
* @access protected
|
|
*/
|
|
protected $sAuthor;
|
|
protected $sDateCreated;
|
|
protected $sDateModified;
|
|
/**#@-*/
|
|
|
|
/**
|
|
* @var int
|
|
* @access protected
|
|
*/
|
|
protected $iStartIdartlang;
|
|
/**
|
|
* @var string
|
|
* @access protected
|
|
*/
|
|
protected $sUrlname;
|
|
|
|
/**
|
|
* Constructor.
|
|
* @access public
|
|
* @param DB_ConLite $oDb
|
|
* @param array $aCfg
|
|
* @return void
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function __construct(DB_ConLite $oDb, array $aCfg) {
|
|
parent::__construct($oDb, $aCfg);
|
|
}
|
|
|
|
/**
|
|
* Load cat_lang for a given idcat.
|
|
* @access public
|
|
* @param int $iIdCatLang
|
|
* @return boolean
|
|
* @author Rudi Bieller
|
|
*/
|
|
public function load($iIdCatLang = null) {
|
|
if ($this->getIdCat() == -1 || $this->getIdLang() == -1) {
|
|
throw new Exception('idcat and idlang must be set in order to load from con_cat_lang!');
|
|
}
|
|
if (is_null($iIdCatLang)) {
|
|
$sSql = 'SELECT
|
|
idcatlang, idtplcfg, name, visible, public, status, author, created, lastmodified, startidartlang, urlname
|
|
FROM
|
|
' . $this->aCfg["tab"]["cat_lang"] . '
|
|
WHERE
|
|
idcat = ' . $this->getIdCat() . ' AND
|
|
idlang = ' . $this->getIdLang();
|
|
} else {
|
|
$sSql = 'SELECT
|
|
idcatlang, idtplcfg, name, visible, public, status, author, created, lastmodified, startidartlang, urlname
|
|
FROM
|
|
' . $this->aCfg["tab"]["cat_lang"] . '
|
|
WHERE
|
|
idcatlang = ' . Contenido_Security::toInteger($iIdCatLang);
|
|
}
|
|
$this->oDb->query($sSql);
|
|
if ($this->oDb->Errno != 0) {
|
|
return false;
|
|
}
|
|
$this->oDb->next_record();
|
|
$this->setIdCatLang($this->oDb->f('idcatlang'));
|
|
$this->setIdCat($this->getIdCat());
|
|
$this->setIdLang($this->getIdLang());
|
|
$this->setIdTemplateConfig($this->oDb->f('idtplcfg'));
|
|
$this->setName($this->oDb->f('name'));
|
|
$this->setAlias($this->oDb->f('urlname'));
|
|
$this->setVisible($this->oDb->f('visible'));
|
|
$this->setPublic($this->oDb->f('public'));
|
|
$this->setStatus($this->oDb->f('status'));
|
|
$this->setAuthor($this->oDb->f('author'));
|
|
$this->setDateCreated($this->oDb->f('created'));
|
|
$this->setDateLastModified($this->oDb->f('lastmodified'));
|
|
$this->setStartIdLang($this->oDb->f('startidartlang'));
|
|
$this->setUrlName($this->oDb->f('urlname'));
|
|
return true;
|
|
}
|
|
|
|
// SETTER
|
|
|
|
public function setIdCatLang($iIdcatlang) {
|
|
$this->iIdCatlang = (int) $iIdcatlang;
|
|
}
|
|
public function setIdCat($iIdcat) {
|
|
$this->iIdCat = (int) $iIdcat;
|
|
}
|
|
public function setIdLang($iIdlang) {
|
|
$this->iIdlang = (int) $iIdlang;
|
|
}
|
|
public function setIdTemplateConfig($iIdTplcfg) {
|
|
$this->iIdTplcfg = (int) $iIdTplcfg;
|
|
}
|
|
public function setName($sName) {
|
|
$this->sName = (string) $sName;
|
|
}
|
|
public function setAlias($sAlias) {
|
|
$this->sAlias = (string) $sAlias;
|
|
}
|
|
public function setVisible($iVisible) {
|
|
$iVisible = (int) $iVisible;
|
|
$aValid = array(0,1);
|
|
if (!in_array($iVisible, $aValid)) {
|
|
throw new InvalidArgumentException('Visible must be either 0 or 1');
|
|
}
|
|
$this->iVisible = $iVisible;
|
|
}
|
|
public function setPublic($iPublic) {
|
|
$iPublic = (int) $iPublic;
|
|
$aValid = array(0,1);
|
|
if (!in_array($iPublic, $aValid)) {
|
|
throw new InvalidArgumentException('Public must be either 0 or 1');
|
|
}
|
|
$this->iPublic = $iPublic;
|
|
}
|
|
public function setStatus($iStatus) {
|
|
$iStatus = (int) $iStatus;
|
|
$aValid = array(0,1);
|
|
if (!in_array($iStatus, $aValid)) {
|
|
throw new InvalidArgumentException('Status must be either 0 or 1');
|
|
}
|
|
$this->iStatus = $iStatus;
|
|
}
|
|
public function setAuthor($sAuthor) {
|
|
$this->sAuthor = (string) $sAuthor;
|
|
}
|
|
public function setDateCreated($sDateCreated) {
|
|
$this->sDateCreated = (string) $sDateCreated;
|
|
}
|
|
public function setDateLastModified($sDateLastModified) {
|
|
$this->sDateModified = (string) $sDateLastModified;
|
|
}
|
|
public function setStartIdLang($iStartIdlang) {
|
|
$this->iStartIdartlang = (int) $iStartIdlang;
|
|
}
|
|
public function setUrlName($sUrlName) {
|
|
$this->sUrlname = (string) $sUrlName;
|
|
}
|
|
|
|
// GETTER
|
|
|
|
public function getIdCatLang() {
|
|
return !is_null($this->iIdCatlang) ? (int) $this->iIdCatlang : -1;
|
|
}
|
|
public function getIdCat() {
|
|
return !is_null($this->iIdCat) ? (int) $this->iIdCat : -1;
|
|
}
|
|
public function getIdLang() {
|
|
return !is_null($this->iIdlang) ? (int) $this->iIdlang : -1;
|
|
}
|
|
public function getIdTemplateConfig() {
|
|
return !is_null($this->iIdTplcfg) ? (int) $this->iIdTplcfg : -1;
|
|
}
|
|
public function getName() {
|
|
return !is_null($this->sName) ? (string) $this->sName : '';
|
|
}
|
|
public function getAlias() {
|
|
return !is_null($this->sAlias) ? (string) $this->sAlias : '';
|
|
}
|
|
public function getVisible() {
|
|
return !is_null($this->iVisible) ? (int) $this->iVisible : -1;
|
|
}
|
|
public function getPublic() {
|
|
return !is_null($this->iPublic) ? (int) $this->iPublic : -1;
|
|
}
|
|
public function getStatus() {
|
|
return !is_null($this->iStatus) ? (int) $this->iStatus : -1;
|
|
}
|
|
public function getAuthor() {
|
|
return !is_null($this->sAuthor) ? (string) $this->sAuthor : '';
|
|
}
|
|
public function getDateCreated() {
|
|
return !is_null($this->sDateCreated) ? (string) $this->sDateCreated : '';
|
|
}
|
|
public function getDateLastModified() {
|
|
return !is_null($this->sDateModified) ? (string) $this->sDateModified : '';
|
|
}
|
|
public function getStartIdLang() {
|
|
return !is_null($this->iStartIdartlang) ? (int) $this->iStartIdartlang : -1;
|
|
}
|
|
public function getUrlName() {
|
|
return !is_null($this->sUrlname) ? (string) $this->sUrlname : '';
|
|
}
|
|
}
|
|
?>
|