RefConfig.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /* TODO: ACL::getChildRefFullList($namespace); returns array with:
  3. // [0] => Array:
  4. // [namespace] => default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy // TODO: childName
  5. // [A_STATUS] => NORMAL
  6. // [ID] => 27
  7. // [SOURCE] => backRef
  8. */
  9. class Type_RefConfig {
  10. var $_data = [];
  11. static function build($refRow = []) {
  12. if (!$refRow) throw new Exception("Missing data in build Type RefConfig");
  13. // if (!$refRow['ID']) throw new Exception("Missing ID in Type RefConfig build"); // TODO: allow missing ID?
  14. $refConfig = new Type_RefConfig();
  15. $refConfig->id = (int)$refRow['ID'];
  16. if (!empty($refRow['ROOT_OBJECT_NS'])) $refConfig->objectNamespace = $refRow['ROOT_OBJECT_NS']; // namespace
  17. if (!empty($refRow['CHILD_NAME'])) $refConfig->childName = $refRow['CHILD_NAME']; // typeName
  18. if (!empty($refRow['CHILD_NS'])) $refConfig->childNamespace = $refRow['CHILD_NS']; // namespace
  19. $refConfig->source = $refRow['SOURCE'];
  20. $refConfig->status = $refRow['A_STATUS'];
  21. $refConfig->version = $refRow['VERSION'];
  22. $refConfig->tableName = self::generateTableName($refConfig->id, $refConfig->source);
  23. return $refConfig;
  24. }
  25. static function generateTableName($id, $source) { // @return string | null
  26. switch ($source) {
  27. case 'table': return "CRM__#REF_TABLE__{$id}";
  28. case 'view': return "CRM__#REF_TABLE__{$id}_VIEW";
  29. case 'backRef': return "CRM__#REF_TABLE__{$id}_VIEW";
  30. default: throw new Exception("Not Implemented ref source '{$source}'");
  31. }
  32. }
  33. function __isset($name) {
  34. return (array_key_exists($name, $this->_data));
  35. }
  36. function __get($name) {
  37. if (array_key_exists($name, $this->_data)) {
  38. return $this->_data[$name];
  39. }
  40. return null;
  41. }
  42. function __set($name, $value) {
  43. $this->_data[$name] = $value;
  44. }
  45. function toArray() {
  46. return $this->_data;
  47. }
  48. function __toString() {
  49. return str_replace('"', '',
  50. str_replace([ '{', '}', '":', ',"' ], [ '{ ', ' }', ': ', ', ' ], json_encode($this->_data))
  51. );
  52. }
  53. }