‪TYPO3CMS  ‪main
ResourceCollection.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
23 
27 class ‪ResourceCollection implements \Countable, \Iterator, \ArrayAccess
28 {
29  private int ‪$position = 0;
30 
34  protected array ‪$resources = [];
35 
39  public function ‪__construct(array ‪$resources = [])
40  {
41  $this->‪setResources($resources);
42  }
43 
44  public function ‪addResource(‪ResourceInterface $resource): self
45  {
46  $this->resources[] = $resource;
47  return $this;
48  }
49 
50  public function ‪addResources(array ‪$resources): self
51  {
52  foreach (‪$resources as $resource) {
53  $this->‪addResource($resource);
54  }
55  return $this;
56  }
57 
58  public function ‪setResources(array ‪$resources): self
59  {
60  $this->resources = [];
61  $this->‪addResources($resources);
62  return $this;
63  }
64 
68  public function ‪getResources(): array
69  {
70  return ‪$this->resources;
71  }
72 
76  public function ‪getFolders(): array
77  {
78  return array_filter($this->resources, static function (‪ResourceInterface $resource): bool {
79  return $resource instanceof ‪Folder;
80  });
81  }
82 
86  public function ‪getFiles(): array
87  {
88  return array_filter($this->resources, static function (‪ResourceInterface $resource): bool {
89  return $resource instanceof ‪File;
90  });
91  }
92 
93  public function ‪getTotalBytes(): int
94  {
95  $totalBytes = 0;
96  foreach ($this->‪getFiles() as $file) {
97  $totalBytes += $file->getSize();
98  }
99 
100  return $totalBytes;
101  }
102 
103  public function ‪getTotalFolderCount(): int
104  {
105  return ‪count($this->‪getFolders());
106  }
107 
108  public function ‪getTotalFileCount(): int
109  {
110  return ‪count($this->‪getFiles());
111  }
112 
113  public function ‪getTotalCount(): int
114  {
115  return ‪count($this->resources);
116  }
117 
121  public function ‪offsetSet($offset, $value): void
122  {
123  if (is_null($offset)) {
124  $this->resources[] = $value;
125  } else {
126  $this->resources[$offset] = $value;
127  }
128  }
129 
130  public function ‪offsetExists($offset): bool
131  {
132  return isset($this->resources[$offset]);
133  }
134 
135  public function ‪offsetUnset($offset): void
136  {
137  unset($this->resources[$offset]);
138  }
139 
140  public function ‪offsetGet($offset): ?‪ResourceInterface
141  {
142  return $this->resources[$offset] ?? null;
143  }
144 
148  public function ‪rewind(): void
149  {
150  $this->position = 0;
151  }
152 
156  public function ‪current(): mixed
157  {
158  return $this->resources[‪$this->position];
159  }
160 
164  public function ‪key(): mixed
165  {
166  return ‪$this->position;
167  }
168 
169  public function ‪next(): void
170  {
172  }
173 
174  public function ‪valid(): bool
175  {
176  return isset($this->resources[$this->position]);
177  }
178 
182  public function ‪count(): int
183  {
184  return $this->‪getTotalCount();
185  }
186 }
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\setResources
‪setResources(array $resources)
Definition: ResourceCollection.php:58
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\addResource
‪addResource(ResourceInterface $resource)
Definition: ResourceCollection.php:44
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\offsetGet
‪offsetGet($offset)
Definition: ResourceCollection.php:140
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\$resources
‪array $resources
Definition: ResourceCollection.php:34
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\valid
‪valid()
Definition: ResourceCollection.php:174
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\getFolders
‪getFolders()
Definition: ResourceCollection.php:76
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\next
‪next()
Definition: ResourceCollection.php:169
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\offsetSet
‪offsetSet($offset, $value)
Definition: ResourceCollection.php:121
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\getResources
‪ResourceInterface[] getResources()
Definition: ResourceCollection.php:68
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\key
‪int key()
Definition: ResourceCollection.php:164
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\getTotalFileCount
‪getTotalFileCount()
Definition: ResourceCollection.php:108
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:38
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\Folder
‪Folder[]
Definition: ResourceCollection.php:76
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:26
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\offsetExists
‪offsetExists($offset)
Definition: ResourceCollection.php:130
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\getFiles
‪getFiles()
Definition: ResourceCollection.php:86
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\$position
‪int $position
Definition: ResourceCollection.php:29
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\getTotalCount
‪getTotalCount()
Definition: ResourceCollection.php:113
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\File
‪File[]
Definition: ResourceCollection.php:86
‪TYPO3\CMS\Filelist\Dto
Definition: PaginationLink.php:18
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\getTotalFolderCount
‪getTotalFolderCount()
Definition: ResourceCollection.php:103
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\count
‪count()
Definition: ResourceCollection.php:182
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\__construct
‪__construct(array $resources=[])
Definition: ResourceCollection.php:39
‪TYPO3\CMS\Core\Resource\ResourceInterface
Definition: ResourceInterface.php:21
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\current
‪ResourceInterface null current()
Definition: ResourceCollection.php:156
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\getTotalBytes
‪getTotalBytes()
Definition: ResourceCollection.php:93
‪TYPO3\CMS\Filelist\Dto\ResourceCollection
Definition: ResourceCollection.php:28
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\addResources
‪addResources(array $resources)
Definition: ResourceCollection.php:50
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\offsetUnset
‪offsetUnset($offset)
Definition: ResourceCollection.php:135
‪TYPO3\CMS\Filelist\Dto\ResourceCollection\rewind
‪rewind()
Definition: ResourceCollection.php:148