‪TYPO3CMS  9.5
FileIndexRepository.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
31 
41 {
45  protected ‪$table = 'sys_file';
46 
52  protected ‪$fields = [
53  'uid', 'pid', 'missing', 'type', 'storage', 'identifier', 'identifier_hash', 'extension',
54  'mime_type', 'name', 'sha1', 'size', 'creation_date', 'modification_date', 'folder_hash'
55  ];
56 
62  protected function ‪getResourceFactory()
63  {
65  }
66 
72  public static function ‪getInstance()
73  {
74  return GeneralUtility::makeInstance(self::class);
75  }
76 
83  public function ‪findOneByCombinedIdentifier($combinedIdentifier)
84  {
85  list($storageUid, $identifier) = GeneralUtility::trimExplode(':', $combinedIdentifier, false, 2);
86  return $this->‪findOneByStorageUidAndIdentifier($storageUid, $identifier);
87  }
88 
95  public function ‪findOneByUid($fileUid)
96  {
97  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
98  ->getQueryBuilderForTable($this->table);
99 
100  $row = $queryBuilder
101  ->select(...$this->fields)
102  ->from($this->table)
103  ->where(
104  $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($fileUid, \PDO::PARAM_INT))
105  )
106  ->execute()
107  ->fetch();
108 
109  return is_array($row) ? $row : false;
110  }
111 
121  public function ‪findOneByStorageUidAndIdentifier($storageUid, $identifier)
122  {
123  $identifierHash = $this->‪getResourceFactory()->‪getStorageObject($storageUid)->‪hashFileIdentifier($identifier);
124  return $this->‪findOneByStorageUidAndIdentifierHash($storageUid, $identifierHash);
125  }
126 
136  public function ‪findOneByStorageUidAndIdentifierHash($storageUid, $identifierHash)
137  {
138  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
139  ->getQueryBuilderForTable($this->table);
140 
141  $row = $queryBuilder
142  ->select(...$this->fields)
143  ->from($this->table)
144  ->where(
145  $queryBuilder->expr()->eq('storage', $queryBuilder->createNamedParameter($storageUid, \PDO::PARAM_INT)),
146  $queryBuilder->expr()->eq('identifier_hash', $queryBuilder->createNamedParameter($identifierHash))
147  )
148  ->execute()
149  ->fetch();
150 
151  return is_array($row) ? $row : false;
152  }
153 
162  public function ‪findOneByFileObject(‪FileInterface $fileObject)
163  {
164  $storageUid = $fileObject->‪getStorage()->‪getUid();
165  $identifierHash = $fileObject->‪getHashedIdentifier();
166  return $this->‪findOneByStorageUidAndIdentifierHash($storageUid, $identifierHash);
167  }
168 
176  public function ‪findByContentHash($hash)
177  {
178  if (!preg_match('/^[0-9a-f]{40}$/i', $hash)) {
179  return [];
180  }
181 
182  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
183  ->getQueryBuilderForTable($this->table);
184 
185  $resultRows = $queryBuilder
186  ->select(...$this->fields)
187  ->from($this->table)
188  ->where(
189  $queryBuilder->expr()->eq('sha1', $queryBuilder->createNamedParameter($hash, \PDO::PARAM_STR))
190  )
191  ->execute()
192  ->fetchAll();
193 
194  return $resultRows;
195  }
196 
203  public function ‪findByFolder(‪Folder $folder)
204  {
205  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
206  ->getQueryBuilderForTable($this->table);
207 
208  $result = $queryBuilder
209  ->select(...$this->fields)
210  ->from($this->table)
211  ->where(
212  $queryBuilder->expr()->eq(
213  'folder_hash',
214  $queryBuilder->createNamedParameter($folder->‪getHashedIdentifier(), \PDO::PARAM_STR)
215  ),
216  $queryBuilder->expr()->eq(
217  'storage',
218  $queryBuilder->createNamedParameter($folder->‪getStorage()->‪getUid(), \PDO::PARAM_INT)
219  )
220  )
221  ->execute();
222 
223  $resultRows = [];
224  while ($row = $result->fetch()) {
225  $resultRows[$row['identifier']] = $row;
226  }
227 
228  return $resultRows;
229  }
230 
239  public function ‪findByFolders(array $folders, $includeMissing = true, $fileName = null)
240  {
241  $storageUids = [];
242  $folderIdentifiers = [];
243 
244  foreach ($folders as $folder) {
245  if (!$folder instanceof ‪Folder) {
246  continue;
247  }
248 
249  $storageUids[] = (int)$folder->getStorage()->getUid();
250  $folderIdentifiers[] = $folder->getHashedIdentifier();
251  }
252 
253  $storageUids = array_unique($storageUids);
254  $folderIdentifiers = array_unique($folderIdentifiers);
255 
256  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
257 
258  $queryBuilder
259  ->select(...$this->fields)
260  ->from($this->table)
261  ->where(
262  $queryBuilder->expr()->in(
263  'folder_hash',
264  $queryBuilder->createNamedParameter($folderIdentifiers, Connection::PARAM_STR_ARRAY)
265  ),
266  $queryBuilder->expr()->in(
267  'storage',
268  $queryBuilder->createNamedParameter($storageUids, Connection::PARAM_INT_ARRAY)
269  )
270  );
271 
272  if (isset($fileName)) {
273  $nameParts = str_getcsv($fileName, ' ');
274  foreach ($nameParts as $part) {
275  $part = trim($part);
276  if ($part !== '') {
277  $queryBuilder->andWhere(
278  $queryBuilder->expr()->like(
279  'name',
280  $queryBuilder->createNamedParameter(
281  '%' . $queryBuilder->escapeLikeWildcards($part) . '%',
282  \PDO::PARAM_STR
283  )
284  )
285  );
286  }
287  }
288  }
289 
290  if (!$includeMissing) {
291  $queryBuilder->andWhere($queryBuilder->expr()->eq('missing', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)));
292  }
293 
294  $result = $queryBuilder->execute();
295 
296  $fileRecords = [];
297  while ($fileRecord = $result->fetch()) {
298  $fileRecords[$fileRecord['identifier']] = $fileRecord;
299  }
300 
301  return $fileRecords;
302  }
303 
309  public function ‪add(‪File $file)
310  {
311  if ($this->‪hasIndexRecord($file)) {
312  $this->‪update($file);
313  if ($file->‪_getPropertyRaw('uid') === null) {
314  $file->‪updateProperties($this->‪findOneByFileObject($file));
315  }
316  } else {
317  $file->‪updateProperties(['uid' => $this->‪insertRecord($file->‪getProperties())]);
318  }
319  }
320 
327  public function ‪addRaw(array $data)
328  {
329  $data['uid'] = $this->‪insertRecord($data);
330  return $data;
331  }
332 
340  protected function ‪insertRecord(array $data)
341  {
342  $data = array_intersect_key($data, array_flip($this->fields));
343  $data['tstamp'] = time();
344  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
345  $connection->insert(
346  $this->table,
347  $data
348  );
349  $data['uid'] = $connection->lastInsertId($this->table);
350  $this->‪updateRefIndex($data['uid']);
351  $this->‪emitRecordCreatedSignal($data);
352  return $data['uid'];
353  }
354 
361  public function ‪hasIndexRecord(‪File $file)
362  {
363  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
364 
365  if ((int)$file->‪_getPropertyRaw('uid') > 0) {
366  $constraints = [
367  $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($file->‪getUid(), \PDO::PARAM_INT))
368  ];
369  } else {
370  $constraints = [
371  $queryBuilder->expr()->eq(
372  'storage',
373  $queryBuilder->createNamedParameter($file->‪getStorage()->‪getUid(), \PDO::PARAM_INT)
374  ),
375  $queryBuilder->expr()->eq(
376  'identifier',
377  $queryBuilder->createNamedParameter($file->‪_getPropertyRaw('identifier'), \PDO::PARAM_STR)
378  )
379  ];
380  }
381 
382  $count = $queryBuilder
383  ->count('uid')
384  ->from($this->table)
385  ->where(...$constraints)
386  ->execute()
387  ->fetchColumn(0);
388 
389  return (bool)$count;
390  }
391 
397  public function ‪update(‪File $file)
398  {
399  $updatedProperties = array_intersect($this->fields, $file->‪getUpdatedProperties());
400  $updateRow = [];
401  foreach ($updatedProperties as $key) {
402  $updateRow[$key] = $file->‪getProperty($key);
403  }
404  if (!empty($updateRow)) {
405  if ((int)$file->‪_getPropertyRaw('uid') > 0) {
406  $constraints = ['uid' => (int)$file->‪getUid()];
407  } else {
408  $constraints = [
409  'storage' => (int)$file->‪getStorage()->‪getUid(),
410  'identifier' => $file->‪_getPropertyRaw('identifier')
411  ];
412  }
413 
414  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
415  $updateRow['tstamp'] = time();
416 
417  $connection->update(
418  $this->table,
419  $updateRow,
420  $constraints
421  );
422 
423  $this->‪updateRefIndex($file->‪getUid());
424  $this->‪emitRecordUpdatedSignal(array_intersect_key($file->‪getProperties(), array_flip($this->fields)));
425  }
426  }
427 
435  public function ‪findInStorageWithIndexOutstanding(‪ResourceStorage $storage, $limit = -1)
436  {
437  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
438 
439  if ((int)$limit > 0) {
440  $queryBuilder->setMaxResults((int)$limit);
441  }
442 
443  $rows = $queryBuilder
444  ->select(...$this->fields)
445  ->from($this->table)
446  ->where(
447  $queryBuilder->expr()->gt('tstamp', $queryBuilder->quoteIdentifier('last_indexed')),
448  $queryBuilder->expr()->eq('storage', $queryBuilder->createNamedParameter($storage->‪getUid(), \PDO::PARAM_INT))
449  )
450  ->orderBy('tstamp', 'ASC')
451  ->execute()
452  ->fetchAll();
453 
454  return $rows;
455  }
456 
464  public function ‪findInStorageAndNotInUidList(‪ResourceStorage $storage, array $uidList)
465  {
466  $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
467 
468  $queryBuilder
469  ->select(...$this->fields)
470  ->from($this->table)
471  ->where(
472  $queryBuilder->expr()->eq(
473  'storage',
474  $queryBuilder->createNamedParameter($storage->‪getUid(), \PDO::PARAM_INT)
475  )
476  );
477 
478  if (!empty($uidList)) {
479  $queryBuilder->andWhere(
480  $queryBuilder->expr()->notIn(
481  'uid',
482  array_map('intval', $uidList)
483  )
484  );
485  }
486 
487  $rows = $queryBuilder->execute()->fetchAll();
488 
489  return $rows;
490  }
491 
497  public function ‪updateIndexingTime($fileUid)
498  {
499  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
500  $connection->update(
501  $this->table,
502  [
503  'last_indexed' => time()
504  ],
505  [
506  'uid' => (int)$fileUid
507  ]
508  );
509  }
510 
516  public function ‪markFileAsMissing($fileUid)
517  {
518  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
519  $connection->update(
520  $this->table,
521  [
522  'missing' => 1
523  ],
524  [
525  'uid' => (int)$fileUid
526  ]
527  );
528  $this->‪emitRecordMarkedAsMissingSignal($fileUid);
529  }
530 
536  public function remove($fileUid)
537  {
538  $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
539  $connection->delete(
540  $this->table,
541  [
542  'uid' => (int)$fileUid
543  ]
544  );
545  $this->‪updateRefIndex($fileUid);
546  $this->‪emitRecordDeletedSignal($fileUid);
547  }
548 
554  public function ‪updateRefIndex($id)
555  {
557  $refIndexObj = GeneralUtility::makeInstance(ReferenceIndex::class);
558  $refIndexObj->enableRuntimeCache();
559  $refIndexObj->updateRefIndexTable($this->table, $id);
560  }
561 
569  public function ‪findBySearchWordInMetaData($searchWord)
570  {
571  trigger_error(__METHOD__ . ' is deprecated. Use FileSearchQuery instead', \E_USER_DEPRECATED);
572  $searchDemand = ‪FileSearchDemand::createForSearchTerm($searchWord);
573  $searchQuery = ‪FileSearchQuery::createForSearchDemand($searchDemand);
574  $result = $searchQuery->execute();
575  $fileRecords = [];
576  while ($fileRecord = $result->fetch()) {
577  $fileRecords[$fileRecord['identifier']] = $fileRecord;
578  }
579 
580  return $fileRecords;
581  }
582 
588  protected function ‪getSignalSlotDispatcher()
589  {
590  return $this->‪getObjectManager()->‪get(Dispatcher::class);
591  }
592 
598  protected function ‪getObjectManager()
599  {
600  return GeneralUtility::makeInstance(ObjectManager::class);
601  }
602 
608  protected function ‪emitRecordUpdatedSignal(array $data)
609  {
610  $this->‪getSignalSlotDispatcher()->‪dispatch(self::class, 'recordUpdated', [$data]);
611  }
612 
618  protected function ‪emitRecordCreatedSignal(array $data)
619  {
620  $this->‪getSignalSlotDispatcher()->‪dispatch(self::class, 'recordCreated', [$data]);
621  }
622 
628  protected function ‪emitRecordDeletedSignal($fileUid)
629  {
630  $this->‪getSignalSlotDispatcher()->‪dispatch(self::class, 'recordDeleted', [$fileUid]);
631  }
632 
638  protected function ‪emitRecordMarkedAsMissingSignal($fileUid)
639  {
640  $this->‪getSignalSlotDispatcher()->‪dispatch(self::class, 'recordMarkedAsMissing', [$fileUid]);
641  }
642 }
‪TYPO3\CMS\Core\Resource\Search\FileSearchQuery
Definition: FileSearchQuery.php:34
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findInStorageAndNotInUidList
‪array findInStorageAndNotInUidList(ResourceStorage $storage, array $uidList)
Definition: FileIndexRepository.php:462
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findOneByFileObject
‪array bool findOneByFileObject(FileInterface $fileObject)
Definition: FileIndexRepository.php:160
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository
Definition: FileIndexRepository.php:41
‪TYPO3\CMS\Core\Resource\ResourceStorage\getUid
‪int getUid()
Definition: ResourceStorage.php:271
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\addRaw
‪array addRaw(array $data)
Definition: FileIndexRepository.php:325
‪TYPO3\CMS\Core\Resource\FileInterface
Definition: FileInterface.php:21
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findBySearchWordInMetaData
‪array findBySearchWordInMetaData($searchWord)
Definition: FileIndexRepository.php:567
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findByFolders
‪array null findByFolders(array $folders, $includeMissing=true, $fileName=null)
Definition: FileIndexRepository.php:237
‪TYPO3\CMS\Core\Database\ReferenceIndex
Definition: ReferenceIndex.php:50
‪TYPO3\CMS\Core\Resource\Search\FileSearchQuery\createForSearchDemand
‪static FileSearchQuery createForSearchDemand(FileSearchDemand $searchDemand, QueryBuilder $queryBuilder=null)
Definition: FileSearchQuery.php:63
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\hasIndexRecord
‪bool hasIndexRecord(File $file)
Definition: FileIndexRepository.php:359
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\emitRecordDeletedSignal
‪emitRecordDeletedSignal($fileUid)
Definition: FileIndexRepository.php:626
‪TYPO3\CMS\Core\Resource\ResourceFactory\getInstance
‪static ResourceFactory getInstance()
Definition: ResourceFactory.php:39
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findOneByUid
‪array bool findOneByUid($fileUid)
Definition: FileIndexRepository.php:93
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findByFolder
‪array null findByFolder(Folder $folder)
Definition: FileIndexRepository.php:201
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\emitRecordMarkedAsMissingSignal
‪emitRecordMarkedAsMissingSignal($fileUid)
Definition: FileIndexRepository.php:636
‪TYPO3\CMS\Core\Resource\File\getUpdatedProperties
‪array getUpdatedProperties()
Definition: File.php:248
‪TYPO3\CMS\Core\Resource\ResourceInterface\getStorage
‪ResourceStorage getStorage()
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\getResourceFactory
‪ResourceFactory getResourceFactory()
Definition: FileIndexRepository.php:60
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findOneByStorageUidAndIdentifier
‪array bool findOneByStorageUidAndIdentifier($storageUid, $identifier)
Definition: FileIndexRepository.php:119
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\update
‪update(File $file)
Definition: FileIndexRepository.php:395
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\emitRecordCreatedSignal
‪emitRecordCreatedSignal(array $data)
Definition: FileIndexRepository.php:616
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\add
‪add(File $file)
Definition: FileIndexRepository.php:307
‪TYPO3\CMS\Core\Resource\Folder\getStorage
‪ResourceStorage getStorage()
Definition: Folder.php:146
‪TYPO3\CMS\Core\Resource\ResourceStorage\hashFileIdentifier
‪string hashFileIdentifier($file)
Definition: ResourceStorage.php:1298
‪TYPO3\CMS\Core\Resource\File\getProperties
‪array getProperties()
Definition: File.php:103
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findOneByCombinedIdentifier
‪array bool findOneByCombinedIdentifier($combinedIdentifier)
Definition: FileIndexRepository.php:81
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findOneByStorageUidAndIdentifierHash
‪array bool findOneByStorageUidAndIdentifierHash($storageUid, $identifierHash)
Definition: FileIndexRepository.php:134
‪TYPO3\CMS\Core\Resource\Search\FileSearchDemand
Definition: FileSearchDemand.php:24
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\updateIndexingTime
‪updateIndexingTime($fileUid)
Definition: FileIndexRepository.php:495
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findByContentHash
‪mixed findByContentHash($hash)
Definition: FileIndexRepository.php:174
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\findInStorageWithIndexOutstanding
‪array findInStorageWithIndexOutstanding(ResourceStorage $storage, $limit=-1)
Definition: FileIndexRepository.php:433
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:34
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:33
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\getInstance
‪static FileIndexRepository getInstance()
Definition: FileIndexRepository.php:70
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:23
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\insertRecord
‪int insertRecord(array $data)
Definition: FileIndexRepository.php:338
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\getSignalSlotDispatcher
‪Dispatcher getSignalSlotDispatcher()
Definition: FileIndexRepository.php:586
‪TYPO3\CMS\Core\Resource\AbstractFile\getUid
‪int getUid()
Definition: AbstractFile.php:200
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\emitRecordUpdatedSignal
‪emitRecordUpdatedSignal(array $data)
Definition: FileIndexRepository.php:606
‪TYPO3\CMS\Extbase\SignalSlot\Dispatcher\dispatch
‪mixed dispatch($signalClassName, $signalName, array $signalArguments=[])
Definition: Dispatcher.php:115
‪TYPO3\CMS\Core\Resource\Index
Definition: ExtractorInterface.php:2
‪TYPO3\CMS\Core\Resource\ResourceInterface\getHashedIdentifier
‪string getHashedIdentifier()
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\getObjectManager
‪ObjectManager getObjectManager()
Definition: FileIndexRepository.php:596
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\$fields
‪array $fields
Definition: FileIndexRepository.php:50
‪TYPO3\CMS\Core\Database\Connection
Definition: Connection.php:31
‪TYPO3\CMS\Core\Resource\ResourceStorage
Definition: ResourceStorage.php:74
‪TYPO3\CMS\Core\Resource\ResourceFactory\getStorageObject
‪ResourceStorage getStorageObject($uid, array $recordData=[], &$fileIdentifier=null)
Definition: ResourceFactory.php:131
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:22
‪TYPO3\CMS\Extbase\Object\ObjectManager\get
‪object &T get($objectName,... $constructorArguments)
Definition: ObjectManager.php:94
‪TYPO3\CMS\Core\Resource\File\getProperty
‪mixed getProperty($key)
Definition: File.php:74
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\markFileAsMissing
‪markFileAsMissing($fileUid)
Definition: FileIndexRepository.php:514
‪TYPO3\CMS\Core\Resource\File\updateProperties
‪updateProperties(array $properties)
Definition: File.php:197
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\$table
‪string $table
Definition: FileIndexRepository.php:44
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:44
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Core\Resource\Search\FileSearchDemand\createForSearchTerm
‪static createForSearchTerm(string $searchTerm)
Definition: FileSearchDemand.php:68
‪TYPO3\CMS\Extbase\Object\ObjectManager
Definition: ObjectManager.php:25
‪TYPO3\CMS\Core\Resource\Folder\getHashedIdentifier
‪string getHashedIdentifier()
Definition: Folder.php:167
‪TYPO3\CMS\Core\Resource\File\_getPropertyRaw
‪mixed _getPropertyRaw($key)
Definition: File.php:398
‪TYPO3\CMS\Extbase\SignalSlot\Dispatcher
Definition: Dispatcher.php:28
‪TYPO3\CMS\Core\Resource\Index\FileIndexRepository\updateRefIndex
‪updateRefIndex($id)
Definition: FileIndexRepository.php:552
‪TYPO3\CMS\Core\Resource\AbstractFile\getStorage
‪ResourceStorage getStorage()
Definition: AbstractFile.php:361