ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ReadOnlyDocumentRepository.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
29 use Exception;
30 
32 {
34  private const WHITELIST = [
35  'all',
36  'countAll',
37  'select',
38  'find',
39  'findId',
40  'documentFromRow',
41  'documentTable',
42  'exists',
43  ];
44 
45  public function __construct(private readonly DocumentRepository $repository)
46  {
47  }
48 
52  public function all(int $offset = 0, ?int $limit = null): array
53  {
54  $this->checkAccess(__FUNCTION__);
55  return $this->repository->all();
56  }
57 
58  public function countAll(): int
59  {
60  $this->checkAccess(__FUNCTION__);
61  return $this->repository->countAll();
62  }
63 
68  public function select(array $ids): array
69  {
70  $this->checkAccess(__FUNCTION__);
71  return $this->repository->select($ids);
72  }
73 
77  public function find(int $id): Result
78  {
79  $this->checkAccess(__FUNCTION__);
80  return $this->repository->find($id);
81  }
82 
86  public function findId(DocumentId $document_id): Result
87  {
88  $this->checkAccess(__FUNCTION__);
89  return $this->repository->findId($id);
90  }
91 
92  public function createDocument(string $title, DocumentContent $content): void
93  {
94  $this->checkAccess(__FUNCTION__);
95  $this->repository->createDocument($title, $content);
96  }
97 
98  public function createCriterion(Document $document, CriterionContent $content): void
99  {
100  $this->checkAccess(__FUNCTION__);
101  $this->repository->createCriterion($document, $content);
102  }
103 
104  public function deleteDocument(Document $document): void
105  {
106  $this->checkAccess(__FUNCTION__);
107  $this->repository->deleteDocument($document);
108  }
109 
110  public function deleteCriterion(int $criterion_id): void
111  {
112  $this->checkAccess(__FUNCTION__);
113  $this->repository->deleteCriterion($criterion_id);
114  }
115 
116  public function updateDocumentTitle(DocumentId $document_id, string $title): void
117  {
118  $this->checkAccess(__FUNCTION__);
119  $this->repository->updateDocumentTitle($document_id, $title);
120  }
121 
122  public function updateDocumentContent(DocumentId $document_id, DocumentContent $content): void
123  {
124  $this->checkAccess(__FUNCTION__);
125  $this->repository->updateDocumentContent($document_id, $content);
126  }
127 
128  public function updateDocumentOrder(DocumentId $document_id, int $order): void
129  {
130  $this->checkAccess(__FUNCTION__);
131  $this->repository->updateDocumentOrder($document_id, $order);
132  }
133 
134  public function updateCriterionContent(int $criterion_id, CriterionContent $content): void
135  {
136  $this->checkAccess(__FUNCTION__);
137  $this->repository->updateCriterionContent($criterion_id, $content);
138  }
139 
140  public function documentFromRow(array $row, array $criteria): Document
141  {
142  $this->checkAccess(__FUNCTION__);
143  return $this->repository->documentFromRow($row, $criteria);
144  }
145 
146  public function documentTable(): string
147  {
148  $this->checkAccess(__FUNCTION__);
149  return $this->repository->documentTable();
150  }
151 
152  public function exists(string $doc_id_name): string
153  {
154  $this->checkAccess(__FUNCTION__);
155  return $this->repository->exists($doc_id_name);
156  }
157 
158  private function checkAccess(string $method): void
159  {
160  if (!in_array($method, self::WHITELIST, true)) {
161  throw new Exception('You are not allowed to call this method.');
162  }
163  }
164 }
createCriterion(Document $document, CriterionContent $content)
A result encapsulates a value or an error and simplifies the handling of those.
Definition: Result.php:14
updateCriterionContent(int $criterion_id, CriterionContent $content)
__construct(private readonly DocumentRepository $repository)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
updateDocumentContent(DocumentId $document_id, DocumentContent $content)