1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Acl\Role;
- /**
- * Acl role registry. Contains list of roles and their relations.
- */
- class Registry extends \Zend_Acl_Role_Registry
- {
- /**
- * Add parent to the $role node
- *
- * @param \Zend_Acl_Role_Interface|string $role
- * @param array|\Zend_Acl_Role_Interface|string $parents
- * @return $this
- * @throws \Zend_Acl_Role_Registry_Exception
- */
- public function addParent($role, $parents)
- {
- try {
- if ($role instanceof \Zend_Acl_Role_Interface) {
- $roleId = $role->getRoleId();
- } else {
- $roleId = $role;
- $role = $this->get($role);
- }
- } catch (\Zend_Acl_Role_Registry_Exception $e) {
- throw new \Zend_Acl_Role_Registry_Exception("Child Role id '{$roleId}' does not exist");
- }
- if (!is_array($parents)) {
- $parents = [$parents];
- }
- foreach ($parents as $parent) {
- try {
- if ($parent instanceof \Zend_Acl_Role_Interface) {
- $roleParentId = $parent->getRoleId();
- } else {
- $roleParentId = $parent;
- }
- $roleParent = $this->get($roleParentId);
- } catch (\Zend_Acl_Role_Registry_Exception $e) {
- throw new \Zend_Acl_Role_Registry_Exception("Parent Role id '{$roleParentId}' does not exist");
- }
- $this->_roles[$roleId]['parents'][$roleParentId] = $roleParent;
- $this->_roles[$roleParentId]['children'][$roleId] = $role;
- }
- return $this;
- }
- }
|