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
    • NavigationMain
    • 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: /**
127:  * Client item
128:  *
129:  * @package Core
130:  * @subpackage GenericDB_Model
131:  */
132: class cApiClientLanguage extends Item {
133: 
134:     /**
135:      * Id of client
136:      *
137:      * @var int
138:      */
139:     public $idclient;
140: 
141:     /**
142:      * Property collection instance
143:      *
144:      * @var cApiPropertyCollection
145:      */
146:     protected $_oPropertyCollection;
147: 
148:     /**
149:      * Constructor
150:      *
151:      * @param int $iIdClientsLang If specified, load item
152:      * @param int $iIdClient If idclient and idlang specified, load item;
153:      *        ignored, if idclientslang specified
154:      * @param int $iIdLang If idclient and idlang specified, load item; ignored,
155:      *        if idclientslang specified
156:      */
157:     public function __construct($iIdClientsLang = false, $iIdClient = false, $iIdLang = false) {
158:         global $cfg;
159:         parent::__construct($cfg['tab']['clients_lang'], 'idclientslang');
160: 
161:         if ($iIdClientsLang !== false) {
162:             $this->loadByPrimaryKey($iIdClientsLang);
163:         } elseif ($iIdClient !== false && $iIdLang !== false) {
164:             /*
165:              * One way, but the other should be faster $oCollection = new
166:              * cApiClientLanguageCollection; $oCollection->setWhere('idclient',
167:              * $iIdClient); $oCollection->setWhere('idlang', $iIdLang);
168:              * $oCollection->query(); if ($oItem = $oCollection->next()) {
169:              * $this->loadByPrimaryKey($oItem->get($oItem->primaryKey)); }
170:              */
171: 
172:             // Query the database
173:             $sSQL = "SELECT %s FROM %s WHERE idclient = '%d' AND idlang = '%d'";
174:             $this->db->query($sSQL, $this->primaryKey, $this->table, $iIdClient, $iIdLang);
175:             if ($this->db->nextRecord()) {
176:                 $this->loadByPrimaryKey($this->db->f($this->primaryKey));
177:             }
178:         }
179:     }
180: 
181:     /**
182:      * Load dataset by primary key
183:      *
184:      * @param int $iIdClientsLang
185:      * @return bool
186:      */
187:     public function loadByPrimaryKey($iIdClientsLang) {
188:         if (parent::loadByPrimaryKey($iIdClientsLang) == true) {
189:             $this->idclient = $this->get('idclient');
190:             return true;
191:         }
192:         return false;
193:     }
194: 
195:     /**
196:      * Set client property
197:      *
198:      * @todo Use parents method @see Item::setProperty()
199:      *
200:      * @param mixed $mType Type of the data to store (arbitary data)
201:      * @param mixed $mName Entry name
202:      * @param mixed $mValue Value
203:      * @param int $client  Client id
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 strict warnings)
218:      * @return mixed Value
219:      */
220:     public function getProperty($mType, $mName, $client = 0) {
221:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
222:         return $oPropertyColl->getValue($this->primaryKey, $this->get($this->primaryKey), $mType, $mName);
223:     }
224: 
225:     /**
226:      * Delete client property
227:      *
228:      * @todo Use parents method @see Item::deleteProperty(), but be carefull,
229:      *       different parameter!
230:      *
231:      * @param int $idprop Id of property
232:      * @param int $p2 Not used, is here to prevent PHP Strict warnings
233:      * @param int $client  Client id (not used, it's declared because of PHP strict warnings)
234:      * @return void
235:      */
236:     public function deleteProperty($idprop, $p2 = null, $client = 0) {
237:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
238:         $oPropertyColl->delete($idprop);
239:     }
240: 
241:     /**
242:      * Get client properties by type
243:      *
244:      * @param mixed $mType Type of the data to get
245:      * @return array Assoziative array
246:      */
247:     public function getPropertiesByType($mType) {
248:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
249:         return $oPropertyColl->getValuesByType($this->primaryKey, $this->idclient, $mType);
250:     }
251: 
252:     /**
253:      * Get all client properties
254:      *
255:      * @param mixed $mType Type of the data to get
256:      * @return array false array
257:      * @todo return value should be the same as getPropertiesByType(), e. g. an
258:      *       empty array instead false
259:      */
260:     public function getProperties() {
261:         $itemtype = cSecurity::escapeDB($this->primaryKey, $this->db);
262:         $itemid = cSecurity::escapeDB($this->get($this->primaryKey), $this->db);
263:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
264:         $oPropertyColl->select("itemtype='" . $itemtype . "' AND itemid='" . $itemid . "'", '', 'type, value ASC');
265: 
266:         if ($oPropertyColl->count() > 0) {
267:             $aArray = array();
268: 
269:             while (($oItem = $oPropertyColl->next()) !== false) {
270:                 $aArray[$oItem->get('idproperty')]['type'] = $oItem->get('type');
271:                 $aArray[$oItem->get('idproperty')]['name'] = $oItem->get('name');
272:                 $aArray[$oItem->get('idproperty')]['value'] = $oItem->get('value');
273:             }
274: 
275:             return $aArray;
276:         } else {
277:             return false;
278:         }
279:     }
280: 
281:     /**
282:      * Lazy instantiation and return of properties object
283:      *
284:      * @param int $client  Client id (not used, it's declared because of PHP strict warnings)
285:      * @return cApiPropertyCollection
286:      */
287:     protected function _getPropertiesCollectionInstance($client = 0) {
288:         // Runtime on-demand allocation of the properties object
289:         if (!is_object($this->_oPropertyCollection)) {
290:             $this->_oPropertyCollection = new cApiPropertyCollection();
291:             $this->_oPropertyCollection->changeClient($this->idclient);
292:         }
293:         return $this->_oPropertyCollection;
294:     }
295: 
296: }
297: 
CMS CONTENIDO 4.9.0 API documentation generated by ApiGen 2.8.0