Overview

Packages

  • Core
    • Authentication
    • Backend
    • Cache
    • CEC
    • Chain
    • ContentType
    • Database
    • Datatype
    • Debug
    • Exception
    • Frontend
      • Search
      • URI
      • Util
    • GenericDB
      • Model
    • GUI
      • HTML
    • I18N
    • LayoutHandler
    • Log
    • Security
    • Session
    • Util
    • Validation
    • Versioning
    • XML
  • Module
    • ContentSitemapHtml
    • ContentSitemapXml
    • ContentUserForum
    • NavigationTop
  • mpAutoloaderClassMap
  • None
  • Plugin
    • ContentAllocation
    • CronjobOverview
    • FormAssistant
    • FrontendLogic
    • FrontendUsers
    • Linkchecker
    • ModRewrite
    • Newsletter
    • Repository
      • FrontendNavigation
      • KeywordDensity
    • SearchSolr
    • SmartyWrapper
    • UrlShortener
    • UserForum
    • Workflow
  • PluginManager
  • Setup
    • Form
    • GUI
    • Helper
      • Environment
      • Filesystem
      • MySQL
      • PHP
    • UpgradeJob

Classes

  • cApiAction
  • cApiActionCollection
  • cApiActionlog
  • cApiActionlogCollection
  • cApiArea
  • cApiAreaCollection
  • cApiArticle
  • cApiArticleCollection
  • cApiArticleLanguage
  • cApiArticleLanguageCollection
  • cApiArticleSpecification
  • cApiArticleSpecificationCollection
  • cApiCategory
  • cApiCategoryArticle
  • cApiCategoryArticleCollection
  • cApiCategoryCollection
  • cApiCategoryLanguage
  • cApiCategoryLanguageCollection
  • cApiCategoryTree
  • cApiCategoryTreeCollection
  • cApiClient
  • cApiClientCollection
  • cApiClientLanguage
  • cApiClientLanguageCollection
  • cApiCommunication
  • cApiCommunicationCollection
  • cApiContainer
  • cApiContainerCollection
  • cApiContainerConfiguration
  • cApiContainerConfigurationCollection
  • cApiContent
  • cApiContentCollection
  • cApiDbfs
  • cApiDbfsCollection
  • cApiFile
  • cApiFileCollection
  • cApiFileInformation
  • cApiFileInformationCollection
  • cApiFrameFile
  • cApiFrameFileCollection
  • cApiFrontendGroup
  • cApiFrontendGroupCollection
  • cApiFrontendGroupMember
  • cApiFrontendGroupMemberCollection
  • cApiFrontendPermission
  • cApiFrontendPermissionCollection
  • cApiFrontendUser
  • cApiFrontendUserCollection
  • cApiGroup
  • cApiGroupCollection
  • cApiGroupMember
  • cApiGroupMemberCollection
  • cApiGroupProperty
  • cApiGroupPropertyCollection
  • cApiInUse
  • cApiInUseCollection
  • cApiIso3166
  • cApiIso3166Collection
  • cApiIso6392
  • cApiIso6392Collection
  • cApiKeyword
  • cApiKeywordCollection
  • cApiLanguage
  • cApiLanguageCollection
  • cApiLayout
  • cApiLayoutCollection
  • cApiMailLog
  • cApiMailLogCollection
  • cApiMailLogSuccess
  • cApiMailLogSuccessCollection
  • cApiMetaTag
  • cApiMetaTagCollection
  • cApiMetaType
  • cApiMetaTypeCollection
  • cApiModule
  • cApiModuleCollection
  • cApiNavMain
  • cApiNavMainCollection
  • cApiNavSub
  • cApiNavSubCollection
  • cApiOnlineUser
  • cApiOnlineUserCollection
  • cApiPathresolveCache
  • cApiPathresolveCacheCollection
  • cApiProperty
  • cApiPropertyCollection
  • cApiRight
  • cApiRightCollection
  • cApiStat
  • cApiStatCollection
  • cApiSystemProperty
  • cApiSystemPropertyCollection
  • cApiTemplate
  • cApiTemplateCollection
  • cApiTemplateConfiguration
  • cApiTemplateConfigurationCollection
  • cApiType
  • cApiTypeCollection
  • cApiUpload
  • cApiUploadCollection
  • cApiUploadMeta
  • cApiUploadMetaCollection
  • cApiUser
  • cApiUserCollection
  • cApiUserProperty
  • cApiUserPropertyCollection
  • NoteCollection
  • NoteItem
  • TODOCollection
  • TODOItem
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  1: <?php
  2: /**
  3:  * This file contains the client language collection and item class.
  4:  *
  5:  * @package Core
  6:  * @subpackage GenericDB_Model
  7:  * @version SVN Revision $Rev:$
  8:  *
  9:  * @author Timo Hummel
 10:  * @copyright four for business AG <www.4fb.de>
 11:  * @license http://www.contenido.org/license/LIZENZ.txt
 12:  * @link http://www.4fb.de
 13:  * @link http://www.contenido.org
 14:  */
 15: 
 16: defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
 17: 
 18: /**
 19:  * Client language collection
 20:  *
 21:  * @package Core
 22:  * @subpackage GenericDB_Model
 23:  */
 24: class cApiClientLanguageCollection extends ItemCollection {
 25: 
 26:     /**
 27:      * Constructor
 28:      */
 29:     public function __construct() {
 30:         global $cfg;
 31:         parent::__construct($cfg['tab']['clients_lang'], 'idclientslang');
 32:         $this->_setItemClass('cApiClientLanguage');
 33: 
 34:         // set the join partners so that joins can be used via link() method
 35:         $this->_setJoinPartner('cApiClientCollection');
 36:         $this->_setJoinPartner('cApiLanguageCollection');
 37:     }
 38: 
 39:     /**
 40:      * Creates a client language entry.
 41:      *
 42:      * @param int $iClient
 43:      * @param int $iLang
 44:      * @return cApiClientLanguage
 45:      */
 46:     public function create($iClient, $iLang) {
 47:         $oItem = parent::createNewItem();
 48:         $oItem->set('idclient', (int) $iClient, false);
 49:         $oItem->set('idlang', (int) $iLang, false);
 50:         $oItem->store();
 51:         return $oItem;
 52:     }
 53: 
 54:     /**
 55:      * Checks if a language is associated with a given list of clients.
 56:      *
 57:      * @param int $iLang Language id which should be checked
 58:      * @param array $aClients List of clients to check
 59:      * @return bool
 60:      */
 61:     public function hasLanguageInClients($iLang, array $aClientIds) {
 62:         $iLang = (int) $iLang;
 63:         $aClientIds = array_map('intval', $aClientIds);
 64:         $sWhere = 'idlang=' . $iLang . ' AND idclient IN (' . implode(',', $aClientIds) . ')';
 65:         return $this->flexSelect('', '', $sWhere);
 66:     }
 67: 
 68:     /**
 69:      * Returns list of languages (language ids) by passed client.
 70:      *
 71:      * @param int $client
 72:      * @return array
 73:      */
 74:     public function getLanguagesByClient($client) {
 75:         $list = array();
 76:         $sql = "SELECT idlang FROM `%s` WHERE idclient=%d";
 77:         $this->db->query($sql, $this->table, $client);
 78:         while ($this->db->nextRecord()) {
 79:             $list[] = $this->db->f("idlang");
 80:         }
 81:         return $list;
 82:     }
 83: 
 84:     /**
 85:      * Returns all languages (language ids and names) of an client
 86:      *
 87:      * @param int $client
 88:      * @return array List of languages where the key is the language id and
 89:      *         value the language name
 90:      */
 91:     public function getLanguageNamesByClient($client) {
 92:         global $cfg;
 93: 
 94:         $list = array();
 95:         $sql = "SELECT l.idlang AS idlang, l.name AS name
 96:                 FROM `%s` AS cl, `%s` AS l
 97:                 WHERE idclient=%d AND cl.idlang = l.idlang
 98:                 ORDER BY idlang ASC";
 99: 
100:         $this->db->query($sql, $this->table, $cfg['tab']['lang'], $client);
101:         while ($this->db->nextRecord()) {
102:             $list[$this->db->f('idlang')] = $this->db->f('name');
103:         }
104: 
105:         return $list;
106:     }
107: 
108:     /**
109:      * Returns the id of first language for a specific client.
110:      *
111:      * @param int $client
112:      * @return int NULL
113:      */
114:     public function getFirstLanguageIdByClient($client) {
115:         global $cfg;
116: 
117:         $sql = "SELECT l.idlang FROM `%s` AS cl, `%s` AS l " . "WHERE cl.idclient = %d AND cl.idlang = l.idlang LIMIT 0,1";
118: 
119:         $this->db->query($sql, $this->table, $cfg['tab']['lang'], $client);
120: 
121:         return ($this->db->nextRecord()) ? (int) $this->db->f('idlang') : NULL;
122:     }
123: }
124: 
125: /**
126:  * Client item
127:  *
128:  * @package Core
129:  * @subpackage GenericDB_Model
130:  */
131: class cApiClientLanguage extends Item {
132: 
133:     /**
134:      * Id of client
135:      *
136:      * @var int
137:      */
138:     public $idclient;
139: 
140:     /**
141:      * Property collection instance
142:      *
143:      * @var cApiPropertyCollection
144:      */
145:     protected $_oPropertyCollection;
146: 
147:     /**
148:      * Constructor
149:      *
150:      * @param int $iIdClientsLang If specified, load item
151:      * @param int $iIdClient If idclient and idlang specified, load item;
152:      *        ignored, if idclientslang specified
153:      * @param int $iIdLang If idclient and idlang specified, load item; ignored,
154:      *        if idclientslang specified
155:      */
156:     public function __construct($iIdClientsLang = false, $iIdClient = false, $iIdLang = false) {
157:         global $cfg;
158:         parent::__construct($cfg['tab']['clients_lang'], 'idclientslang');
159: 
160:         if ($iIdClientsLang !== false) {
161:             $this->loadByPrimaryKey($iIdClientsLang);
162:         } elseif ($iIdClient !== false && $iIdLang !== false) {
163:             /*
164:              * One way, but the other should be faster $oCollection = new
165:              * cApiClientLanguageCollection; $oCollection->setWhere('idclient',
166:              * $iIdClient); $oCollection->setWhere('idlang', $iIdLang);
167:              * $oCollection->query(); if ($oItem = $oCollection->next()) {
168:              * $this->loadByPrimaryKey($oItem->get($oItem->primaryKey)); }
169:              */
170: 
171:             // Query the database
172:             $sSQL = "SELECT %s FROM %s WHERE idclient = '%d' AND idlang = '%d'";
173:             $this->db->query($sSQL, $this->primaryKey, $this->table, $iIdClient, $iIdLang);
174:             if ($this->db->nextRecord()) {
175:                 $this->loadByPrimaryKey($this->db->f($this->primaryKey));
176:             }
177:         }
178:     }
179: 
180:     /**
181:      * Load dataset by primary key
182:      *
183:      * @param int $iIdClientsLang
184:      * @return bool
185:      */
186:     public function loadByPrimaryKey($iIdClientsLang) {
187:         if (parent::loadByPrimaryKey($iIdClientsLang) == true) {
188:             $this->idclient = $this->get('idclient');
189:             return true;
190:         }
191:         return false;
192:     }
193: 
194:     /**
195:      * Set client property
196:      *
197:      * @param mixed $mType Type of the data to store (arbitary data)
198:      * @param mixed $mName Entry name
199:      * @param mixed $mValue Value
200:      * @param int $client Client id
201:      * @todo Use parents method
202:      * @see Item::setProperty()
203:      * @todo should return return value as overwritten method
204:      */
205:     public function setProperty($mType, $mName, $mValue, $client = 0) {
206:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
207:         $oPropertyColl->setValue($this->primaryKey, $this->get($this->primaryKey), $mType, $mName, $mValue, $client);
208:     }
209: 
210:     /**
211:      * Get client property
212:      *
213:      * @todo Use parents method @see Item::getProperty()
214:      *
215:      * @param mixed $mType Type of the data to get
216:      * @param mixed $mName Entry name
217:      * @param int $client Client id (not used, it's declared because of PHP
218:      *        strict warnings)
219:      * @return mixed Value
220:      */
221:     public function getProperty($mType, $mName, $client = 0) {
222:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
223:         return $oPropertyColl->getValue($this->primaryKey, $this->get($this->primaryKey), $mType, $mName);
224:     }
225: 
226:     /**
227:      * Delete client property
228:      *
229:      * @todo Use parents method @see Item::deleteProperty(), but be carefull,
230:      *       different parameter!
231:      *
232:      * @param int $idprop Id of property
233:      * @param int $p2 Not used, is here to prevent PHP Strict warnings
234:      * @param int $client Client id (not used, it's declared because of PHP
235:      *        strict warnings)
236:      * @return void
237:      */
238:     public function deleteProperty($idprop, $p2 = NULL, $client = 0) {
239:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
240:         $oPropertyColl->delete($idprop);
241:     }
242: 
243:     /**
244:      * Get client properties by type
245:      *
246:      * @param mixed $mType Type of the data to get
247:      * @return array Assoziative array
248:      */
249:     public function getPropertiesByType($mType) {
250:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
251:         return $oPropertyColl->getValuesByType($this->primaryKey, $this->idclient, $mType);
252:     }
253: 
254:     /**
255:      * Get all client properties
256:      *
257:      * @return array false array
258:      * @todo return value should be the same as getPropertiesByType(), e.g. an
259:      *       empty array instead of false
260:      */
261:     public function getProperties() {
262:         $itemtype = $this->db->escape($this->primaryKey);
263:         $itemid = $this->db->escape($this->get($this->primaryKey));
264:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
265:         $oPropertyColl->select("itemtype='" . $itemtype . "' AND itemid='" . $itemid . "'", '', 'type, value ASC');
266: 
267:         if ($oPropertyColl->count() > 0) {
268:             $aArray = array();
269: 
270:             while (($oItem = $oPropertyColl->next()) !== false) {
271:                 $aArray[$oItem->get('idproperty')]['type'] = $oItem->get('type');
272:                 $aArray[$oItem->get('idproperty')]['name'] = $oItem->get('name');
273:                 $aArray[$oItem->get('idproperty')]['value'] = $oItem->get('value');
274:             }
275: 
276:             return $aArray;
277:         } else {
278:             return false;
279:         }
280:     }
281: 
282:     /**
283:      * Lazy instantiation and return of properties object
284:      *
285:      * @param int $client Client id (not used, it's declared because of PHP
286:      *        strict warnings)
287:      * @return cApiPropertyCollection
288:      */
289:     protected function _getPropertiesCollectionInstance($client = 0) {
290:         // Runtime on-demand allocation of the properties object
291:         if (!is_object($this->_oPropertyCollection)) {
292:             $this->_oPropertyCollection = new cApiPropertyCollection();
293:             $this->_oPropertyCollection->changeClient($this->idclient);
294:         }
295:         return $this->_oPropertyCollection;
296:     }
297: }
298: 
CMS CONTENIDO 4.9.1 API documentation generated by ApiGen 2.8.0