mirror of
https://github.com/verdigado/organization_folders.git
synced 2024-11-24 13:40:27 +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\GetOrganizationFolder</command>
|
||||||
<command>OCA\OrganizationFolders\Command\OrganizationFolder\ListOrganizationFolders</command>
|
<command>OCA\OrganizationFolders\Command\OrganizationFolder\ListOrganizationFolders</command>
|
||||||
<command>OCA\OrganizationFolders\Command\OrganizationFolder\CreateOrganizationFolder</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\OrganizationFolder\RemoveOrganizationFolder</command>
|
||||||
<command>OCA\OrganizationFolders\Command\Resource\CreateResource</command>
|
<command>OCA\OrganizationFolders\Command\Resource\CreateResource</command>
|
||||||
<command>OCA\OrganizationFolders\Command\Resource\ListResources</command>
|
<command>OCA\OrganizationFolders\Command\Resource\ListResources</command>
|
||||||
|
|
|
@ -15,16 +15,25 @@ class CreateOrganizationFolder extends BaseCommand {
|
||||||
->setName('organization-folders:create')
|
->setName('organization-folders:create')
|
||||||
->setDescription('Create a new organization folder')
|
->setDescription('Create a new organization folder')
|
||||||
->addOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the 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();
|
parent::configure();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function execute(InputInterface $input, OutputInterface $output): int {
|
protected function execute(InputInterface $input, OutputInterface $output): int {
|
||||||
$name = $input->getOption('name');
|
$name = $input->getOption('name');
|
||||||
$quota = $input->getOption('quota');
|
$quota = $input->getOption('quota');
|
||||||
|
$organizationProviderId = $input->getOption('organization-provider');
|
||||||
|
$organizationId = $input->getOption('organization-id');
|
||||||
|
|
||||||
try {
|
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)]);
|
$this->writeTableInOutputFormat($input, $output, [$this->formatTableSerializable($organizationFolder)]);
|
||||||
return 0;
|
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);
|
$organization = $this->organizationProviderManager->getOrganizationProvider($organizationProvider)->getOrganization($organizationId);
|
||||||
|
|
||||||
$this->tagService->update($groupfolderId, "organization_provider", $organizationProvider);
|
$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(
|
$organizationFolder = new OrganizationFolder(
|
||||||
|
@ -90,6 +90,47 @@ class OrganizationFolderService {
|
||||||
}, $this->db);
|
}, $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) {
|
public function applyPermissions(int $id) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue