public function save(Default_Model_ActorGroupMember $value)
 {
     global $application;
     $data = array();
     if (!isnull($value->getId())) {
         $data['id'] = $value->getId();
     }
     if (!isnull($value->getGroupID())) {
         $data['groupid'] = $value->getGroupID();
     }
     if (!isnull($value->getActorGUID())) {
         $data['actorid'] = $value->getActorGUID();
     }
     if (!isnull($value->getPayload())) {
         $data['payload'] = $value->getPayload();
     }
     $q1 = '';
     $q2 = '';
     if (null === ($id = $value->id)) {
         unset($data['']);
         $this->getDbTable()->insert($data);
     } else {
         $s = $this->getDbTable()->getAdapter()->quoteInto($q1, $q2);
         $this->getDbTable()->update($data, $s);
     }
 }
Пример #2
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;
 }