mirror of
https://github.com/verdigado/organization_folders.git
synced 2024-11-21 11:37:26 +01:00
added occ command to update organization folder
This commit is contained in:
parent
b653a751dc
commit
5a2f872b2d
4 changed files with 106 additions and 3 deletions
|
@ -22,6 +22,7 @@
|
|||
<command>OCA\OrganizationFolders\Command\OrganizationFolder\GetOrganizationFolder</command>
|
||||
<command>OCA\OrganizationFolders\Command\OrganizationFolder\ListOrganizationFolders</command>
|
||||
<command>OCA\OrganizationFolders\Command\OrganizationFolder\CreateOrganizationFolder</command>
|
||||
<command>OCA\OrganizationFolders\Command\OrganizationFolder\UpdateOrganizationFolder</command>
|
||||
<command>OCA\OrganizationFolders\Command\OrganizationFolder\RemoveOrganizationFolder</command>
|
||||
<command>OCA\OrganizationFolders\Command\Resource\CreateResource</command>
|
||||
<command>OCA\OrganizationFolders\Command\Resource\ListResources</command>
|
||||
|
|
|
@ -15,16 +15,25 @@ class CreateOrganizationFolder extends BaseCommand {
|
|||
->setName('organization-folders:create')
|
||||
->setDescription('Create a new organization folder')
|
||||
->addOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the new organization folder')
|
||||
->addOption('quota', null, InputOption::VALUE_REQUIRED, 'Storage Quota of the new organization folder');
|
||||
->addOption('quota', null, InputOption::VALUE_REQUIRED, 'Storage Quota of the new organization folder')
|
||||
->addOption('organization-provider', null, InputOption::VALUE_OPTIONAL, 'Organization provider of the organization this folder is part of')
|
||||
->addOption('organization-id', null, InputOption::VALUE_OPTIONAL, 'Organization id of the organization this folder is part of');
|
||||
parent::configure();
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int {
|
||||
$name = $input->getOption('name');
|
||||
$quota = $input->getOption('quota');
|
||||
$organizationProviderId = $input->getOption('organization-provider');
|
||||
$organizationId = $input->getOption('organization-id');
|
||||
|
||||
try {
|
||||
$organizationFolder = $this->organizationFolderService->create($name, $quota);
|
||||
$organizationFolder = $this->organizationFolderService->create(
|
||||
name: $name,
|
||||
quota: $quota,
|
||||
organizationProvider: $organizationProviderId,
|
||||
organizationId: $organizationId,
|
||||
);
|
||||
|
||||
$this->writeTableInOutputFormat($input, $output, [$this->formatTableSerializable($organizationFolder)]);
|
||||
return 0;
|
||||
|
|
52
lib/Command/OrganizationFolder/UpdateOrganizationFolder.php
Normal file
52
lib/Command/OrganizationFolder/UpdateOrganizationFolder.php
Normal file
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
namespace OCA\OrganizationFolders\Command\OrganizationFolder;
|
||||
|
||||
use OCP\DB\Exception;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
use OCA\OrganizationFolders\Command\BaseCommand;
|
||||
|
||||
class UpdateOrganizationFolder extends BaseCommand {
|
||||
protected function configure(): void {
|
||||
$this
|
||||
->setName('organization-folders:update')
|
||||
->setDescription('Update a organization folder')
|
||||
->addArgument('id', InputArgument::REQUIRED, 'Id of the organization folder to update')
|
||||
->addOption('name', null, InputOption::VALUE_OPTIONAL, 'New name of the organization folder')
|
||||
->addOption('quota', null, InputOption::VALUE_OPTIONAL, 'New storage quota of the organization folder')
|
||||
->addOption('organization-provider', null, InputOption::VALUE_OPTIONAL, 'New organization provider of the organization this folder will be part of')
|
||||
->addOption('organization-id', null, InputOption::VALUE_OPTIONAL, 'New Organization id of the organization this folder will be part of');
|
||||
parent::configure();
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int {
|
||||
$id = (int)$input->getArgument('id');
|
||||
$name = $input->getOption('name');
|
||||
$quota = $input->getOption('quota');
|
||||
$organizationProviderId = $input->getOption('organization-provider');
|
||||
|
||||
if(ctype_digit($input->getOption('organization-id'))) {
|
||||
$organizationId = (int)$input->getOption('organization-id');
|
||||
}
|
||||
|
||||
try {
|
||||
$organizationFolder = $this->organizationFolderService->update(
|
||||
id: $id,
|
||||
name: $name,
|
||||
quota: $quota,
|
||||
organizationProviderId: $organizationProviderId,
|
||||
organizationId: $organizationId,
|
||||
);
|
||||
|
||||
$this->writeTableInOutputFormat($input, $output, [$this->formatTableSerializable($organizationFolder)]);
|
||||
return 0;
|
||||
} catch (Exception $e) {
|
||||
$output->writeln("<error>Exception \"{$e->getMessage()}\" at {$e->getFile()} line {$e->getLine()}</error>");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -75,7 +75,7 @@ class OrganizationFolderService {
|
|||
$organization = $this->organizationProviderManager->getOrganizationProvider($organizationProvider)->getOrganization($organizationId);
|
||||
|
||||
$this->tagService->update($groupfolderId, "organization_provider", $organizationProvider);
|
||||
$this->tagService->update($groupfolderId, "organization_id", $organization->getId());
|
||||
$this->tagService->update($groupfolderId, "organization_id", (string)$organization->getId());
|
||||
}
|
||||
|
||||
$organizationFolder = new OrganizationFolder(
|
||||
|
@ -90,6 +90,47 @@ class OrganizationFolderService {
|
|||
}, $this->db);
|
||||
}
|
||||
|
||||
public function update(
|
||||
int $id,
|
||||
?string $name = null,
|
||||
?int $quota = null,
|
||||
?string $organizationProviderId = null,
|
||||
?int $organizationId = null
|
||||
): OrganizationFolder {
|
||||
return $this->atomic(function () use ($id, $name, $quota, $organizationProviderId, $organizationId) {
|
||||
if(isset($name)) {
|
||||
$this->folderManager->renameFolder($id, $name);
|
||||
}
|
||||
|
||||
if(isset($quota)) {
|
||||
$this->folderManager->setFolderQuota($id, $quota);
|
||||
}
|
||||
|
||||
if(isset($organizationProviderId) || isset($organizationId)) {
|
||||
if(!isset($organizationProviderId)) {
|
||||
$organizationProviderId = $this->tagService->find($id, "organization_provider")->getTagValue();
|
||||
}
|
||||
|
||||
if(!$this->organizationProviderManager->hasOrganizationProvider($organizationProviderId)) {
|
||||
throw new \Exception("organization provider not found");
|
||||
}
|
||||
|
||||
$organizationProvider = $this->organizationProviderManager->getOrganizationProvider($organizationProviderId);
|
||||
|
||||
if(!isset($organizationId)) {
|
||||
$organizationId = (int)$this->tagService->find($id, "organization_id")->getTagValue();
|
||||
}
|
||||
|
||||
$organization = $organizationProvider->getOrganization($organizationId);
|
||||
|
||||
$this->tagService->update($id, "organization_provider", $organizationProviderId);
|
||||
$this->tagService->update($id, "organization_id", (string)$organization->getId());
|
||||
}
|
||||
|
||||
return $this->find($id);
|
||||
}, $this->db);
|
||||
}
|
||||
|
||||
public function applyPermissions(int $id) {
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue