CRM-17646 - Add hook_civicrm_fieldOptions + tests
[civicrm-core.git] / tests / phpunit / CRM / Group / Page / AjaxTest.php
CommitLineData
3aab90bd 1<?php
2require_once 'CiviTest/CiviUnitTestCase.php';
aba1cd8b
EM
3
4/**
5 * Class CRM_Group_Page_AjaxTest
6 */
3aab90bd 7class 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}