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); } }
/** * 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; }