diff --git a/typo3/sysext/core/Classes/Resource/FileRepository.php b/typo3/sysext/core/Classes/Resource/FileRepository.php index f8643384ef12b2cf318446688d3f88c4de718222..5b9acaddfd27bd6498f3f251174c45f0d14b072d 100644 --- a/typo3/sysext/core/Classes/Resource/FileRepository.php +++ b/typo3/sysext/core/Classes/Resource/FileRepository.php @@ -152,14 +152,10 @@ class FileRepository extends AbstractRepository $folders = $folder->getStorage()->getFoldersInFolder($folder, 0, 0, true, true); $folders[$folder->getIdentifier()] = $folder; - $fileRecords = $this->getFileIndexRepository()->findByFolders($folders, false); + $fileRecords = $this->getFileIndexRepository()->findByFolders($folders, false, $fileName); $files = array(); foreach ($fileRecords as $fileRecord) { - if (stristr($fileRecord['name'], $fileName) === false) { - continue; - } - try { $files[] = $fileFactory->getFileObject($fileRecord['uid'], $fileRecord); } catch (Exception\FileDoesNotExistException $ignoredException) { diff --git a/typo3/sysext/core/Classes/Resource/Index/FileIndexRepository.php b/typo3/sysext/core/Classes/Resource/Index/FileIndexRepository.php index 67c893f1555951f6e8af476f59437d6ffd604d09..5b9032800f2813681136e4bdf2b7fb6a4d017527 100644 --- a/typo3/sysext/core/Classes/Resource/Index/FileIndexRepository.php +++ b/typo3/sysext/core/Classes/Resource/Index/FileIndexRepository.php @@ -203,9 +203,10 @@ class FileIndexRepository implements SingletonInterface * * @param Folder[] $folders * @param bool $includeMissing + * @param string $fileName * @return array|NULL */ - public function findByFolders(array $folders, $includeMissing = true) + public function findByFolders(array $folders, $includeMissing = true, $fileName = null) { $storageUids = []; $folderIdentifiers = []; @@ -226,6 +227,7 @@ class FileIndexRepository implements SingletonInterface $this->table, 'folder_hash IN ( ' . implode(',', $this->getDatabaseConnection()->fullQuoteArray($folderIdentifiers, $this->table)) . ')' . ' AND storage IN (' . implode(',', $storageUids) . ')' . + (isset($fileName) ? ' AND name LIKE "%' . $this->getDatabaseConnection()->escapeStrForLike($this->getDatabaseConnection()->quoteStr($fileName, $this->table), $this->table) . '%"' : '') . ($includeMissing ? '' : ' AND missing = 0'), '', '',