MainMenu.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\Http\View;
  3. use ThurData\Servers\KerioEmail\Core\FileReader\Reader;
  4. use ThurData\Servers\KerioEmail\Core\Helper\BuildUrl;
  5. use ThurData\Servers\KerioEmail\Core\ModuleConstants;
  6. use ThurData\Servers\KerioEmail\Core\Helper;
  7. /**
  8. * Description of MainMenu
  9. *
  10. * @autor ThurData <info@thurdata.ch>
  11. */
  12. class MainMenu
  13. {
  14. /**
  15. * @var array
  16. */
  17. protected $menuContect = [];
  18. /**
  19. * @var array
  20. */
  21. protected $menu = [];
  22. /**
  23. * @var Breadcrumb
  24. */
  25. protected $breadcrumbModel;
  26. /**
  27. * @var array
  28. */
  29. protected $breadcrumb = [];
  30. public function __construct(Breadcrumb $breadcrumb)
  31. {
  32. $this->breadcrumbModel = $breadcrumb;
  33. $this->loadMenuContect();
  34. $this->buildMenu();
  35. }
  36. private function loadMenuContect()
  37. {
  38. $isAdmin = Helper\isAdmin();
  39. $file = ($isAdmin) ? 'admin.yml' : 'client.yml';
  40. $this->menuContect = Reader::read(ModuleConstants::getDevConfigDir() . DS . 'menu' . DS . $file)->get();
  41. }
  42. private function buildMenu()
  43. {
  44. foreach ($this->menuContect as $catName => $category)
  45. {
  46. if (isset($category['submenu']))
  47. {
  48. foreach ($category['submenu'] as $subName => &$subPage)
  49. {
  50. if (empty($subPage['url']))
  51. {
  52. $subPage['url'] = isset($subPage['externalUrl']) ? isset($subPage['externalUrl'])
  53. : BuildUrl::getUrl($catName, $subName);
  54. }
  55. }
  56. }
  57. $category['url'] = isset($category['externalUrl']) ? isset($category['externalUrl'])
  58. : BuildUrl::getUrl($catName);
  59. $this->menu[$catName] = $category;
  60. }
  61. }
  62. public function buildBreadcrumb($controller = null, $action = null, array $arrayBreadcrumb = [])
  63. {
  64. $this->breadcrumb = $this->breadcrumbModel
  65. ->load($this->getMenu(), $controller, $action, $arrayBreadcrumb)
  66. ->get();
  67. return $this;
  68. }
  69. public function getMenu()
  70. {
  71. return $this->menu;
  72. }
  73. public function getBreadcrumb()
  74. {
  75. return $this->breadcrumb;
  76. }
  77. }