ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
Handler.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 namespace ILIAS\Poll\Image;
22 
25 use ILIAS\Poll\Image\I\HandlerInterface as ilPollImageInterface;
26 use ILIAS\Poll\Image\I\Repository\FactoryInterface as ilPollImageRepositoryFactoryInterface;
29 
30 class Handler implements ilPollImageInterface
31 {
33  protected ilPollImageRepositoryFactoryInterface $repository;
34 
35  public function __construct(
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,
51  $user_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,
72  $user_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 }
getUnprocessedImageURL(ObjectId $object_id)
Definition: Handler.php:128
ilResourceStorageServices $irss
Definition: Handler.php:32
repository()
description: > Example for rendering a repository card
Definition: repository.php:33
__construct(ilResourceStorageServices $irss, ilPollImageRepositoryFactoryInterface $repository)
Definition: Handler.php:35
getRessource(ObjectId $object_id)
Definition: Handler.php:140
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
uploadImage(ObjectId $object_id, string $file_path, string $file_name, int $user_id)
Definition: Handler.php:43
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
ilPollImageRepositoryFactoryInterface $repository
Definition: Handler.php:33
getThumbnailImageURL(ObjectId $object_id)
Definition: Handler.php:104