/** * Filter dynamic ugroups that contain project admins. * Retun is the number of non project admins * in the filtered ugroups. * * @param Integer $groupId * @param Array $ugroups * @param Array $validUgroups * * @return Integer */ function ugroup_count_non_admin_for_dynamic_ugroups($groupId, $ugroups, &$validUGroups) { $containNonAdmin = 0; foreach ($ugroups as $ugroupId) { $sql = ugroup_db_get_dynamic_members($ugroupId, null, $groupId); $arrayUsers = ugroup_count_project_admins($groupId, $sql); if ($arrayUsers['admins'] > 0) { $validUGroups[] = $ugroupId; $containNonAdmin += $arrayUsers['non_admins']; } } return $containNonAdmin; }
function testUgroupCountProjectAdminsMixed() { $this->skipUnless(MOCKFUNCTION_AVAILABLE, "Function mocking not available"); if (MOCKFUNCTION_AVAILABLE) { MockFunction::setReturnValueAt(0, 'db_fetch_array', array('user_id' => 1)); MockFunction::setReturnValueAt(1, 'db_fetch_array', array('user_id' => 2)); MockFunction::setReturnValueAt(2, 'db_fetch_array', null); MockFunction::expectCallCount('db_fetch_array', 3); $user = new MockUser(); $user->setReturnValueAt(0, 'isMember', true); $user->setReturnValueAt(1, 'isMember', false); $user->expectCallCount('isMeMber', 2); $um = new MockUserManager(); $um->setReturnValue('getUserById', $user); MockFunction::setReturnValue('ugroup_get_user_manager', $um); $result = ugroup_count_project_admins(1, ''); $this->assertEqual(1, $result['admins']); $this->assertEqual(1, $result['non_admins']); } }