‪TYPO3CMS  11.5
AbstractFileCollection.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
22 
28 {
34  protected static ‪$storageTableName = 'sys_file_collection';
35 
42  protected static ‪$type;
43 
50  protected static ‪$itemsCriteriaField;
51 
58  protected ‪$itemsCriteria;
59 
65  protected ‪$itemTableName = 'sys_file';
66 
72  public function ‪setDescription(‪$description)
73  {
74  $this->description = ‪$description;
75  }
76 
82  #[\ReturnTypeWillChange]
83  public function ‪key()
84  {
86  $currentRecord = $this->storage->current();
87  return $currentRecord->getIdentifier();
88  }
89 
96  protected function ‪getItemUidList($includeTableName = false)
97  {
98  $list = [];
100  foreach ($this->storage as $entry) {
101  $list[] = $this->‪getItemTableName() . '_' . $entry->getUid();
102  }
103  return implode(',', $list);
104  }
105 
112  protected function ‪getPersistableDataArray()
113  {
114  return [
115  'title' => $this->‪getTitle(),
116  'type' => static::$type,
117  'description' => $this->‪getDescription(),
118  static::$itemsCriteriaField => $this->‪getItemsCriteria(),
119  ];
120  }
121 
128  public function ‪toArray()
129  {
130  $itemArray = [];
132  foreach ($this->storage as $item) {
133  $itemArray[] = $item->toArray();
134  }
135  return [
136  'uid' => $this->‪getIdentifier(),
137  'title' => $this->‪getTitle(),
138  'description' => $this->‪getDescription(),
139  'items' => $itemArray,
140  ];
141  }
142 
148  public function ‪getItems()
149  {
150  $itemArray = [];
152  foreach ($this->storage as $item) {
153  $itemArray[] = $item;
154  }
155  return $itemArray;
156  }
157 
165  public function ‪fromArray(array $array)
166  {
167  $this->uid = $array['uid'];
168  $this->title = $array['title'];
169  $this->description = $array['description'];
170  $this->itemsCriteria = $array[static::$itemsCriteriaField];
171  }
172 
178  public function ‪getItemsCriteria()
179  {
181  }
182 
188  public function ‪setItemsCriteria(‪$itemsCriteria)
189  {
190  $this->itemsCriteria = ‪$itemsCriteria;
191  }
192 
198  public function ‪add(‪FileInterface $data)
199  {
200  $this->storage->push($data);
201  }
202 
208  public function ‪addAll(‪CollectionInterface $other)
209  {
211  foreach ($other as $value) {
212  $this->‪add($value);
213  }
214  }
215 
221  public function remove(‪File $file)
222  {
223  $offset = 0;
225  foreach ($this->storage as $value) {
226  if ($value === $file) {
227  break;
228  }
229  $offset++;
230  }
231  $this->storage->offsetUnset($offset);
232  }
233 
237  public function ‪removeAll()
238  {
239  $this->storage = new \SplDoublyLinkedList();
240  }
241 }
‪TYPO3\CMS\Core\Resource\Collection
Definition: AbstractFileCollection.php:16
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection
Definition: AbstractFileCollection.php:28
‪TYPO3\CMS\Core\Resource\FileInterface
Definition: FileInterface.php:22
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\addAll
‪addAll(CollectionInterface $other)
Definition: AbstractFileCollection.php:203
‪TYPO3\CMS\Core\Collection\AbstractRecordCollection\getTitle
‪string getTitle()
Definition: AbstractRecordCollection.php:224
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\key
‪string key()
Definition: AbstractFileCollection.php:78
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\$type
‪static string $type
Definition: AbstractFileCollection.php:40
‪TYPO3\CMS\Core\Collection\AbstractRecordCollection
Definition: AbstractRecordCollection.php:40
‪TYPO3\CMS\Core\Collection\CollectionInterface
Definition: CollectionInterface.php:29
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\$itemsCriteria
‪mixed $itemsCriteria
Definition: AbstractFileCollection.php:54
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\$itemsCriteriaField
‪static string $itemsCriteriaField
Definition: AbstractFileCollection.php:47
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\getItemUidList
‪string getItemUidList($includeTableName=false)
Definition: AbstractFileCollection.php:91
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\add
‪add(FileInterface $data)
Definition: AbstractFileCollection.php:193
‪TYPO3\CMS\Core\Collection\AbstractRecordCollection\getItemTableName
‪string getItemTableName()
Definition: AbstractRecordCollection.php:274
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\fromArray
‪fromArray(array $array)
Definition: AbstractFileCollection.php:160
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\setItemsCriteria
‪setItemsCriteria($itemsCriteria)
Definition: AbstractFileCollection.php:183
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:24
‪TYPO3\CMS\Core\Collection\AbstractRecordCollection\$description
‪string $description
Definition: AbstractRecordCollection.php:69
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\toArray
‪array toArray()
Definition: AbstractFileCollection.php:123
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\removeAll
‪removeAll()
Definition: AbstractFileCollection.php:232
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\getPersistableDataArray
‪array getPersistableDataArray()
Definition: AbstractFileCollection.php:107
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\getItems
‪array getItems()
Definition: AbstractFileCollection.php:143
‪TYPO3\CMS\Core\Collection\AbstractRecordCollection\getIdentifier
‪int getIdentifier()
Definition: AbstractRecordCollection.php:324
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\setDescription
‪setDescription($description)
Definition: AbstractFileCollection.php:67
‪TYPO3\CMS\Core\Collection\AbstractRecordCollection\getDescription
‪string getDescription()
Definition: AbstractRecordCollection.php:244
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\$storageTableName
‪static string $storageTableName
Definition: AbstractFileCollection.php:33
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\$itemTableName
‪string $itemTableName
Definition: AbstractFileCollection.php:60
‪TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection\getItemsCriteria
‪mixed getItemsCriteria()
Definition: AbstractFileCollection.php:173