ILIAS  trunk Revision v12.0_alpha-1329-g1094ddb0c33
ContainerManager.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
28
32final class ContainerManager extends BaseManager
33{
34 private function normalizePath(string $path_inside_container): string
35 {
36 // Paths inside a ZIP container must be relative (no leading slash).
37 // Some extraction tools (e.g. Windows Explorer) hide entries whose
38 // names start with "/". See Mantis 0045580 / 0047237.
39 return rtrim(ltrim($path_inside_container, './'), '/');
40 }
41
42 public function containerFromUpload(
43 UploadResult $result,
44 ResourceStakeholder $stakeholder,
45 ?string $revision_title = null
47 // check if stream is a ZIP
48 $this->checkZIP(mime_content_type($result->getMimeType()));
49
50 return $this->upload($result, $stakeholder, $revision_title);
51 }
52
53 public function containerFromStream(
54 FileStream $stream,
55 ResourceStakeholder $stakeholder,
56 ?string $revision_title = null
58 // check if stream is a ZIP
59 $this->checkZIP(mime_content_type($stream->getMetadata()['uri']));
60
61 return $this->newStreamBased(
62 $stream,
63 $stakeholder,
65 $revision_title
66 );
67 }
68
71 string $path_inside_container
72 ): bool {
73 $path_inside_container = $this->normalizePath($path_inside_container);
74 if (empty($path_inside_container)) {
75 return false;
76 }
77 return $this->resource_builder->createDirectoryInsideContainer(
78 $this->getResource($container),
79 $path_inside_container
80 );
81 }
82
85 string $path_inside_container
86 ): bool {
87 if (empty($path_inside_container)) {
88 return false;
89 }
90 return $this->resource_builder->removePathInsideContainer(
91 $this->getResource($container),
92 $path_inside_container
93 );
94 }
95
96 public function addUploadToContainer(
98 UploadResult $result,
99 string $parent_path_inside_container,
100 ): bool {
101 $parent_path_inside_container = $this->normalizePath($parent_path_inside_container);
102 return $this->resource_builder->addUploadToContainer(
103 $this->getResource($container),
104 $result,
105 $parent_path_inside_container
106 );
107 }
108
109 public function addStreamToContainer(
111 FileStream $stream,
112 string $path_inside_container,
113 ): bool {
114 $path_inside_container = $this->normalizePath($path_inside_container);
115 if (empty($path_inside_container)) {
116 return false;
117 }
118 return $this->resource_builder->addStreamToContainer(
119 $this->getResource($container),
120 $stream,
121 $path_inside_container
122 );
123 }
124
125}
newStreamBased(FileStream $stream, ResourceStakeholder $stakeholder, ResourceType $type, ?string $revision_title=null)
Definition: BaseManager.php:79
containerFromStream(FileStream $stream, ResourceStakeholder $stakeholder, ?string $revision_title=null)
createDirectoryInsideContainer(ResourceIdentification $container, string $path_inside_container)
removePathInsideContainer(ResourceIdentification $container, string $path_inside_container)
addUploadToContainer(ResourceIdentification $container, UploadResult $result, string $parent_path_inside_container,)
normalizePath(string $path_inside_container)
addStreamToContainer(ResourceIdentification $container, FileStream $stream, string $path_inside_container,)
containerFromUpload(UploadResult $result, ResourceStakeholder $stakeholder, ?string $revision_title=null)
upload(UploadResult $result, ResourceStakeholder $stakeholder, ?string $revision_title=null)
@description Creates a new resource from an upload, the status in this case is always PUBLISHED.
Definition: Manager.php:38
The base interface for all filesystem streams.
Definition: FileStream.php:32
if(!file_exists('../ilias.ini.php'))
$container
@noRector
Definition: wac.php:37