SchemaReaderResourceTable.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. Lib::loadClass('SchemaReaderResource');
  3. Lib::loadClass('SchemaReaderResourceTableField');
  4. class SchemaReaderResourceTable extends SchemaReaderResource {
  5. protected $_uri;
  6. private $_name;
  7. private $_label;
  8. private $_description;
  9. private $_fields = array();
  10. public function __construct($uri) {
  11. parent::__construct($uri);
  12. }
  13. public function parseIniConfig($configData) {
  14. $this->_label = V::get('label', '', $configData);
  15. $this->_description = V::get('description', '', $configData);
  16. return true;
  17. }
  18. public function parseIniSubConfig($path, $configData) {
  19. $uri = $this->_uri . '/' . str_replace(':', '/', $path);
  20. $reader = new SchemaReaderResourceTableField($uri);
  21. if (!$reader->parseIniConfig($configData)) {
  22. if('1' == V::get('DBG_SCH', '', $_GET)){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r("!parseIniConfig()");echo'</pre>';}
  23. continue;
  24. }
  25. $this->addField($resource);
  26. return true;
  27. }
  28. public function addField($resource) {
  29. $uri = $resource->getUri();
  30. if (array_key_exists($uri, $this->_fields)) {
  31. $this->_fields[$uri]->addPerms($resource->getPerms());
  32. } else {
  33. $this->_fields[$uri] = $resource;
  34. }
  35. }
  36. public function mergeFields($tbl) {
  37. foreach ($tbl->getFields() as $field) {
  38. $this->addField($field);
  39. }
  40. }
  41. public function getUri() { return $this->_uri; }
  42. public function getLabel() { return $this->_label; }
  43. public function getDescription() { return $this->_description; }
  44. public function getFields() { return $this->_fields; }
  45. }