/
Rolesedit.php
122 lines (99 loc) · 4 KB
/
Rolesedit.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Mage_Adminhtml_Block_Api_Tab_Rolesedit extends Mage_Adminhtml_Block_Widget_Form {
protected $_template = 'api/rolesedit.phtml';
protected function _construct() {
parent::_construct();
$rid = Mage::app()->getRequest()->getParam('rid', false);
$resources = Mage::getModel('Mage_Api_Model_Roles')->getResourcesList();
$rules_set = Mage::getResourceModel('Mage_Api_Model_Resource_Rules_Collection')->getByRoles($rid)->load();
$selrids = array();
foreach ($rules_set->getItems() as $item) {
if (array_key_exists(strtolower($item->getResource_id()), $resources)
&& $item->getApiPermission() == 'allow')
{
$resources[$item->getResource_id()]['checked'] = true;
array_push($selrids, $item->getResource_id());
}
}
$this->setSelectedResources($selrids);
//->assign('resources', $resources);
//->assign('checkedResources', join(',', $selrids));
}
public function getEverythingAllowed()
{
return in_array('all', $this->getSelectedResources());
}
public function getResTreeJson()
{
$rid = Mage::app()->getRequest()->getParam('rid', false);
$resources = Mage::getModel('Mage_Api_Model_Roles')->getResourcesTree();
$rootArray = $this->_getNodeJson($resources,1);
$json = Mage::helper('Mage_Core_Helper_Data')->jsonEncode(isset($rootArray['children']) ? $rootArray['children'] : array());
return $json;
}
protected function _sortTree($a, $b)
{
return $a['sort_order']<$b['sort_order'] ? -1 : ($a['sort_order']>$b['sort_order'] ? 1 : 0);
}
protected function _getNodeJson($node, $level=0)
{
$item = array();
$selres = $this->getSelectedResources();
if ($level != 0) {
$item['text']= (string)$node->title;
$item['sort_order']= isset($node->sort_order) ? (string)$node->sort_order : 0;
$item['id'] = (string)$node->attributes()->aclpath;
if (in_array($item['id'], $selres))
$item['checked'] = true;
}
if (isset($node->children)) {
$children = $node->children->children();
} else {
$children = $node->children();
}
if (empty($children)) {
return $item;
}
if ($children) {
$item['children'] = array();
//$item['cls'] = 'fiche-node';
foreach ($children as $child) {
if ($child->getName()!='title' && $child->getName()!='sort_order' && $child->attributes()->module) {
if ($level != 0) {
$item['children'][] = $this->_getNodeJson($child, $level+1);
} else {
$item = $this->_getNodeJson($child, $level+1);
}
}
}
if (!empty($item['children'])) {
usort($item['children'], array($this, '_sortTree'));
}
}
return $item;
}
}