/** * Exclude $targetUser from access groups given by $groupids by the $sourceUser. * * @param Default_Model_Researcher|integer $sourceUser User profile object or id. * @param Default_Model_Researcher|integer $targetUser User profile object or id. * @param integer[] $groupIds The ids of the access groups. * @param {id, name, canAdd, canRemove, canRequest, canAcceptReject, hasRequest}[] $accesspermissions Optional array of $sourceUser's access groups permissions. * @return boolean|string True on success, text message on error, False on unknown error */ private static function excludeUserInGroups($sourceUser, $targetUser, $groupIds, $accesspermissions) { $res = array(); foreach ($groupIds as $gid) { $g = array($gid => self::canPerformAction($targetUser, $targetUser, "exclude", $gid, $accesspermissions)); $res[] = $g; if ($g[$gid] !== true) { continue; } $actormembers = new Default_Model_ActorGroupMembers(); $f1 = new Default_Model_ActorGroupMembersFilter(); $f2 = new Default_Model_ActorGroupMembersFilter(); $f3 = new Default_Model_ActorGroupMembersFilter(); $f1->groupid->equals($gid); $f2->actorid->equals($targetUser->guid); $actormembers->filter->chain($f1, "AND"); $actormembers->filter->chain($f2, "AND"); if (trim($gid) === "-3") { $f3->payload->equals(trim($targetUser->countryID)); $actormembers->filter->chain($f3, "AND"); } if (count($actormembers->items) > 0) { $am = $actormembers->items[0]; $actormembers->remove($am); } } return $res; }
public function getActorGroups() { if ($this->_actorGroups === null) { $ag = new Default_Model_ActorGroupMembers(); $ag->filter->actorid = $this->getGUID(); $ag->refresh(); if (count($ag->items) > 0) { $this->_actorGroups = $ag->items; } else { $this->_actorGroups = array(); } } return $this->_actorGroups; }