![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Acl/AclResource/Config/Converter/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\Acl\AclResource\Config\Converter; /** * @inheritDoc */ class Dom implements \Magento\Framework\Config\ConverterInterface { /** * @inheritdoc * * @param \DOMDocument $source * @return array * @throws \Exception */ public function convert($source) { $aclResourceConfig = ['config' => ['acl' => ['resources' => []]]]; $xpath = new \DOMXPath($source); /** @var $resourceNode \DOMNode */ foreach ($xpath->query('/config/acl/resources/resource') as $resourceNode) { $aclResourceConfig['config']['acl']['resources'][] = $this->_convertResourceNode($resourceNode); } return $aclResourceConfig; } /** * Convert resource node into assoc array * * @param \DOMNode $resourceNode * @return array * @throws \Exception * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function _convertResourceNode(\DOMNode $resourceNode) { $resourceData = []; $resourceAttributes = $resourceNode->attributes; $idNode = $resourceAttributes->getNamedItem('id'); if ($idNode === null) { // phpcs:ignore Magento2.Exceptions.DirectThrow throw new \Exception('Attribute "id" is required for ACL resource.'); } $resourceData['id'] = $idNode->nodeValue; $moduleNode = $resourceAttributes->getNamedItem('module'); if ($moduleNode !== null) { $resourceData['module'] = $moduleNode->nodeValue; } $titleNode = $resourceAttributes->getNamedItem('title'); if ($titleNode !== null) { $resourceData['title'] = $titleNode->nodeValue; } $sortOrderNode = $resourceAttributes->getNamedItem('sortOrder'); $resourceData['sortOrder'] = $sortOrderNode !== null ? (int)$sortOrderNode->nodeValue : 0; $disabledNode = $resourceAttributes->getNamedItem('disabled'); $resourceData['disabled'] = $disabledNode !== null && $disabledNode->nodeValue == 'true'; // convert child resource nodes if needed $resourceData['children'] = []; /** @var $childNode \DOMNode */ foreach ($resourceNode->childNodes as $childNode) { if ($childNode->nodeName == 'resource') { $resourceData['children'][] = $this->_convertResourceNode($childNode); } } return $resourceData; } }