Source of file CreateFolderMutationCreator.php
Size: 2,548 Bytes - Last Modified: 2021-12-23T10:27:34+00:00
/var/www/docs.ssmods.com/process/src/_legacy/GraphQL/CreateFolderMutationCreator.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | <?php namespace SilverStripe\AssetAdmin\GraphQL; use GraphQL\Type\Definition\ResolveInfo; use SilverStripe\Assets\Folder; use SilverStripe\GraphQL\MutationCreator; use SilverStripe\GraphQL\OperationResolver; use SilverStripe\Versioned\Versioned; use SilverStripe\GraphQL\Util\CaseInsensitiveFieldAccessor; use SilverStripe\GraphQL\Manager; if (!class_exists(MutationCreator::class)) { return; } /** * API available but currently not used, as create folder uses FormBuilder * * @deprecated 4.8..5.0 Use silverstripe/graphql:^4 functionality. */ class CreateFolderMutationCreator extends MutationCreator implements OperationResolver { /** * @var CaseInsensitiveFieldAccessor */ protected $accessor; public function __construct(Manager $manager = null) { $this->accessor = new CaseInsensitiveFieldAccessor(); parent::__construct($manager); } public function attributes() { return [ 'name' => 'createFolder', ]; } public function type() { return $this->manager->getType('FileInterface'); } public function args() { return [ 'folder' => [ 'type' => $this->manager->getType('FolderInput') ], ]; } public function resolve($object, array $args, $context, ResolveInfo $info) { $parentID = isset($args['folder']['parentId']) ? intval($args['folder']['parentId']) : 0; if ($parentID) { $parent = Versioned::get_by_stage(Folder::class, Versioned::DRAFT)->byID($parentID); if (!$parent) { throw new \InvalidArgumentException(sprintf( '%s#%s not found', Folder::class, $parentID )); } } // Check permission $canCreateContext = []; foreach ($args['folder'] as $name => $val) { $canCreateContext[$this->accessor->getObjectFieldName(Folder::singleton(), $name)] = $val; } if (!Folder::singleton()->canCreate($context['currentUser'] ?? null, $canCreateContext)) { throw new \InvalidArgumentException(sprintf( '%s create not allowed', Folder::class )); } $folder = Folder::create(); foreach ($args['folder'] as $name => $val) { $this->accessor->setValue($folder, $name, $val); } $folder->writeToStage(Versioned::DRAFT); return $folder; } } |