Пример #1
0
 /**
  * Include $targetUser in 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 includeUserInGroups($sourceUser, $targetUser, $groupIds, $accesspermissions)
 {
     $res = array();
     foreach ($groupIds as $gid) {
         $g = array($gid => self::canPerformAction($targetUser, $targetUser, "include", $gid, $accesspermissions));
         $res[] = $g;
         if ($g[$gid] !== true) {
             continue;
         }
         //Check if user is already in access group, then ignore
         if (self::inAllAccessGroups($targetUser, array($gid)) === true) {
             continue;
         }
         $actormember = new Default_Model_ActorGroupMember();
         $actormember->groupID = $gid;
         $actormember->actorGUID = $targetUser->guid;
         if (trim($gid) === "-3") {
             $actormember->payload = $targetUser->countryID;
         }
         $actormember->save();
         //if targetuser has a pending reqeust to join current group, then accept the request
         foreach ($accesspermissions as $ap) {
             if (trim($ap["id"]) === trim($gid) && is_numeric($ap["hasRequest"]) && intval($ap["hasRequest"]) > 0) {
                 self::acceptAccessGroupRequest($sourceUser, $targetUser, intval($ap["hasRequest"]));
             }
         }
     }
     return $res;
 }