Exemple #1
0
/**
 * Validate the ugroup list containing group admins.
 * Remove ugroups that are empty or contain no project admins.
 * Don't remove ugroups containing both project admins and non project admins
 * just indicate the total number of non project admins.
 *
 * @param Integer $groupId
 * @param Array   $ugroups
 *
 * @return Array
 */
function ugroup_filter_ugroups_by_project_admin($groupId, $ugroups)
{
    $validUGroups = array();
    // Check static ugroups
    $nonAdmins = ugroup_count_non_admin_for_static_ugroups($groupId, $ugroups, $validUGroups);
    // Check dynamic ugroups
    $nonAdmins += ugroup_count_non_admin_for_dynamic_ugroups($groupId, $ugroups, $validUGroups);
    return array('non_admins' => $nonAdmins, 'ugroups' => $validUGroups);
}
Exemple #2
0
 function testUgroupCountNonAdminForStaticUgroupsMixed()
 {
     $this->skipUnless(MOCKFUNCTION_AVAILABLE, "Function mocking not available");
     if (MOCKFUNCTION_AVAILABLE) {
         $uGroup = new MockUGroup();
         $uGroup->setReturnValue('exists', true, array(1, 1));
         $uGroup->setReturnValue('exists', true, array(1, 2));
         $uGroup->setReturnValue('exists', true, array(1, 3));
         $uGroup->setReturnValue('exists', true, array(1, 4));
         MockFunction::generate('ugroup_get_ugroup');
         MockFunction::setReturnValue('ugroup_get_ugroup', $uGroup);
         MockFunction::generate('ugroup_count_project_admins');
         MockFunction::setReturnValueAt(0, 'ugroup_count_project_admins', array('admins' => 0, 'non_admins' => 2));
         MockFunction::setReturnValueAt(1, 'ugroup_count_project_admins', array('admins' => 1, 'non_admins' => 3));
         MockFunction::expectCallCount('ugroup_count_project_admins', 2);
         $validUGroups = array(1, 2);
         $this->assertEqual(3, ugroup_count_non_admin_for_static_ugroups(1, array(3, 4), $validUGroups));
         $this->assertEqual(array(1, 2, 4), $validUGroups);
         MockFunction::restore('ugroup_count_project_admins');
     }
 }