104 lines
3.6 KiB
PHP
104 lines
3.6 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;
|
|
|
|
public function __construct(string $AppName, IRequest $request, IUserSession $userSession,IDBConnection $connection, IGroupManager $groupManager){
|
|
parent::__construct($AppName, $request);
|
|
$this->userSession = $userSession;
|
|
$this->request = $request;
|
|
$this->connection = $connection;
|
|
$this->groupManager = $groupManager;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @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));
|
|
}
|
|
|
|
}
|