123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- /**
- * Admin system config startup page
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Config\Model\Config\Source\Admin;
- /**
- * @api
- * @since 100.0.2
- */
- class Page implements \Magento\Framework\Option\ArrayInterface
- {
- /**
- * Menu model
- *
- * @var \Magento\Backend\Model\Menu
- */
- protected $_menu;
- /**
- * @var \Magento\Backend\Model\Menu\Filter\IteratorFactory
- */
- protected $_iteratorFactory;
- /**
- * @param \Magento\Backend\Model\Menu\Filter\IteratorFactory $iteratorFactory
- * @param \Magento\Backend\Model\Menu\Config $menuConfig
- */
- public function __construct(
- \Magento\Backend\Model\Menu\Filter\IteratorFactory $iteratorFactory,
- \Magento\Backend\Model\Menu\Config $menuConfig
- ) {
- $this->_menu = $menuConfig->getMenu();
- $this->_iteratorFactory = $iteratorFactory;
- }
- /**
- * @return array
- */
- public function toOptionArray()
- {
- $options = [];
- $this->_createOptions($options, $this->_menu);
- return $options;
- }
- /**
- * Get menu filter iterator
- *
- * @param \Magento\Backend\Model\Menu $menu menu model
- * @return \Magento\Backend\Model\Menu\Filter\Iterator
- */
- protected function _getMenuIterator(\Magento\Backend\Model\Menu $menu)
- {
- return $this->_iteratorFactory->create(['iterator' => $menu->getIterator()]);
- }
- /**
- * Create options array
- *
- * @param array &$optionArray
- * @param \Magento\Backend\Model\Menu $menu
- * @param int $level
- * @return void
- */
- protected function _createOptions(&$optionArray, \Magento\Backend\Model\Menu $menu, $level = 0)
- {
- $nonEscapableNbspChar = html_entity_decode(' ', ENT_NOQUOTES, 'UTF-8');
- $paddingString = str_repeat($nonEscapableNbspChar, $level * 4);
- foreach ($this->_getMenuIterator($menu) as $menuItem) {
- /**@var $menuItem \Magento\Backend\Model\Menu\Item */
- if ($menuItem->getAction()) {
- $optionArray[] = [
- 'label' => $paddingString . $menuItem->getTitle(),
- 'value' => $menuItem->getId(),
- ];
- if ($menuItem->hasChildren()) {
- $this->_createOptions($optionArray, $menuItem->getChildren(), $level + 1);
- }
- } else {
- $children = [];
- if ($menuItem->hasChildren()) {
- $this->_createOptions($children, $menuItem->getChildren(), $level + 1);
- }
- $optionArray[] = ['label' => $paddingString . $menuItem->getTitle(), 'value' => $children];
- }
- }
- }
- }
|