2024-10-30 04:45:56 +01:00
< ? php
namespace OCA\OrganizationFolders\Command\Resource ;
use OCP\DB\Exception ;
use Symfony\Component\Console\Input\InputOption ;
use Symfony\Component\Console\Input\InputInterface ;
use Symfony\Component\Console\Output\OutputInterface ;
use OCA\OrganizationFolders\Command\BaseCommand ;
class CreateResource extends BaseCommand {
protected function configure () : void {
$this
2024-11-05 14:05:04 +01:00
-> setName ( 'organization-folders:resources:create' )
2024-10-30 04:45:56 +01:00
-> setDescription ( 'Create a new resource in organization folder' )
-> addOption ( 'organization-folder' , null , InputOption :: VALUE_REQUIRED , 'Id of organization folder to create resource in' )
-> addOption ( 'type' , null , InputOption :: VALUE_REQUIRED , 'Type of resource (valid values: folder)' )
-> addOption ( 'name' , null , InputOption :: VALUE_REQUIRED , 'Name of resource' )
2024-11-06 17:32:33 +01:00
-> addOption ( 'parent-resource' , null , InputOption :: VALUE_OPTIONAL , 'Id of parent resource (leave out if creating at top level in organization folder)' )
-> addOption ( 'inherit-managers' , null , InputOption :: VALUE_REQUIRED , 'Wether managers of the parent level (parent resource or organization folder for top level resources) should have management permissions' );
2024-10-30 04:45:56 +01:00
// folder type options
$this
-> addOption ( 'members-acl-permission' , null , InputOption :: VALUE_OPTIONAL , 'acl permissions for members of resource' )
-> addOption ( 'managers-acl-permission' , null , InputOption :: VALUE_OPTIONAL , 'acl permissions for managers of resource' )
-> addOption ( 'inherited-acl-permission' , null , InputOption :: VALUE_OPTIONAL , 'acl permissions for users with access to the resource level above (or organization in case resource is top-level)' );
parent :: configure ();
}
protected function execute ( InputInterface $input , OutputInterface $output ) : int {
$organizationFolder = $input -> getOption ( 'organization-folder' );
$type = $input -> getOption ( 'type' );
$name = $input -> getOption ( 'name' );
$parentResource = $input -> getOption ( 'parent-resource' );
2024-11-06 17:32:33 +01:00
$inheritManagers = $input -> getOption ( 'inherit-managers' ) === true || $input -> getOption ( 'inherit-managers' ) === " true " ;
2024-10-30 04:45:56 +01:00
$membersAclPermission = $input -> getOption ( 'members-acl-permission' );
$managersAclPermission = $input -> getOption ( 'managers-acl-permission' );
$inheritedAclPermission = $input -> getOption ( 'inherited-acl-permission' );
try {
$resource = $this -> resourceService -> create (
type : $type ,
organizationFolderId : $organizationFolder ,
name : $name ,
2024-11-03 17:24:30 +01:00
parentResourceId : $parentResource ,
2024-11-06 17:32:33 +01:00
active : true ,
inheritManagers : $inheritManagers ,
2024-10-30 04:45:56 +01:00
membersAclPermission : $membersAclPermission ,
managersAclPermission : $managersAclPermission ,
inheritedAclPermission : $inheritedAclPermission ,
);
$this -> writeTableInOutputFormat ( $input , $output , [ $this -> formatTableSerializable ( $resource )]);
return 0 ;
} catch ( Exception $e ) {
$output -> writeln ( " <error>Exception \" { $e -> getMessage () } \" at { $e -> getFile () } line { $e -> getLine () } </error> " );
return 1 ;
}
}
}