*/ class Mage_Api_Model_Roles extends Mage_Core_Model_Abstract { /** * Filters * * @var array */ protected $_filters; protected function _construct() { $this->_init('api/roles'); } public function update() { $this->getResource()->update($this); return $this; } public function getUsersCollection() { return Mage::getResourceModel('api/roles_user_collection'); } public function getResourcesTree() { return $this->_buildResourcesArray(null, null, null, null, true); } public function getResourcesList() { return $this->_buildResourcesArray(); } public function getResourcesList2D() { return $this->_buildResourcesArray(null, null, null, true); } public function getRoleUsers() { return $this->getResource()->getRoleUsers($this); } protected function _buildResourcesArray( Varien_Simplexml_Element $resource = null, $parentName = null, $level = 0, $represent2Darray = null, $rawNodes = false, $module = 'adminhtml' ) { static $result; if (is_null($resource)) { $resource = Mage::getSingleton('api/config')->getNode('acl/resources'); $resourceName = null; $level = -1; } else { $resourceName = $parentName; if ($resource->getName()!='title' && $resource->getName()!='sort_order' && $resource->getName() != 'children' ) { $resourceName = (is_null($parentName) ? '' : $parentName.'/').$resource->getName(); //assigning module for its' children nodes if ($resource->getAttribute('module')) { $module = (string)$resource->getAttribute('module'); } if ($rawNodes) { $resource->addAttribute("aclpath", $resourceName); } $resource->title = Mage::helper($module)->__((string)$resource->title); if ( is_null($represent2Darray) ) { $result[$resourceName]['name'] = (string)$resource->title; $result[$resourceName]['level'] = $level; } else { $result[] = $resourceName; } } } $children = $resource->children(); if (empty($children)) { if ($rawNodes) { return $resource; } else { return $result; } } foreach ($children as $child) { $this->_buildResourcesArray($child, $resourceName, $level+1, $represent2Darray, $rawNodes, $module); } if ($rawNodes) { return $resource; } else { return $result; } } /** * Filter data before save * * @return Mage_Api_Model_Roles */ protected function _beforeSave() { $this->filter(); parent::_beforeSave(); return $this; } /** * Filter set data * * @return Mage_Api_Model_Roles */ public function filter() { $data = $this->getData(); if (!$this->_filters || !$data) { return $this; } /** @var $filter Mage_Core_Model_Input_Filter */ $filter = Mage::getModel('core/input_filter'); $filter->setFilters($this->_filters); $this->setData($filter->filter($data)); return $this; } }