‪TYPO3CMS  ‪main
FileSearchResult.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 
25 
31 {
35  private ‪$searchDemand;
36 
40  private ‪$result;
41 
45  private ‪$resultCount;
46 
48  {
49  $this->searchDemand = ‪$searchDemand;
50  }
51 
55  public function ‪count(): int
56  {
57  if ($this->resultCount !== null) {
58  return ‪$this->resultCount;
59  }
60 
61  $this->resultCount = (int)‪FileSearchQuery::createCountForSearchDemand($this->searchDemand)->execute()->fetchOne();
62 
63  return ‪$this->resultCount;
64  }
65 
69  public function ‪current(): ‪File
70  {
71  $this->‪initialize();
72  return ‪current($this->result);
73  }
74 
78  public function ‪key(): int
79  {
80  $this->‪initialize();
81  return ‪key($this->result);
82  }
83 
87  public function ‪next(): void
88  {
89  $this->‪initialize();
90  ‪next($this->result);
91  }
92 
96  public function ‪rewind(): void
97  {
98  $this->‪initialize();
99  reset($this->result);
100  }
101 
105  public function ‪valid(): bool
106  {
107  $this->‪initialize();
108  return ‪current($this->result) !== false;
109  }
110 
114  private function ‪initialize(): void
115  {
116  if ($this->result !== null) {
117  return;
118  }
119  $this->result = ‪FileSearchQuery::createForSearchDemand($this->searchDemand)->execute()->fetchAllAssociative();
120  $this->resultCount = ‪count($this->result);
121  $this->result = array_map(
122  static function (array $fileRow): ‪File {
123  return GeneralUtility::makeInstance(ResourceFactory::class)->getFileObject($fileRow['uid'], $fileRow);
124  },
126  );
127  }
128 }
‪TYPO3\CMS\Core\Resource\Search\FileSearchQuery
Definition: FileSearchQuery.php:38
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\initialize
‪initialize()
Definition: FileSearchResult.php:111
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\$result
‪array $result
Definition: FileSearchResult.php:38
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\$searchDemand
‪FileSearchDemand $searchDemand
Definition: FileSearchResult.php:34
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\__construct
‪__construct(FileSearchDemand $searchDemand)
Definition: FileSearchResult.php:44
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\rewind
‪rewind()
Definition: FileSearchResult.php:93
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\current
‪current()
Definition: FileSearchResult.php:66
‪TYPO3\CMS\Core\Resource\Search\Result
Definition: DriverFilteredSearchResult.php:18
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\next
‪next()
Definition: FileSearchResult.php:84
‪TYPO3\CMS\Core\Resource\Search\FileSearchQuery\createForSearchDemand
‪static createForSearchDemand(FileSearchDemand $searchDemand, QueryBuilder $queryBuilder=null)
Definition: FileSearchQuery.php:62
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\$resultCount
‪int $resultCount
Definition: FileSearchResult.php:42
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult
Definition: FileSearchResult.php:31
‪TYPO3\CMS\Core\Resource\Search\FileSearchDemand
Definition: FileSearchDemand.php:26
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:42
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:26
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResultInterface
Definition: FileSearchResultInterface.php:24
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\count
‪count()
Definition: FileSearchResult.php:52
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\Resource\Search\FileSearchQuery\createCountForSearchDemand
‪static createCountForSearchDemand(FileSearchDemand $searchDemand, QueryBuilder $queryBuilder=null)
Definition: FileSearchQuery.php:128
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\valid
‪valid()
Definition: FileSearchResult.php:102
‪TYPO3\CMS\Core\Resource\Search\Result\FileSearchResult\key
‪key()
Definition: FileSearchResult.php:75