1: <?php
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: class Mage_Api2_Block_Adminhtml_Roles_Tab_Users extends Mage_Adminhtml_Block_Widget_Grid
39: implements Mage_Adminhtml_Block_Widget_Tab_Interface
40: {
41: 42: 43:
44: public function __construct()
45: {
46: parent::__construct();
47: $this->setId('roleUsersGrid');
48: $this->setData('use_ajax', true);
49: $this->setSaveParametersInSession(true);
50: $this->setDefaultSort('user_id')
51: ->setDefaultDir(Varien_Db_Select::SQL_DESC);
52: $this->setDefaultFilter(array('filter_in_role_users'=>1));
53: }
54:
55: 56: 57: 58: 59:
60: protected function _prepareCollection()
61: {
62:
63: $collection = Mage::getModel('admin/user')->getCollection();
64: $collection->getSelect()->joinLeft(
65: array('acl' => $collection->getTable('api2/acl_user')),
66: 'acl.admin_id = main_table.user_id',
67: 'role_id'
68: );
69: if ($this->getRole() && $this->getRole()->getId()) {
70: $collection->addFilter('acl.role_id', $this->getRole()->getId());
71: }
72:
73: $this->setCollection($collection);
74: parent::_prepareCollection();
75: return $this;
76: }
77:
78: 79: 80: 81: 82:
83: protected function _prepareColumns()
84: {
85: $this->addColumn('filter_in_role_users', array(
86: 'header_css_class' => 'a-center',
87: 'type' => 'checkbox',
88: 'name' => 'filter_in_role_users',
89: 'values' => $this->getUsers(),
90: 'align' => 'center',
91: 'index' => 'user_id'
92: ));
93:
94: $this->addColumn('user_id', array(
95: 'header' => Mage::helper('api2')->__('ID'), 'index' => 'user_id', 'align' => 'right', 'width' => '50px',
96: ));
97:
98: $this->addColumn('username', array(
99: 'header' => Mage::helper('adminhtml')->__('User Name'), 'align' => 'left', 'index' => 'username'
100: ));
101:
102: $this->addColumn('firstname', array(
103: 'header' => Mage::helper('adminhtml')->__('First Name'), 'align' => 'left', 'index' => 'firstname'
104: ));
105:
106: $this->addColumn('lastname', array(
107: 'header' => Mage::helper('adminhtml')->__('Last Name'), 'align' => 'left', 'index' => 'lastname'
108: ));
109:
110: return parent::_prepareColumns();
111: }
112:
113: 114: 115: 116: 117:
118: public function getGridUrl()
119: {
120: return $this->getUrl('*/*/usersGrid', array('_current' => true));
121: }
122:
123: 124: 125: 126: 127: 128:
129: public function getRowUrl($row)
130: {
131: return null;
132: }
133:
134: 135: 136: 137: 138:
139: public function getTabLabel()
140: {
141: return Mage::helper('api2')->__('Role Users');
142: }
143:
144: 145: 146: 147: 148:
149: public function getTabTitle()
150: {
151: return $this->getTabLabel();
152: }
153:
154: 155: 156: 157: 158:
159: public function canShowTab()
160: {
161: return !$this->isHidden();
162: }
163:
164: 165: 166: 167: 168:
169: public function isHidden()
170: {
171: return $this->getRole() && Mage_Api2_Model_Acl_Global_Role::isSystemRole($this->getRole());
172: }
173:
174: 175: 176: 177: 178:
179: public function _toHtml()
180: {
181: if (!$this->isHidden()) {
182: return parent::_toHtml();
183: }
184: return '';
185: }
186:
187: 188: 189: 190:
191: protected function _addColumnFilterToCollection($column)
192: {
193: if ($column->getId() == 'filter_in_role_users') {
194: $inRoleIds = $this->getUsers();
195: if (empty($inRoleIds)) {
196: $inRoleIds = 0;
197: }
198:
199: if ($column->getFilter()->getValue()) {
200: $this->getCollection()->addFieldToFilter('user_id', array('in' => $inRoleIds));
201: } else {
202: if($inRoleIds) {
203: $this->getCollection()->addFieldToFilter('user_id', array('nin' => $inRoleIds));
204: }
205: }
206: } else {
207: parent::_addColumnFilterToCollection($column);
208: }
209: return $this;
210: }
211:
212: 213: 214: 215: 216: 217:
218: public function getUsers($json = false)
219: {
220: $users = $this->getData('users');
221:
222: if ($json) {
223: if ($users === array()) {
224: return '{}';
225: }
226: $jsonUsers = array();
227: foreach($users as $usrId) {
228: $jsonUsers[$usrId] = 0;
229: }
230:
231: $helper = Mage::helper('core');
232: $result = $helper->jsonEncode((object) $jsonUsers);
233: } else {
234: $result = array_values($users);
235: }
236:
237: return $result;
238: }
239: }
240: