AccessOwnerStorageAcl.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. Lib::loadClass('Core_AclBase');
  3. Lib::loadClass('ParseOgcFilter');
  4. class Schema_AccessOwnerStorageAcl extends Core_AclBase {
  5. public function getNamespace() { return 'default_objects/' . $this->getName(); }
  6. public function getSourceName() { return 'objects'; }
  7. public function init($force = false) {}
  8. public function isInitialized() { return true; }
  9. public function getName() { return 'AccessOwner'; }
  10. public function getRootTableName() { return 'ADMIN_USERS'; }// TODO: turn off - use getName for generating ref's
  11. public function getFieldListByIdZasob() { return $this->getRealFieldListByIdZasob(); }
  12. public function getVisibleFieldListByIdZasob() { return $this->getRealFieldListByIdZasob(); }
  13. public function getVirtualFieldListByIdZasob() { return array(); }
  14. public function getRealFieldListByIdZasob($force = false) {
  15. $cols[100000] = 'id';// ADMIN_USERS.ID
  16. $cols[100001] = 'login';// ADMIN_USERS.ADM_ACCOUNT
  17. $cols[100002] = 'name';// ADMIN_USERS.ADM_NAME
  18. return $cols;
  19. }
  20. public function getFields() { return array_values($this->getRealFieldListByIdZasob()); }
  21. public function getFieldType($fieldName) { return null; }
  22. // TODO: replace legacy functions: isAllowed, hasFieldPerm, getFieldIdByName
  23. public function canCreateField($fieldName) { return false; }
  24. public function canReadField($fieldName) { return true; }
  25. public function canReadObjectField($fieldName, $record) {return true; }
  26. public function canWriteField($fieldName) { return false; }
  27. public function canWriteObjectField($fieldName, $record) { return false; }
  28. public function getTotal($params = array()) {
  29. return count($this->getItems($params));
  30. }
  31. public function getItem($primaryKey) {
  32. $items = $this->getItems(['primaryKey'=>$primaryKey]);
  33. return (!empty($items[$primaryKey])) ? $items[$primaryKey] : null;
  34. }
  35. public function getItems($params = array()) {
  36. $DBG = V::get('DBG_DS', 0, $_GET, 'int');
  37. if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$params:";print_r($params);echo "\n";}
  38. $items = DB::getPDO()->fetchAllByKey("
  39. select u.ID as id, u.ADM_ACCOUNT as login, u.ADM_NAME as name
  40. from ADMIN_USERS u
  41. where u.A_STATUS = 'NORMAL'
  42. and u.ADM_TECH_WORKER != 'NO'
  43. ", $key = 'id');
  44. if ($pk = V::get('primaryKey', '', $params, 'int')) {// [primaryKey] => 2948
  45. if (!array_key_exists($pk, $items)) return array();
  46. $items = array($pk => $items[$pk]);
  47. }
  48. if (!empty($params['ogc:Filter'])) {
  49. $parser = new ParseOgcFilter();
  50. $parser->loadOgcFilter($params['ogc:Filter']);
  51. $queryWhereBuilder = $parser->convertToSqlQueryWhereBuilder();
  52. DBG::_('DBG_DS', '>2', "ogc:Filter \$queryWhereBuilder", $queryWhereBuilder, __CLASS__, __FUNCTION__, __LINE__);
  53. if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$items:";print_r($items);echo "\n";}
  54. $items = array_filter($items, array($queryWhereBuilder, 'filterRawArray'));
  55. }
  56. if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$items:";print_r($items);echo "\n";}
  57. return $items;
  58. }
  59. public function addItem($itemTodo) { throw new Exception("Insert not allowed"); }
  60. public function updateItem($itemPatch) { throw new Exception("Update not allowed"); }
  61. public function getGeomFieldType($fieldName) { return null; }
  62. public function getPrimaryKeyField() { return 'id'; }
  63. public function getID() { return 0; }
  64. public function getAttributesFromZasoby() { return array(); }
  65. public function isEnumerationField($fieldName) { return false; }
  66. public function getEnumerations($fieldName) { return null; }
  67. public function getXsdFieldType($fieldName) {
  68. if ('id' == $fieldName) return 'xsd:string';
  69. if ('login' == $fieldName) return 'xsd:string';
  70. if ('name' == $fieldName) return 'xsd:string';
  71. }
  72. public function isGeomField($fldName) { return false; }
  73. }