Register.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\Core\SL;
  3. use ModulesGarden\Servers\ZimbraEmail\Core\ModuleConstants;
  4. /**
  5. * Description of Register
  6. *
  7. * @author Rafał Ossowski <rafal.os@modulesgarden.com>
  8. */
  9. class Register extends AbstractReaderYml
  10. {
  11. protected function load()
  12. {
  13. list($dataDev, $dataCore) = $this->readFiles();
  14. $data = null;
  15. if (isset($dataDev) && isset($dataCore))
  16. {
  17. $this->buildData($dataDev, $dataCore, $data);
  18. }
  19. elseif (!isset($dataDev) && isset($dataCore) && isset($dataCore['class']))
  20. {
  21. $data = $dataCore['class'];
  22. }
  23. elseif (isset($dataDev) && !isset($dataCore) && isset($dataDev['class']))
  24. {
  25. $data = $dataDev['class'];
  26. }
  27. $this->data = $data;
  28. }
  29. private function buildData($dataDev, $dataCore, &$data)
  30. {
  31. if (isset($dataDev['class']) && isset($dataCore['class']))
  32. {
  33. foreach ($dataCore['class'] as $core)
  34. {
  35. $isFind = false;
  36. foreach ($dataDev['class'] as $dev)
  37. {
  38. if ($dev['namespace'] === $core['namespace'])
  39. {
  40. $isFind = true;
  41. break;
  42. }
  43. }
  44. if (!$isFind)
  45. {
  46. $dataDev['class'][] = $core;
  47. }
  48. }
  49. $data = $dataDev['class'];
  50. }
  51. elseif (!isset($dataDev['class']) && isset($dataCore['class']))
  52. {
  53. $data = $dataCore['class'];
  54. }
  55. elseif (isset($dataDev['class']) && !isset($dataCore['class']))
  56. {
  57. $data = $dataDev['class'];
  58. }
  59. }
  60. private function readFiles()
  61. {
  62. return [
  63. $this->readYml(ModuleConstants::getFullPath('app', 'Config', 'di', 'register.yml')),
  64. $this->readYml(ModuleConstants::getFullPath('core', 'Config', 'di', 'register.yml'))
  65. ];
  66. }
  67. }