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