ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ILIAS\File\Capabilities\CapabilityBuilder Class Reference
+ Collaboration diagram for ILIAS\File\Capabilities\CapabilityBuilder:

Public Member Functions

 __construct (private \ilObjFileInfoRepository $file_info_repository, private \ilAccessHandler $access, private \ilCtrlInterface $ctrl, private ActionRepository $action_repository, private Services $http, private ?TypeResolver $type_resolver=null, private ?\ilWorkspaceAccessHandler $workspace_access_handler=null)
 
 get (Context $context)
 

Protected Attributes

array $cache = []
 

Private Attributes

array $checks = []
 

Detailed Description

Author
Fabian Schmid fabia.nosp@m.n@sr.nosp@m..solu.nosp@m.tion.nosp@m.s

Definition at line 40 of file CapabilityBuilder.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\File\Capabilities\CapabilityBuilder::__construct ( private \ilObjFileInfoRepository  $file_info_repository,
private \ilAccessHandler  $access,
private \ilCtrlInterface  $ctrl,
private ActionRepository  $action_repository,
private Services  $http,
private ?TypeResolver  $type_resolver = null,
private ?\ilWorkspaceAccessHandler  $workspace_access_handler = null 
)

Definition at line 48 of file CapabilityBuilder.php.

56  {
57  $this->checks = [
58  new ForcedInfo(),
59  new Download(),
60  new Edit(),
61  new EditContent(),
62  new Info(),
63  new Manage(),
64  new None(),
65  new Unzip(),
66  new ViewContent(),
67  ];
68  $this->type_resolver = $this->type_resolver ?? new CoreTypeResolver();
69  $this->workspace_access_handler = $this->workspace_access_handler ?? new \ilWorkspaceAccessHandler();
70  }

Member Function Documentation

◆ get()

ILIAS\File\Capabilities\CapabilityBuilder::get ( Context  $context)

This is the order of priorities when using

See also
CapabilityCollection::getBest() which will return the first unlocked Capability

Definition at line 72 of file CapabilityBuilder.php.

References $check, $context, ILIAS\Repository\access(), ILIAS\File\Capabilities\ANY, ILIAS\Repository\ctrl(), and ILIAS\FileDelivery\http().

Referenced by ilFileStaticURLHandler\handle().

72  : CapabilityCollection
73  {
74  if (isset($this->cache[$context->getNode()])) {
75  return $this->cache[$context->getNode()];
76  }
77 
83  $capabilities = [
84  new Capability(Capabilities::FORCED_INFO_PAGE, ...Permissions::ANY()),
85  new Capability(Capabilities::VIEW_EXTERNAL, Permissions::VIEW_CONTENT),
86  new Capability(Capabilities::EDIT_EXTERNAL, Permissions::EDIT_CONTENT),
87  new Capability(Capabilities::DOWNLOAD, Permissions::READ),
88  new Capability(Capabilities::MANAGE_VERSIONS, Permissions::WRITE),
89  new Capability(Capabilities::EDIT_SETTINGS, Permissions::WRITE),
90  new Capability(Capabilities::INFO_PAGE, ...Permissions::ANY()),
91  new Capability(Capabilities::NONE, Permissions::NONE),
92  new Capability(Capabilities::UNZIP, Permissions::WRITE),
93  ];
94 
95  if ($this->type_resolver->resolveTypeByObjectId($context->getObjectId()) !== 'file') {
96  return new CapabilityCollection($capabilities);
97  }
98 
99  $info = $this->file_info_repository->getByObjectId($context->getObjectId());
100  $helpers = new CheckHelpers(
101  $this->access,
102  $this->ctrl,
103  $this->action_repository,
104  $this->http,
105  $this->workspace_access_handler
106  );
107 
108  $calling_id = $context->getCallingId();
109 
110  if ($calling_id > 0) {
111  $this->ctrl->setParameterByClass(\ilObjFileGUI::class, 'ref_id', $calling_id);
112  }
113 
114  foreach ($capabilities as $capability) {
115  foreach ($this->checks as $check) {
116  if ($check->canUnlock() === $capability->getCapability()) {
117  $capability = $check->maybeUnlock($capability, $helpers, $info, $context);
118  $capability = $check->maybeBuildURI($capability, $helpers, $context);
119  }
120  }
121  }
122  return $this->cache[$context->getNode()] = new CapabilityCollection($capabilities);
123  }
$context
Definition: webdav.php:31
static http()
Fetches the global http state from ILIAS.
$check
Definition: buildRTE.php:81
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $cache

array ILIAS\File\Capabilities\CapabilityBuilder::$cache = []
protected

Definition at line 42 of file CapabilityBuilder.php.

◆ $checks

array ILIAS\File\Capabilities\CapabilityBuilder::$checks = []
private

Definition at line 46 of file CapabilityBuilder.php.


The documentation for this class was generated from the following file: