da_agency/lib/Controller/PublicController.php

107 lines
3.7 KiB
PHP

<?php
declare(strict_types=1);
namespace OCA\Agency\Controller;
use OCP\AppFramework\OCSController;
use OCP\IRequest;
use OCP\AppFramework\Http\DataResponse;
use OCP\IDBConnection;
use OCP\IUserSession;
use OCP\IGroupManager;
use OCP\IUserManager;
use OCP\IGroup;
use OCA\GroupFolders\Folder\FolderManager;
class PublicController extends OCSController {
protected $userSession;
protected $request;
protected $connection;
protected $groupManager;
protected $userManager;
public function __construct(string $AppName, IRequest $request, IUserSession $userSession,IDBConnection $connection, IGroupManager $groupManager, IUserManager $userManager){
parent::__construct($AppName, $request);
$this->userSession = $userSession;
$this->request = $request;
$this->connection = $connection;
$this->groupManager = $groupManager;
$this->userManager = $userManager;
}
/**
*
* @NoCSRFRequired
* @NoAdminRequired
*/
public function createGroupFolder(string $gid, string $aid, bool $newagency=false): DataResponse{
if($newagency == false){
$folderManager = new FolderManager($this->connection, $this->groupManager);
$newFolderIdAG = $folderManager->createFolder('Agenturdaten_'.$aid);
## Hinzufügen der Mitarbeitergruppe der entsprechenden Agentur
$folderManager->addApplicableGroup($newFolderIdAG, $gid);
$folderManager->setGroupPermissions($newFolderIdAG, $gid, '31');
## Hinzufügen der Admingruppe, damit die weitere Dateien und Ordneraktionen bei der #Migration klappen
$folderManager->addApplicableGroup($newFolderIdAG, "admin");
$folderManager->setGroupPermissions($newFolderIdAG, "admin", '31');
# Set 2 GB Quota
$folderManager->setFolderQuota($newFolderIdAG, 2147483648);
}
// Groupfolder, when a new Agency is registered
else{
$folderManager = new FolderManager($this->connection, $this->groupManager);
$newFolderIdAG = $folderManager->createFolder('Agenturdaten');
## Hinzufügen der Mitarbeitergruppe der entsprechenden Agentur
$folderManager->addApplicableGroup($newFolderIdAG, $gid);
$folderManager->setGroupPermissions($newFolderIdAG, $gid, '31');
}
return new DataResponse(array("status" => $aid));
}
/**
* Updating the GroupQuota!
*
*
* @NoCSRFRequired
* @NoAdminRequired
*/
public function updateAgencyGroupQuota(string $quota, string $user): DataResponse{
//Updating the UserQuota
$responsemessage = "";
$folderManager = new FolderManager($this->connection, $this->groupManager);
//Find GroupFolder for this User
$groupfolders = $folderManager->getFoldersForUser($this->userManager->get($user));
for($i = 0; $i < sizeof($groupfolders); $i++){
// Groupfolder search
if($groupfolders[$i]['mount_point'] == "Agenturdaten"){
// Groupfolder for Agency found, set Quota
$folderManager->setFolderQuota($groupfolders[$i]['folder_id'], intval($quota));
$responsemessage = "new quota set";
}
break;
}
return new DataResponse(array("responsemessage" => $responsemessage));
}
/**
*
* @NoCSRFRequired
* @NoAdminRequired
* @PublicPage
*
*/
public function renameAgencyGroup(string $name, string $id): DataResponse{
$this->groupManager->get($id)->setDisplayName($name);
return new DataResponse(array("data" => $name." ".$id));
}
}