206 Zeilen
6.1 KiB
PHP
206 Zeilen
6.1 KiB
PHP
<?php
|
|
/**
|
|
* File:
|
|
* class.clientslang.php
|
|
*
|
|
* Description:
|
|
* cApi class
|
|
*
|
|
* @package Core
|
|
* @subpackage cApi
|
|
* @version $Rev$
|
|
* @since 2.0
|
|
* @author Ortwin Pinke <o.pinke@conlite.org>
|
|
* @copyright (c) 2015, conlite.org
|
|
* @license http://www.gnu.de/documents/gpl.en.html GPL v3 (english version)
|
|
* @license http://www.gnu.de/documents/gpl.de.html GPL v3 (deutsche Version)
|
|
* @link http://www.conlite.org ConLite.org
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
if (!defined('CON_FRAMEWORK')) {
|
|
die('Illegal call');
|
|
}
|
|
|
|
|
|
class cApiClientLanguageCollection extends ItemCollection
|
|
{
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
global $cfg;
|
|
parent::__construct($cfg["tab"]["clients_lang"], "idclientslang");
|
|
$this->_setItemClass("cApiClientLanguage");
|
|
}
|
|
}
|
|
|
|
|
|
class cApiClientLanguage extends Item
|
|
{
|
|
/**
|
|
* Id of client
|
|
* @var int
|
|
*/
|
|
public $idclient;
|
|
|
|
/**
|
|
* Property collection instance
|
|
* @var PropertyCollection
|
|
*/
|
|
protected $_oPropertyCollection;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param int $iIdClientsLang If specified, load item
|
|
* @param int $iIdClient If idclient and idlang specified, load item; ignored, if idclientslang specified
|
|
* @param int $iIdLang If idclient and idlang specified, load item; ignored, if idclientslang specified
|
|
*/
|
|
public function __construct($iIdClientsLang = false, $iIdClient = false, $iIdLang = false)
|
|
{
|
|
global $cfg;
|
|
parent::__construct($cfg["tab"]["clients_lang"], "idclientslang");
|
|
|
|
if ($iIdClientsLang !== false) {
|
|
$this->loadByPrimaryKey($iIdClientsLang);
|
|
} elseif ($iIdClient !== false && $iIdLang !== false) {
|
|
/*
|
|
One way, but the other should be faster
|
|
$oCollection = new cApiClientLanguageCollection;
|
|
$oCollection->setWhere("idclient", $iIdClient);
|
|
$oCollection->setWhere("idlang", $iIdLang);
|
|
$oCollection->query();
|
|
if ($oItem = $oCollection->next()) {
|
|
$this->loadByPrimaryKey($oItem->get($oItem->primaryKey));
|
|
}
|
|
*/
|
|
|
|
// Query the database
|
|
$sSQL = "SELECT %s FROM %s WHERE idclient = '%d' AND idlang = '%d'";
|
|
$this->db->query($sSQL, $this->primaryKey, $this->table, $iIdClient, $iIdLang);
|
|
if ($this->db->next_record()) {
|
|
$this->loadByPrimaryKey($this->db->f($this->primaryKey));
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Load dataset by primary key
|
|
*
|
|
* @param int $iIdClientsLang
|
|
* @return bool
|
|
*/
|
|
public function loadByPrimaryKey($iIdClientsLang)
|
|
{
|
|
if (parent::loadByPrimaryKey($iIdClientsLang) == true) {
|
|
$this->idclient = $this->get("idclient");
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Set client property
|
|
*
|
|
* @todo Use parents method @see Item::setProperty()
|
|
*
|
|
* @param mixed $mType Type of the data to store (arbitary data)
|
|
* @param mixed $mName Entry name
|
|
* @param mixed $mValue Value
|
|
*/
|
|
public function setProperty($mType, $mName, $mValue)
|
|
{
|
|
$oPropertyColl = $this->_getPropertiesCollectionInstance();
|
|
$oPropertyColl->setValue($this->primaryKey, $this->get($this->primaryKey), $mType, $mName, $mValue);
|
|
}
|
|
|
|
/**
|
|
* Get client property
|
|
*
|
|
* @todo Use parents method @see Item::getProperty()
|
|
*
|
|
* @param mixed $mType Type of the data to get
|
|
* @param mixed $mName Entry name
|
|
* @return mixed Value
|
|
*/
|
|
public function getProperty($mType, $mName)
|
|
{
|
|
$oPropertyColl = $this->_getPropertiesCollectionInstance();
|
|
return $oPropertyColl->getValue($this->primaryKey, $this->get($this->primaryKey), $mType, $mName);
|
|
}
|
|
|
|
/**
|
|
* Delete client property
|
|
*
|
|
* @todo Use parents method @see Item::deleteProperty(), but be carefull, different parameter!
|
|
*
|
|
* @param int $idprop Id of property
|
|
* @return void
|
|
*/
|
|
public function deletePropertyById($idprop)
|
|
{
|
|
$oPropertyColl = $this->_getPropertiesCollectionInstance();
|
|
$oPropertyColl->delete($idprop);
|
|
}
|
|
|
|
/**
|
|
* Get client properties by type
|
|
*
|
|
* @param mixed $mType Type of the data to get
|
|
* @return array Assoziative array
|
|
*/
|
|
public function getPropertiesByType($mType)
|
|
{
|
|
$oPropertyColl = $this->_getPropertiesCollectionInstance();
|
|
return $oPropertyColl->getValuesByType($this->primaryKey, $this->idclient, $mType);
|
|
}
|
|
|
|
/**
|
|
* Get all client properties
|
|
*
|
|
* @param mixed $mType Type of the data to get
|
|
* @return array|false Assoziative array
|
|
* @todo return value should be the same as getPropertiesByType(), e. g. an empty array instead false
|
|
*/
|
|
public function getProperties()
|
|
{
|
|
$itemtype = Contenido_Security::escapeDB($this->primaryKey, $this->db);
|
|
$itemid = Contenido_Security::escapeDB($this->get($this->primaryKey), $this->db);
|
|
$oPropertyColl = $this->_getPropertiesCollectionInstance();
|
|
$oPropertyColl->select("itemtype='".$itemtype."' AND itemid='".$itemid."'", "", "type, value ASC");
|
|
|
|
if ($oPropertyColl->count() > 0) {
|
|
$aArray = array();
|
|
|
|
while ($oItem = $oPropertyColl->next()) {
|
|
$aArray[$oItem->get('idproperty')]['type'] = $oItem->get('type');
|
|
$aArray[$oItem->get('idproperty')]['name'] = $oItem->get('name');
|
|
$aArray[$oItem->get('idproperty')]['value'] = $oItem->get('value');
|
|
}
|
|
|
|
return $aArray;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Lazy instantiation and return of properties object
|
|
*
|
|
* @return PropertyCollection
|
|
*/
|
|
protected function _getPropertiesCollectionInstance()
|
|
{
|
|
// Runtime on-demand allocation of the properties object
|
|
if (!is_object($this->_oPropertyCollection)) {
|
|
$this->_oPropertyCollection = new PropertyCollection();
|
|
$this->_oPropertyCollection->changeClient($this->idclient);
|
|
}
|
|
return $this->_oPropertyCollection;
|
|
}
|
|
}
|
|
|
|
?>
|