session_require(array('group' => 1)); } $vFunc = new Valid_WhiteList('func', array('member_req_notif_group', 'member_req_notif_message')); $vFunc->required(); if ($request->isPost() && $request->valid($vFunc)) { /* updating the database */ switch ($request->get('func')) { case 'member_req_notif_group': $vUGroups = new Valid_UInt('ugroups'); $vUGroups->required(); if ($request->validArray($vUGroups)) { $ugroups = $request->get('ugroups'); // Remove ugroups that are empty or contain no project admins $result = ugroup_filter_ugroups_by_project_admin($group_id, $ugroups); $nonAdmins = $result['non_admins']; $validUgroups = $result['ugroups']; if (empty($validUgroups)) { // If no valid ugroups the default one is project admins ugroup $validUgroups = array($GLOBALS['UGROUP_PROJECT_ADMIN']); $GLOBALS['Response']->addFeedback('error', $Language->getText('project_admin_index', 'member_request_delegation_ugroups_all_invalid')); } else { // If some selected ugroups are not valid display them to the user. $diff = array_diff($ugroups, $validUgroups); if (!empty($diff)) { $deletedUgroups = array(); foreach ($diff as $ugroupId) { $deletedUgroups[] = ugroup_get_name_from_id($ugroupId); } $GLOBALS['Response']->addFeedback('warning', $Language->getText('project_admin_index', 'member_request_delegation_ugroups_some_invalid', implode(', ', $deletedUgroups)));
function testUgroupFilterUgroupsByProjectAdminBothAllAdmins() { $this->skipUnless(MOCKFUNCTION_AVAILABLE, "Function mocking not available"); if (MOCKFUNCTION_AVAILABLE) { MockFunction::generate('ugroup_count_project_admins'); MockFunction::setReturnValueAt(0, 'ugroup_count_project_admins', array('admins' => 1, 'non_admins' => 1)); MockFunction::setReturnValueAt(1, 'ugroup_count_project_admins', array('admins' => 1, 'non_admins' => 2)); MockFunction::setReturnValueAt(2, 'ugroup_count_project_admins', array('admins' => 1, 'non_admins' => 4)); MockFunction::setReturnValueAt(3, 'ugroup_count_project_admins', array('admins' => 1, 'non_admins' => 8)); MockFunction::expectCallCount('ugroup_count_project_admins', 4); $ugroups = array(1, 2); $this->assertEqual(array('non_admins' => 15, 'ugroups' => array(1, 2, 1, 2)), ugroup_filter_ugroups_by_project_admin(1, $ugroups)); MockFunction::restore('ugroup_count_project_admins'); } }