1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Config\Model\Config\Structure\Element;
- /**
- * @api
- * @since 100.0.2
- */
- abstract class AbstractComposite extends \Magento\Config\Model\Config\Structure\AbstractElement
- {
- /**
- * Child elements iterator
- *
- * @var Iterator
- */
- protected $_childrenIterator;
- /**
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \Magento\Framework\Module\Manager $moduleManager
- * @param Iterator $childrenIterator
- */
- public function __construct(
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Magento\Framework\Module\Manager $moduleManager,
- Iterator $childrenIterator
- ) {
- parent::__construct($storeManager, $moduleManager);
- $this->_childrenIterator = $childrenIterator;
- }
- /**
- * Set flyweight data
- *
- * @param array $data
- * @param string $scope
- * @return void
- */
- public function setData(array $data, $scope)
- {
- parent::setData($data, $scope);
- $children = array_key_exists(
- 'children',
- $this->_data
- ) && is_array(
- $this->_data['children']
- ) ? $this->_data['children'] : [];
- $this->_childrenIterator->setElements($children, $scope);
- }
- /**
- * Check whether element has visible child elements
- *
- * @return bool
- */
- public function hasChildren()
- {
- foreach ($this->getChildren() as $child) {
- return (bool)$child;
- }
- return false;
- }
- /**
- * Retrieve children iterator
- *
- * @return \Magento\Config\Model\Config\Structure\Element\Iterator
- */
- public function getChildren()
- {
- return $this->_childrenIterator;
- }
- /**
- * Check whether element is visible
- *
- * @return bool
- */
- public function isVisible()
- {
- if (parent::isVisible()) {
- return $this->hasChildren() || $this->getFrontendModel();
- }
- return false;
- }
- }
|