mirror of
https://github.com/verdigado/organization_folders.git
synced 2024-11-22 04:38:09 +01:00
64 lines
2.1 KiB
PHP
64 lines
2.1 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace OCA\OrganizationFolders\Service;
|
||
|
|
||
|
use OCP\AppFramework\Db\TTransactional;
|
||
|
use OCP\IDBConnection;
|
||
|
|
||
|
use OCA\GroupFolders\Folder\FolderManager;
|
||
|
use OCA\GroupfolderTags\Service\TagService;
|
||
|
|
||
|
use OCA\OrganizationFolders\Model\OrganizationFolder;
|
||
|
use OCA\OrganizationFolders\OrganizationProvider\OrganizationProviderManager;
|
||
|
|
||
|
class OrganizationFolderService {
|
||
|
use TTransactional;
|
||
|
|
||
|
public function __construct(
|
||
|
private IDBConnection $db,
|
||
|
private FolderManager $folderManager,
|
||
|
private TagService $tagService,
|
||
|
private OrganizationProviderManager $organizationProviderManager,
|
||
|
) {
|
||
|
}
|
||
|
|
||
|
public function getAll() {
|
||
|
$result = [];
|
||
|
|
||
|
$tags = $this->tagService->findAllIncludingGroupfolder("organization_folder");
|
||
|
|
||
|
foreach ($tags as $tag) {
|
||
|
$result[] = new OrganizationFolder($tag["group_folder_id"], $tag["mount_point"], $tag["quota"]);
|
||
|
}
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
public function create(string $name, int $quota, ?string $organizationProvider = null,?int $organizationId = null) {
|
||
|
$this->atomic(function () use ($name, $quota) {
|
||
|
$groupfolderId = $this->folderManager->createFolder($name);
|
||
|
$this->folderManager->setFolderQuota($groupfolderId, $quota);
|
||
|
$this->folderManager->setFolderACL($groupfolderId, true);
|
||
|
|
||
|
$this->tagService->update($groupfolderId, "organization_folder");
|
||
|
|
||
|
if(isset($organizationProvider) && $this->organizationProviderManager->hasOrganizationProvider($organizationProvider) && isset($organizationId)) {
|
||
|
$organization = $this->organizationProviderManager->getOrganizationProvider($organizationProvider)->getOrganization($organizationId);
|
||
|
|
||
|
$this->tagService->update($groupfolderId, "organization_provider", $organizationProvider);
|
||
|
$this->tagService->update($groupfolderId, "organization_id", $organization->getId());
|
||
|
}
|
||
|
|
||
|
// TODO: return Model object
|
||
|
|
||
|
}, $this->db);
|
||
|
}
|
||
|
|
||
|
public function applyPermissions(int $id) {
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|