ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Handler.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\Poll\Image;
22
25use ILIAS\Poll\Image\I\HandlerInterface as ilPollImageInterface;
26use ILIAS\Poll\Image\I\Repository\FactoryInterface as ilPollImageRepositoryFactoryInterface;
27use ILIAS\ResourceStorage\Services as ilResourceStorageServices;
29
30class Handler implements ilPollImageInterface
31{
32 protected ilResourceStorageServices $irss;
33 protected ilPollImageRepositoryFactoryInterface $repository;
34
35 public function __construct(
36 ilResourceStorageServices $irss,
37 ilPollImageRepositoryFactoryInterface $repository
38 ) {
39 $this->irss = $irss;
40 $this->repository = $repository;
41 }
42
43 public function uploadImage(
44 ObjectId $object_id,
45 string $file_path,
46 string $file_name,
47 int $user_id
48 ): void {
49 $this->deleteImage(
50 $object_id,
52 );
53 $rid = $this->irss->manage()->stream(
54 Streams::ofResource(fopen($file_path, 'r')),
55 $this->repository->stakeholder()->handler()->withUserId($user_id),
56 $file_name
57 );
58 $key = $this->repository->key()->handler()
59 ->withObjectId($object_id);
60 $values = $this->repository->values()->handler()
61 ->withResourceIdSerialized($rid->serialize());
62 $this->repository->handler()->store($key, $values);
63 }
64
65 public function cloneImage(
66 ObjectId $original_object_id,
67 ObjectId $clone_object_id,
68 int $user_id
69 ): void {
70 $this->deleteImage(
71 $clone_object_id,
73 );
74 $key_clone = $this->repository->key()->handler()
75 ->withObjectId($clone_object_id);
76 $key_original = $this->repository->key()->handler()
77 ->withObjectId($original_object_id);
78 $element_original = $this->repository->handler()->getElement($key_original);
79
80 if ($element_original === null) {
81 return;
82 }
83
84 $rid_original = $element_original->getIRSS()->getResourceIdentification();
85 $rid_clone = $this->irss->manage()->clone($rid_original);
86 $values_clone = $this->repository->values()->handler()
87 ->withResourceIdSerialized($rid_clone->serialize());
88 $this->repository->handler()->store($key_clone, $values_clone);
89 }
90
91 public function deleteImage(
92 ObjectId $object_id,
93 int $user_id
94 ): void {
95 $key = $this->repository->key()->handler()
96 ->withObjectId($object_id);
97 $existing_element = $this->repository->handler()->getElement($key);
98 if (!is_null($existing_element)) {
99 $existing_element->getIRSS()->delete($user_id);
100 $this->repository->handler()->deleteElement($existing_element->getKey());
101 }
102 }
103
104 public function getThumbnailImageURL(
105 ObjectId $object_id
106 ): null|string {
107 $key = $this->repository->key()->handler()
108 ->withObjectId($object_id);
109 $element = $this->repository->handler()->getElement($key);
110 if (is_null($element)) {
111 return null;
112 }
113 return $element->getIRSS()->getThumbnailImageURL();
114 }
115
116 public function getProcessedImageURL(
117 ObjectId $object_id
118 ): null|string {
119 $key = $this->repository->key()->handler()
120 ->withObjectId($object_id);
121 $element = $this->repository->handler()->getElement($key);
122 if (is_null($element)) {
123 return null;
124 }
125 return $element->getIRSS()->getProcessedImageURL();
126 }
127
128 public function getUnprocessedImageURL(
129 ObjectId $object_id
130 ): null|string {
131 $key = $this->repository->key()->handler()
132 ->withObjectId($object_id);
133 $element = $this->repository->handler()->getElement($key);
134 if (is_null($element)) {
135 return null;
136 }
137 return $element->getIRSS()->getUnprocessedImageURL();
138 }
139
140 public function getRessource(
141 ObjectId $object_id
142 ): null|Revision {
143 $key = $this->repository->key()->handler()
144 ->withObjectId($object_id);
145 $element = $this->repository->handler()->getElement($key);
146 if (is_null($element)) {
147 return null;
148 }
149 return $element->getIRSS()->getResource();
150 }
151}
Stream factory which enables the user to create streams without the knowledge of the concrete class.
Definition: Streams.php:32
static ofResource($resource)
Wraps an already created resource with the stream abstraction.
Definition: Streams.php:64
ilPollImageRepositoryFactoryInterface $repository
Definition: Handler.php:33
deleteImage(ObjectId $object_id, int $user_id)
Definition: Handler.php:91
cloneImage(ObjectId $original_object_id, ObjectId $clone_object_id, int $user_id)
Definition: Handler.php:65
getProcessedImageURL(ObjectId $object_id)
Definition: Handler.php:116
getThumbnailImageURL(ObjectId $object_id)
Definition: Handler.php:104
uploadImage(ObjectId $object_id, string $file_path, string $file_name, int $user_id)
Definition: Handler.php:43
getRessource(ObjectId $object_id)
Definition: Handler.php:140
__construct(ilResourceStorageServices $irss, ilPollImageRepositoryFactoryInterface $repository)
Definition: Handler.php:35
getUnprocessedImageURL(ObjectId $object_id)
Definition: Handler.php:128
ilResourceStorageServices $irss
Definition: Handler.php:32