function json_getSubGroups() { $sFilter = KTUtil::arrayGet($_REQUEST, 'filter', false); $aAllowedGroups = array('off' => _kt('-- Please filter --')); if ($sFilter && trim($sFilter)) { $iGroupID = KTUtil::arrayGet($_REQUEST, 'group_id', false); if (!$iGroupID) { return array('error' => true, 'type' => 'kt.invalid_entity', 'message' => _kt('An invalid group was selected')); } $oGroup = Group::get($iGroupID); $aMemberGroupsUnkeyed = $oGroup->getMemberGroups(); $aMemberGroups = array(); $aMemberIDs = array(); foreach ($aMemberGroupsUnkeyed as $oMemberGroup) { $aMemberIDs[] = $oMemberGroup->getID(); $aMemberGroups[$oMemberGroup->getID()] = $oMemberGroup; } $aGroupArray = GroupUtil::buildGroupArray(); $aAllowedGroupIDs = GroupUtil::filterCyclicalGroups($oGroup->getID(), $aGroupArray); $aAllowedGroupIDs = array_diff($aAllowedGroupIDs, $aMemberIDs); $aAllowedGroups = array(); foreach ($aAllowedGroupIDs as $iAllowedGroupID) { $g = Group::get($iAllowedGroupID); if (!PEAR::isError($g) && $g != false) { $aAllowedGroups[$iAllowedGroupID] = $g->getName(); } } } return $aAllowedGroups; }
<?php require_once "../../../config/dmsDefaults.php"; require_once KT_LIB_DIR . '/groups/GroupUtil.php'; $aGroupMembers = array(1 => array(2, 3, 4), 2 => array(), 3 => null, 4 => array(5), 5 => null, 6 => array(1), 7 => array(2, 3)); $iGroupID = 5; $aRet = GroupUtil::filterCyclicalGroups($iGroupID, $aGroupMembers); sort($aRet); $aExpectedResult = array(2, 3, 7); if ($aRet === $aExpectedResult) { print "Success!\n"; } else { print "Failed!\n"; print "Expected: " . print_r($aExpectedResult, true); print "Got: " . print_r($aRet, true); }