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 collection and item class.
  4:  *
  5:  * @package Core
  6:  * @subpackage GenericDB_Model
  7:  * @version SVN Revision $Rev:$
  8:  *
  9:  * @author Bjoern Behrens
 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 collection
 20:  *
 21:  * @package Core
 22:  * @subpackage GenericDB_Model
 23:  */
 24: class cApiClientCollection extends ItemCollection {
 25: 
 26:     /**
 27:      * Constructor
 28:      */
 29:     public function __construct() {
 30:         global $cfg;
 31:         parent::__construct($cfg['tab']['clients'], 'idclient');
 32:         $this->_setItemClass('cApiClient');
 33:     }
 34: 
 35:     /**
 36:      * Creates a new client entry
 37:      *
 38:      * @global object $auth
 39:      * @param string $name
 40:      * @param int $errsite_cat
 41:      * @param int $errsite_art
 42:      * @param string $author
 43:      * @param string $created
 44:      * @param string $lastmodified
 45:      * @return cApiClient
 46:      */
 47:     public function create($name, $errsite_cat = 0, $errsite_art = 0, $author = '', $created = '', $lastmodified = '') {
 48:         global $auth;
 49: 
 50:         if (empty($author)) {
 51:             $author = $auth->auth['uname'];
 52:         }
 53:         if (empty($created)) {
 54:             $created = date('Y-m-d H:i:s');
 55:         }
 56:         if (empty($lastmodified)) {
 57:             $lastmodified = date('Y-m-d H:i:s');
 58:         }
 59: 
 60:         $item = parent::createNewItem();
 61:         $item->set('name', $name);
 62:         $item->set('errsite_cat', $errsite_cat);
 63:         $item->set('errsite_art', $errsite_art);
 64:         $item->set('author', $author);
 65:         $item->set('created', $created);
 66:         $item->set('lastmodified', $lastmodified);
 67:         $item->store();
 68: 
 69:         return $item;
 70:     }
 71: 
 72:     /**
 73:      * Returns all clients available in the system
 74:      *
 75:      * @return array Array with id and name entries
 76:      */
 77:     public function getAvailableClients() {
 78:         $clients = array();
 79: 
 80:         $this->select();
 81: 
 82:         while (($item = $this->next()) !== false) {
 83:             $clients[$item->get('idclient')] = array(
 84:                 'name' => $item->get('name')
 85:             );
 86:         }
 87: 
 88:         return $clients;
 89:     }
 90: 
 91:     /**
 92:      * Returns all clients available in the system
 93:      *
 94:      * @return array Array with id and name entries
 95:      */
 96:     public function getAccessibleClients() {
 97:         global $perm;
 98:         $clients = array();
 99:         $this->select();
100:         while (($item = $this->next()) !== false) {
101:             if ($perm->have_perm_client("client[" . $item->get('idclient') . "]") || $perm->have_perm_client("admin[" . $item->get('idclient') . "]") || $perm->have_perm_client()) {
102:                 $clients[$item->get('idclient')] = array(
103:                     'name' => $item->get('name')
104:                 );
105:             }
106:         }
107:         return $clients;
108:     }
109: 
110:     /**
111:      * Returns first client available in the system
112:      *
113:      * @return cApiClient NULL
114:      */
115:     public function getFirstAccessibleClient() {
116:         global $perm;
117:         $this->select();
118:         while (($item = $this->next()) !== false) {
119:             if ($perm->have_perm_client("client[" . $item->get('idclient') . "]") || $perm->have_perm_client("admin[" . $item->get('idclient') . "]")) {
120:                 return $item;
121:             }
122:         }
123:         return NULL;
124:     }
125: 
126:     /**
127:      * Returns the clientname of the given clientid
128:      *
129:      * @param int $idClient
130:      * @return string Clientname if found, or empty string if not.
131:      */
132:     public function getClientname($idClient) {
133:         $this->select("idclient='" . (int) $idClient . "'");
134:         if (($item = $this->next()) !== false) {
135:             return $item->get('name');
136:         } else {
137:             return i18n("No client");
138:         }
139:     }
140: 
141:     /**
142:      * Returns if the given client has a language
143:      *
144:      * @param int $idClient
145:      * @return bool true if the client has a language
146:      */
147:     public function hasLanguageAssigned($idClient) {
148:         $client = new cApiClient($idClient);
149: 
150:         return $client->hasLanguages();
151:     }
152: }
153: 
154: /**
155:  * Class cApiClient, client item
156:  *
157:  * @package Core
158:  * @subpackage GenericDB_Model
159:  * @author Marco Jahn
160:  */
161: class cApiClient extends Item {
162: 
163:     /**
164:      *
165:      * @var int
166:      */
167:     public $idclient;
168: 
169:     /**
170:      * Property collection instance
171:      *
172:      * @var cApiPropertyCollection
173:      */
174:     protected $_oPropertyCollection;
175: 
176:     /**
177:      * Constructor Function
178:      *
179:      * @param mixed $id Specifies the ID of item to load
180:      */
181:     public function __construct($id = false) {
182:         global $cfg;
183:         parent::__construct($cfg['tab']['clients'], 'idclient');
184:         if ($id !== false) {
185:             $this->loadByPrimaryKey($id);
186:         }
187:     }
188: 
189:     /**
190:      * Static accessor to the singleton instance.
191:      *
192:      * @todo There is no need since caching is available at GenericDB level
193:      * @param int $client
194:      * @return cApiClient Reference to the singleton instance.
195:      */
196:     public static function getInstance($client = false) {
197:         static $currentInstance = array();
198: 
199:         if (!$client) {
200:             // Use global $client
201:             $client = cRegistry::getClientId();
202:         }
203: 
204:         if (!isset($currentInstance[$client])) {
205:             $currentInstance[$client] = new cApiClient($client);
206:         }
207: 
208:         return $currentInstance[$client];
209:     }
210: 
211:     /**
212:      * Load dataset by primary key
213:      *
214:      * @param int $idKey
215:      * @return bool
216:      */
217:     public function loadByPrimaryKey($idKey) {
218:         if (parent::loadByPrimaryKey($idKey) == true) {
219:             $this->idclient = $idKey;
220:             return true;
221:         }
222:         return false;
223:     }
224: 
225:     /**
226:      * Set client property
227:      *
228:      * @param mixed $type Type of the data to store (arbitary data)
229:      * @param mixed $name Entry name
230:      * @param mixed $value Value
231:      * @param mixed $idproperty
232:      * @todo should return return value as overwritten method
233:      */
234:     public function setProperty($type, $name, $value, $idproperty = 0) {
235:         $oPropertyColl = $this->_getPropertiesCollectionInstance();
236:         $oPropertyColl->setValue('clientsetting', $this->idclient, $type, $name, $value, $idproperty);
237:     }
238: 
239:     /**
240:      * Get client property
241:      *
242:      * @param mixed $type Type of the data to get
243:      * @param mixed $name Entry name
244:      * @param int $client Client id (not used, it's declared because of PHP
245:      *            strict warnings)
246:      * @return mixed Value
247:      */
248:     public function getProperty($type, $name, $client = 0) {
249:         $propertyColl = $this->_getPropertiesCollectionInstance();
250:         return $propertyColl->getValue('clientsetting', $this->idclient, $type, $name);
251:     }
252: 
253:     /**
254:      * Delete client property
255:      *
256:      * @param int $idProp Id of property
257:      * @param string $p2 Not used, is here to prevent PHP Strict warnings
258:      * @param int $client Client id (not used, it's declared because of PHP
259:      *            strict warnings)
260:      * @return void
261:      */
262:     public function deleteProperty($idProp, $p2 = "", $client = 0) {
263:         $propertyColl = $this->_getPropertiesCollectionInstance();
264:         $propertyColl->delete($idProp);
265:     }
266: 
267:     /**
268:      * Get client properties by type
269:      *
270:      * @param mixed $type Type of the data to get
271:      * @return array Assoziative array
272:      */
273:     public function getPropertiesByType($type) {
274:         $propertyColl = $this->_getPropertiesCollectionInstance();
275:         return $propertyColl->getValuesByType('clientsetting', $this->idclient, $type);
276:     }
277: 
278:     /**
279:      * Get all client properties
280:      *
281:      * @return array false array
282:      * @todo return value should be the same as getPropertiesByType(), e.g. an
283:      *       empty array instead of false
284:      */
285:     public function getProperties() {
286:         $propertyColl = $this->_getPropertiesCollectionInstance();
287:         $propertyColl->select("itemid='" . $this->idclient . "' AND itemtype='clientsetting'", "", "type, name, value ASC");
288: 
289:         if ($propertyColl->count() > 0) {
290:             $array = array();
291: 
292:             while (($item = $propertyColl->next()) !== false) {
293:                 $array[$item->get('idproperty')]['type'] = $item->get('type');
294:                 $array[$item->get('idproperty')]['name'] = $item->get('name');
295:                 $array[$item->get('idproperty')]['value'] = $item->get('value');
296:             }
297: 
298:             return $array;
299:         } else {
300:             return false;
301:         }
302:     }
303: 
304:     /**
305:      * Check if client has at least one language
306:      *
307:      * @return bool
308:      */
309:     public function hasLanguages() {
310:         $clientLanguageCollection = new cApiClientLanguageCollection();
311:         $clientLanguageCollection->setWhere("idclient", $this->get("idclient"));
312:         $clientLanguageCollection->query();
313: 
314:         if ($clientLanguageCollection->next()) {
315:             return true;
316:         } else {
317:             return false;
318:         }
319:     }
320: 
321:     /**
322:      * Userdefined setter for client fields.
323:      *
324:      * @param string $name
325:      * @param mixed $value
326:      * @param bool $bSafe Flag to run defined inFilter on passed value
327:      * @todo should return return value of overloaded method
328:      */
329:     public function setField($name, $value, $bSafe = true) {
330:         switch ($name) {
331:             case 'errsite_cat':
332:             case 'errsite_art':
333:                 $value = (int) $value;
334:                 break;
335:         }
336: 
337:         parent::setField($name, $value, $bSafe);
338:     }
339: 
340:     /**
341:      * Lazy instantiation and return of properties object
342:      *
343:      * @param int $client Client id (not used, it's declared because of PHP
344:      *            strict warnings)
345:      *
346:      * @return cApiPropertyCollection
347:      */
348:     protected function _getPropertiesCollectionInstance($client = 0) {
349:         // Runtime on-demand allocation of the properties object
350:         if (!is_object($this->_oPropertyCollection)) {
351:             $this->_oPropertyCollection = new cApiPropertyCollection();
352:             $this->_oPropertyCollection->changeClient($this->idclient);
353:         }
354:         return $this->_oPropertyCollection;
355:     }
356: }
357: 
CMS CONTENIDO 4.9.1 API documentation generated by ApiGen 2.8.0