Commit | Line | Data |
---|---|---|
3aab90bd | 1 | <?php |
aba1cd8b EM |
2 | |
3 | /** | |
4 | * Class CRM_Group_Page_AjaxTest | |
acb109b7 | 5 | * @group headless |
aba1cd8b | 6 | */ |
3aab90bd | 7 | class CRM_Group_Page_AjaxTest extends CiviUnitTestCase { |
8 | /** | |
9 | * Permissioned group is used both as an active group the contact can see and as a group that allows | |
10 | * logged in user to see contacts | |
11 | * @var integer | |
12 | */ | |
13 | protected $_permissionedGroup; | |
14 | /** | |
eceb18cc | 15 | * AS disabled group the contact has permission to. |
33e61cb8 | 16 | * @var int |
3aab90bd | 17 | */ |
18 | protected $_permissionedDisabledGroup; | |
19 | ||
33e61cb8 CW |
20 | /** |
21 | * @var CRM_Utils_Hook_UnitTests | |
22 | */ | |
428f5595 | 23 | public $hookClass; |
5c2ad8fb | 24 | |
aaac0e0b EM |
25 | protected $_params = array(); |
26 | ||
00be9182 | 27 | public function setUp() { |
3aab90bd | 28 | parent::setUp(); |
29 | $this->_params = array( | |
30 | 'sEcho' => '1', | |
31 | 'page' => 1, | |
32 | 'rp' => 50, | |
33 | 'offset' => 0, | |
34 | 'rowCount' => 50, | |
35 | 'sort' => NULL, | |
36 | 'is_unit_test' => TRUE, | |
37 | ); | |
38 | $this->hookClass = CRM_Utils_Hook::singleton(); | |
39 | $this->createLoggedInUser(); | |
92915c55 TO |
40 | $this->_permissionedDisabledGroup = $this->groupCreate(array( |
41 | 'title' => 'pick-me-disabled', | |
42 | 'is_active' => 0, | |
ae5ffbb7 | 43 | 'name' => 'pick-me-disabled', |
92915c55 TO |
44 | )); |
45 | $this->_permissionedGroup = $this->groupCreate(array( | |
46 | 'title' => 'pick-me-active', | |
47 | 'is_active' => 1, | |
ae5ffbb7 | 48 | 'name' => 'pick-me-active', |
92915c55 | 49 | )); |
3aab90bd | 50 | $this->groupCreate(array('title' => 'not-me-disabled', 'is_active' => 0, 'name' => 'not-me-disabled')); |
51 | $this->groupCreate(array('title' => 'not-me-active', 'is_active' => 1, 'name' => 'not-me-active')); | |
52 | } | |
53 | ||
00be9182 | 54 | public function tearDown() { |
3aab90bd | 55 | CRM_Utils_Hook::singleton()->reset(); |
56 | $this->quickCleanup(array('civicrm_group')); | |
57 | $config = CRM_Core_Config::singleton(); | |
58 | unset($config->userPermissionClass->permissions); | |
59 | parent::tearDown(); | |
60 | } | |
61 | ||
62 | /** | |
aaac0e0b | 63 | * @param $permission |
3aab90bd | 64 | */ |
00be9182 | 65 | public function setPermissionAndRequest($permission) { |
5c62295c | 66 | CRM_Core_Config::singleton()->userPermissionClass->permissions = (array) $permission; |
aaac0e0b EM |
67 | CRM_Contact_BAO_Group::getPermissionClause(TRUE); |
68 | global $_REQUEST; | |
69 | $_REQUEST = $this->_params; | |
70 | } | |
71 | ||
72 | /** | |
73 | * @param $permission | |
74 | * @param $hook | |
75 | */ | |
00be9182 | 76 | public function setHookAndRequest($permission, $hook) { |
5c62295c | 77 | CRM_Core_Config::singleton()->userPermissionClass->permissions = (array) $permission; |
aaac0e0b EM |
78 | $this->hookClass->setHook('civicrm_aclGroup', array($this, $hook)); |
79 | CRM_Contact_BAO_Group::getPermissionClause(TRUE); | |
3aab90bd | 80 | global $_REQUEST; |
81 | $_REQUEST = $this->_params; | |
aaac0e0b | 82 | } |
92915c55 | 83 | |
aaac0e0b | 84 | /** |
100fef9d | 85 | * Retrieve groups as 'view all contacts' |
aaac0e0b | 86 | */ |
00be9182 | 87 | public function testGroupListViewAllContacts() { |
958e4503 | 88 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); |
89 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); | |
90 | $this->assertEquals(2, $total); | |
91 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); | |
92 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']); | |
93 | } | |
94 | ||
95 | /** | |
96 | * Check Group Edit w/o 'edit groups' permission. | |
97 | */ | |
98 | public function testGroupEditWithAndWithoutPermission() { | |
aaac0e0b | 99 | $this->setPermissionAndRequest('view all contacts'); |
3aab90bd | 100 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
101 | $this->assertEquals(2, $total); | |
958e4503 | 102 | $this->assertEquals('pick-me-active', $groups[2]['group_name']); |
103 | $this->assertEquals('not-me-active', $groups[4]['group_name']); | |
104 | ||
105 | // as per changes made in PR-6822 | |
106 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); | |
107 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); | |
108 | $this->assertEquals(2, $total); | |
9cb9ac69 | 109 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
110 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']); | |
3aab90bd | 111 | } |
112 | ||
113 | /** | |
100fef9d | 114 | * Retrieve groups as 'view all contacts' permissioned user |
3aab90bd | 115 | * Without setting params the default is both enabled & disabled |
116 | * (if you do set default it is enabled only) | |
117 | */ | |
00be9182 | 118 | public function testGroupListViewAllContactsFoundTitle() { |
aaac0e0b | 119 | $this->_params['title'] = 'p'; |
958e4503 | 120 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); |
3aab90bd | 121 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
122 | $this->assertEquals(2, $total); | |
9cb9ac69 | 123 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
124 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); | |
3aab90bd | 125 | } |
126 | ||
127 | /** | |
100fef9d | 128 | * Retrieve groups as 'view all contacts' |
3aab90bd | 129 | */ |
00be9182 | 130 | public function testGroupListViewAllContactsNotFoundTitle() { |
aaac0e0b EM |
131 | $this->_params['title'] = 'z'; |
132 | $this->setPermissionAndRequest('view all contacts'); | |
3aab90bd | 133 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
134 | $this->assertEquals(0, $total); | |
135 | } | |
92915c55 | 136 | |
3aab90bd | 137 | /** |
100fef9d | 138 | * Retrieve groups as 'edit all contacts' |
3aab90bd | 139 | */ |
00be9182 | 140 | public function testGroupListEditAllContacts() { |
958e4503 | 141 | $this->setPermissionAndRequest(array('edit all contacts', 'edit groups')); |
3aab90bd | 142 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
143 | $this->assertEquals(2, $total); | |
9cb9ac69 | 144 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
145 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']); | |
3aab90bd | 146 | } |
147 | ||
148 | /** | |
100fef9d | 149 | * Retrieve groups as 'view all contacts' |
3aab90bd | 150 | */ |
00be9182 | 151 | public function testGroupListViewAllContactsEnabled() { |
aaac0e0b | 152 | $this->_params['status'] = 1; |
958e4503 | 153 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); |
3aab90bd | 154 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
155 | $this->assertEquals(2, $total); | |
9cb9ac69 | 156 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
157 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']); | |
3aab90bd | 158 | } |
159 | ||
160 | /** | |
100fef9d | 161 | * Retrieve groups as 'view all contacts' |
3aab90bd | 162 | */ |
00be9182 | 163 | public function testGroupListViewAllContactsDisabled() { |
aaac0e0b | 164 | $this->_params['status'] = 2; |
958e4503 | 165 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); |
3aab90bd | 166 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
167 | $this->assertEquals(2, $total); | |
9cb9ac69 | 168 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); |
169 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-disabled</span>', $groups[3]['group_name']); | |
3aab90bd | 170 | } |
171 | ||
172 | /** | |
100fef9d | 173 | * Retrieve groups as 'view all contacts' |
3aab90bd | 174 | */ |
00be9182 | 175 | public function testGroupListViewAllContactsDisabledNotFoundTitle() { |
aaac0e0b EM |
176 | $this->_params['status'] = 2; |
177 | $this->_params['title'] = 'n'; | |
958e4503 | 178 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); |
3aab90bd | 179 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
180 | $this->assertEquals(1, $total); | |
9cb9ac69 | 181 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-disabled</span>', $groups[3]['group_name']); |
3aab90bd | 182 | } |
183 | ||
184 | /** | |
100fef9d | 185 | * Retrieve groups as 'view all contacts' |
3aab90bd | 186 | */ |
00be9182 | 187 | public function testGroupListViewAllContactsDisabledFoundTitle() { |
aaac0e0b EM |
188 | $this->_params['status'] = 2; |
189 | $this->_params['title'] = 'p'; | |
958e4503 | 190 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); |
3aab90bd | 191 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
192 | $this->assertEquals(1, $total); | |
9cb9ac69 | 193 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); |
3aab90bd | 194 | } |
195 | ||
196 | /** | |
100fef9d | 197 | * Retrieve groups as 'view all contacts' |
3aab90bd | 198 | */ |
00be9182 | 199 | public function testGroupListViewAllContactsAll() { |
aaac0e0b | 200 | $this->_params['status'] = 3; |
958e4503 | 201 | $this->setPermissionAndRequest(array('view all contacts', 'edit groups')); |
3aab90bd | 202 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
203 | $this->assertEquals(4, $total); | |
9cb9ac69 | 204 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); |
205 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-disabled</span>', $groups[3]['group_name']); | |
206 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); | |
207 | $this->assertEquals('<span class="crm-editable crmf-title">not-me-active</span>', $groups[4]['group_name']); | |
3aab90bd | 208 | } |
209 | ||
210 | ||
211 | /** | |
100fef9d | 212 | * Retrieve groups as 'view all contacts' |
3aab90bd | 213 | */ |
00be9182 | 214 | public function testGroupListAccessCiviCRM() { |
aaac0e0b EM |
215 | $this->setPermissionAndRequest('access CiviCRM'); |
216 | $permissionClause = CRM_Contact_BAO_Group::getPermissionClause(TRUE); | |
217 | $this->assertEquals('1 = 0', $permissionClause); | |
3aab90bd | 218 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
219 | $this->assertEquals(0, count($groups)); | |
3aab90bd | 220 | $this->assertEquals(0, $total, 'Total returned should be accurate based on permissions'); |
221 | } | |
92915c55 | 222 | |
3aab90bd | 223 | /** |
100fef9d | 224 | * Retrieve groups as 'view all contacts' |
3aab90bd | 225 | */ |
00be9182 | 226 | public function testGroupListAccessCiviCRMEnabled() { |
aaac0e0b EM |
227 | $this->_params['status'] = 1; |
228 | $this->setPermissionAndRequest('access CiviCRM'); | |
3aab90bd | 229 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
230 | $this->assertEquals(0, count($groups)); | |
3aab90bd | 231 | $this->assertEquals(0, $total, 'Total returned should be accurate based on permissions'); |
232 | } | |
92915c55 | 233 | |
3aab90bd | 234 | /** |
100fef9d | 235 | * Retrieve groups as 'view all contacts' |
3aab90bd | 236 | */ |
00be9182 | 237 | public function testGroupListAccessCiviCRMDisabled() { |
aaac0e0b EM |
238 | $this->_params['status'] = 2; |
239 | $this->setPermissionAndRequest('access CiviCRM'); | |
3aab90bd | 240 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
241 | $this->assertEquals(0, count($groups)); | |
3aab90bd | 242 | $this->assertEquals(0, $total, 'Total returned should be accurate based on permissions'); |
243 | } | |
244 | ||
245 | /** | |
100fef9d | 246 | * Retrieve groups as 'view all contacts' |
3aab90bd | 247 | */ |
00be9182 | 248 | public function testGroupListAccessCiviCRMAll() { |
aaac0e0b EM |
249 | $this->_params['status'] = 2; |
250 | $this->setPermissionAndRequest('access CiviCRM'); | |
3aab90bd | 251 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
252 | $this->assertEquals(0, count($groups)); | |
3aab90bd | 253 | $this->assertEquals(0, $total, 'Total returned should be accurate based on permissions'); |
254 | } | |
255 | ||
256 | /** | |
100fef9d | 257 | * Retrieve groups as 'view all contacts' |
3aab90bd | 258 | */ |
00be9182 | 259 | public function testGroupListAccessCiviCRMFound() { |
aaac0e0b EM |
260 | $this->_params['title'] = 'p'; |
261 | $this->setPermissionAndRequest('access CiviCRM'); | |
3aab90bd | 262 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
263 | $this->assertEquals(0, count($groups)); | |
264 | $this->assertEquals(0, $total, 'Total returned should be accurate based on permissions'); | |
265 | } | |
266 | ||
267 | /** | |
100fef9d | 268 | * Retrieve groups as 'view all contacts' |
3aab90bd | 269 | */ |
00be9182 | 270 | public function testGroupListAccessCiviCRMNotFound() { |
aaac0e0b EM |
271 | $this->_params['title'] = 'z'; |
272 | $this->setPermissionAndRequest('access CiviCRM'); | |
3aab90bd | 273 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
274 | $this->assertEquals(0, count($groups)); | |
275 | $this->assertEquals(0, $total, 'Total returned should be accurate based on permissions'); | |
276 | } | |
277 | ||
92915c55 | 278 | public function testTraditionalACL() { |
3aab90bd | 279 | $this->setupACL(); |
958e4503 | 280 | $this->setPermissionAndRequest('edit groups'); |
3aab90bd | 281 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
282 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
283 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 284 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
3aab90bd | 285 | } |
286 | ||
92915c55 | 287 | public function testTraditionalACLNotFoundTitle() { |
aaac0e0b | 288 | $this->_params['title'] = 'n'; |
3aab90bd | 289 | $this->setupACL(); |
3aab90bd | 290 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
291 | $this->assertEquals(0, count($groups), 'Returned groups should exclude disabled by default'); | |
292 | $this->assertEquals(0, $total, 'Total needs to be set correctly'); | |
293 | } | |
294 | ||
92915c55 | 295 | public function testTraditionalACLFoundTitle() { |
aaac0e0b | 296 | $this->_params['title'] = 'p'; |
3aab90bd | 297 | $this->setupACL(); |
958e4503 | 298 | $this->setPermissionAndRequest('edit groups'); |
3aab90bd | 299 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
300 | $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default'); | |
301 | $this->assertEquals(2, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 302 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
303 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); | |
3aab90bd | 304 | } |
305 | ||
92915c55 | 306 | public function testTraditionalACLDisabled() { |
aaac0e0b | 307 | $this->_params['status'] = 2; |
3aab90bd | 308 | $this->setupACL(); |
958e4503 | 309 | $this->setPermissionAndRequest('edit groups'); |
3aab90bd | 310 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
311 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
312 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 313 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); |
3aab90bd | 314 | } |
315 | ||
92915c55 | 316 | public function testTraditionalACLDisabledFoundTitle() { |
aaac0e0b EM |
317 | $this->_params['status'] = 2; |
318 | $this->_params['title'] = 'p'; | |
3aab90bd | 319 | $this->setupACL(); |
958e4503 | 320 | $this->setPermissionAndRequest('edit groups'); |
3aab90bd | 321 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
322 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
323 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 324 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); |
3aab90bd | 325 | } |
326 | ||
92915c55 | 327 | public function testTraditionalACLDisabledNotFoundTitle() { |
aaac0e0b EM |
328 | $this->_params['status'] = 2; |
329 | $this->_params['title'] = 'n'; | |
3aab90bd | 330 | $this->setupACL(); |
3aab90bd | 331 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
332 | $this->assertEquals(0, count($groups), 'Returned groups should exclude disabled by default'); | |
333 | $this->assertEquals(0, $total, 'Total needs to be set correctly'); | |
334 | } | |
335 | ||
92915c55 | 336 | public function testTraditionalACLEnabled() { |
aaac0e0b | 337 | $this->_params['status'] = 1; |
3aab90bd | 338 | $this->setupACL(); |
958e4503 | 339 | $this->setPermissionAndRequest('edit groups'); |
3aab90bd | 340 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
341 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
342 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 343 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
3aab90bd | 344 | } |
345 | ||
92915c55 | 346 | public function testTraditionalACLAll() { |
aaac0e0b | 347 | $this->_params['status'] = 3; |
3aab90bd | 348 | $this->setupACL(); |
958e4503 | 349 | $this->setPermissionAndRequest('edit groups'); |
3aab90bd | 350 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
351 | $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default'); | |
352 | $this->assertEquals(2, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 353 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
354 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); | |
3aab90bd | 355 | } |
356 | ||
357 | /** | |
eceb18cc | 358 | * ACL Group hook. |
3aab90bd | 359 | */ |
00be9182 | 360 | public function testGroupListAclGroupHookDisabled() { |
aaac0e0b | 361 | $this->_params['status'] = 2; |
958e4503 | 362 | $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup'); |
3aab90bd | 363 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
364 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
365 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 366 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); |
3aab90bd | 367 | } |
368 | ||
369 | /** | |
eceb18cc | 370 | * ACL Group hook. |
3aab90bd | 371 | */ |
00be9182 | 372 | public function testGroupListAclGroupHookDisabledFound() { |
aaac0e0b EM |
373 | $this->_params['status'] = 2; |
374 | $this->_params['title'] = 'p'; | |
958e4503 | 375 | $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup'); |
3aab90bd | 376 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
377 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
378 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 379 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); |
3aab90bd | 380 | } |
381 | ||
382 | /** | |
eceb18cc | 383 | * ACL Group hook. |
3aab90bd | 384 | */ |
00be9182 | 385 | public function testGroupListAclGroupHookDisabledNotFound() { |
aaac0e0b EM |
386 | $this->_params['status'] = 2; |
387 | $this->_params['title'] = 'n'; | |
388 | $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup'); | |
3aab90bd | 389 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
390 | $this->assertEquals(0, count($groups), 'Returned groups should exclude disabled by default'); | |
391 | $this->assertEquals(0, $total, 'Total needs to be set correctly'); | |
392 | } | |
393 | ||
394 | ||
395 | /** | |
eceb18cc | 396 | * ACL Group hook. |
3aab90bd | 397 | */ |
00be9182 | 398 | public function testGroupListAclGroupHook() { |
958e4503 | 399 | $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup'); |
3aab90bd | 400 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
401 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
402 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 403 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
3aab90bd | 404 | } |
405 | ||
406 | /** | |
eceb18cc | 407 | * ACL Group hook. |
3aab90bd | 408 | */ |
00be9182 | 409 | public function testGroupListAclGroupHookTitleNotFound() { |
aaac0e0b EM |
410 | $this->_params['title'] = 'n'; |
411 | $this->setHookAndRequest('access CiviCRM', 'hook_civicrm_aclGroup'); | |
3aab90bd | 412 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
413 | $this->assertEquals(0, $total, 'Total needs to be set correctly'); | |
414 | $this->assertEquals(0, count($groups), 'Returned groups should exclude disabled by default'); | |
415 | } | |
416 | ||
417 | /** | |
eceb18cc | 418 | * ACL Group hook. |
3aab90bd | 419 | */ |
00be9182 | 420 | public function testGroupListAclGroupHookTitleFound() { |
aaac0e0b | 421 | $this->_params['title'] = 'p'; |
958e4503 | 422 | $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup'); |
3aab90bd | 423 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
424 | $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default'); | |
425 | $this->assertEquals(2, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 426 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
427 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); | |
3aab90bd | 428 | } |
429 | ||
430 | /** | |
eceb18cc | 431 | * ACL Group hook. |
3aab90bd | 432 | */ |
00be9182 | 433 | public function testGroupListAclGroupHookAll() { |
aaac0e0b | 434 | $this->_params['status'] = 3; |
958e4503 | 435 | $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup'); |
3aab90bd | 436 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
437 | $this->assertEquals(2, count($groups), 'Returned groups should exclude disabled by default'); | |
438 | $this->assertEquals(2, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 439 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
440 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-disabled</span>', $groups[1]['group_name']); | |
3aab90bd | 441 | } |
442 | ||
443 | /** | |
eceb18cc | 444 | * ACL Group hook. |
3aab90bd | 445 | */ |
00be9182 | 446 | public function testGroupListAclGroupHookEnabled() { |
aaac0e0b | 447 | $this->_params['status'] = 1; |
958e4503 | 448 | $this->setHookAndRequest(array('access CiviCRM', 'edit groups'), 'hook_civicrm_aclGroup'); |
3aab90bd | 449 | list($groups, $total) = CRM_Group_Page_AJAX::getGroupList(); |
450 | $this->assertEquals(1, count($groups), 'Returned groups should exclude disabled by default'); | |
451 | $this->assertEquals(1, $total, 'Total needs to be set correctly'); | |
9cb9ac69 | 452 | $this->assertEquals('<span class="crm-editable crmf-title">pick-me-active</span>', $groups[2]['group_name']); |
3aab90bd | 453 | } |
454 | ||
455 | /** | |
eceb18cc | 456 | * Implements ACLGroup hook. |
6c6e6187 TO |
457 | * aclGroup function returns a list of permitted groups |
458 | * @param string $type | |
459 | * @param int $contactID | |
460 | * @param string $tableName | |
461 | * @param array $allGroups | |
462 | * @param array $currentGroups | |
463 | */ | |
00be9182 | 464 | public function hook_civicrm_aclGroup($type, $contactID, $tableName, &$allGroups, &$currentGroups) { |
aaac0e0b | 465 | //don't use api - you will get a loop |
3aab90bd | 466 | $sql = " SELECT * FROM civicrm_group WHERE name LIKE '%pick%'"; |
467 | $groups = array(); | |
468 | $dao = CRM_Core_DAO::executeQuery($sql); | |
469 | while ($dao->fetch()) { | |
470 | $groups[] = $dao->id; | |
471 | } | |
472 | ||
22e263ad | 473 | if (!empty($allGroups)) { |
3aab90bd | 474 | //all groups is empty if we really mean all groups but if a filter like 'is_disabled' is already applied |
475 | // it is populated, ajax calls from Manage Groups will leave empty but calls from New Mailing pass in a filtered list | |
476 | $currentGroups = array_intersect($groups, array_flip($allGroups)); | |
477 | } | |
478 | else { | |
479 | $currentGroups = $groups; | |
480 | } | |
481 | } | |
96025800 | 482 | |
3aab90bd | 483 | } |