agencyMapper = $agencyMapper; $this->groupManager = $groupManager; $this->userSession = $userSession; $this->userManager = $userManager; } /** * Creates a new Agency and save it to the database. * * @param: * agencygid - GrouopID of the Agency * agencydirid - ID for the Grouopfolder for AgencyData * standarddirid - ID for the Groupfolder for all Uploaded Standardfiles */ public function createAgencyOnReg(string $agencygid, int $agencydirid, int $standarddirid){ $agencyService = new AgencyService($this->agencyMapper); return $agencyService->create($agencygid, $agencydirid, $standarddirid); } /** * getAgencyByUser * * Return the complete Agency-Data by filtering the id from default agency-group, ex: agency_1 -> 1 (int) * */ public function getAgencyByUser(){ $groups = $this->groupManager->getUserGroups($this->userSession->getUser()); $agency_group_id = ""; foreach($groups as $group){ if(str_contains($group->getGId(), 'agencymaingroupid_')){ $agency_group_id_array = explode("_", strval($group->getGId())); $agency_group_id = $agency_group_id_array[0]."_".$agency_group_id_array[1]; } } return $this->agencyMapper->getAgencyByGId($agency_group_id); #return $agency_group_id; } /** * Return only the AgencyGroupId */ public function getAgencyGIdByUser(){ $groups = $this->groupManager->getUserGroups($this->userSession->getUser()); $agency_group_id = ""; foreach($groups as $group){ if(str_contains($group->getGId(), 'agencymaingroupid_')){ $agency_group_id_array = explode("_", strval($group->getGId())); $agency_group_id = $agency_group_id_array[0]."_".$agency_group_id_array[1]; } } return $agency_group_id; } // Return an random Id-Ele for generating single IDs public function generateRandomId($length = 6) { $characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } /** * Returns all users of an Agency by filtering the Main Agency Group Id out * * Returns an Array of IUser-Objects. Filtering is by logged User */ public function getagencycontributors(){ $group = $this->groupManager->get($this->getAgencyGIdByUser()); $users = $group->getUsers(); $return_users = array(); // Creating a nice User-JSON-Array foreach($users as $user){ // TODO: Hier muss noch sichergestellt werden, dass der aktuelle Nutzer, wenn er in der Admingruppe ist, sich selbst nicht entfernen kann array_push($return_users, array("user" => $user->getUID(), "displayName" => $user->getDisplayName())); } return $return_users; } # TODO: Hier prüfen, ob alle User in der gleichen Agentur sind und er eingeloggte User auch wirklich das Recht dazu hat // TODO: Hier noch sicherstellen, dass der aktuell eingeloggte User sich nicht selbst aus der Admingruppe werfen darf! public function updateagencygroupcontributors(string $gid, array $users){ // Getting the Group $groupToChange = $this->groupManager->get($gid); // Getting the Users in Group $usersInGroup = $groupToChange->getUsers(); // Preparing new Users, creating Array of Users $newUsersInGroup = array(); foreach($users as $user) { $tempuser = $this->userManager->get($user); array_push($newUsersInGroup, $tempuser); } // Removing not existing users foreach($usersInGroup as $user) { if($groupToChange->inGroup($user) == true && in_array($newUsersInGroup, $user) == false) { $groupToChange->removeUser($user); } } // Adding new Users foreach($newUsersInGroup as $user) { if($groupToChange->inGroup($user) == false) { $groupToChange->addUser($user); } } return $users; } }