StorageAclBase.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. class StorageAclBase {
  3. static function buildInstance($idZasob, $conf = []) {
  4. static $_cache;
  5. if (!$_cache) $_cache = array();
  6. if (array_key_exists($idZasob, $_cache)) {
  7. return $_cache[$idZasob];
  8. }
  9. if (empty($conf)) throw new Exception("Brak danych konfiguracyjnych do obiektu StorageAcl nr {$idZasob}");
  10. DBG::log($conf, 'array', 'AntAclBase::buildInstance $conf');
  11. if (empty($conf['name'])) throw new Exception("Błędne dane konfiguracyjne do obiektu StorageAcl nr {$idZasob}: brak nazwy");
  12. $className = "Schema_{$conf['name']}StorageAcl";
  13. Lib::loadClass($className);
  14. $acl = new $className($idZasob);
  15. $acl->_zasobID = (int)$idZasob;
  16. $acl->_name = $conf['name'];
  17. $acl->_rootTableName = $conf['_rootTableName'];
  18. $acl->_db = $conf['idDatabase'];
  19. $acl->_namespace = $conf['namespace'];
  20. $acl->_rootNamespace = str_replace('__x3A__', '/', $conf['nsPrefix']);
  21. $acl->_fields = $conf['field']; // TODO: lazyLoading - use getFields() in all functions - TODO: use ACL::getObjectFields
  22. $acl->_primaryKey = (!empty($conf['primaryKey'])) ? $conf['primaryKey'] : 'ID'; // $conf['primaryKey'];
  23. $acl->_hasWriteGroupField = $conf['hasWriteGroupField'];
  24. $acl->_hasReadGroupField = $conf['hasReadGroupField'];
  25. $acl->_hasOwnerField = $conf['hasOwnerField'];
  26. $_cache[$idZasob] = $acl;
  27. return $_cache[$idZasob];
  28. }
  29. }