53 'uid',
'pid',
'missing',
'type',
'storage',
'identifier',
'identifier_hash',
'extension',
54 'mime_type',
'name',
'sha1',
'size',
'creation_date',
'modification_date',
'folder_hash'
74 return GeneralUtility::makeInstance(self::class);
85 list($storageUid, $identifier) = GeneralUtility::trimExplode(
':', $combinedIdentifier,
false, 2);
97 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
98 ->getQueryBuilderForTable($this->table);
101 ->select(...$this->fields)
104 $queryBuilder->expr()->eq(
'uid', $queryBuilder->createNamedParameter($fileUid, \PDO::PARAM_INT))
109 return is_array($row) ? $row :
false;
138 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
139 ->getQueryBuilderForTable($this->table);
142 ->select(...$this->fields)
145 $queryBuilder->expr()->eq(
'storage', $queryBuilder->createNamedParameter($storageUid, \PDO::PARAM_INT)),
146 $queryBuilder->expr()->eq(
'identifier_hash', $queryBuilder->createNamedParameter($identifierHash))
151 return is_array($row) ? $row :
false;
178 if (!preg_match(
'/^[0-9a-f]{40}$/i', $hash)) {
182 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
183 ->getQueryBuilderForTable($this->table);
185 $resultRows = $queryBuilder
186 ->select(...$this->fields)
189 $queryBuilder->expr()->eq(
'sha1', $queryBuilder->createNamedParameter($hash, \PDO::PARAM_STR))
205 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
206 ->getQueryBuilderForTable($this->table);
208 $result = $queryBuilder
209 ->select(...$this->fields)
212 $queryBuilder->expr()->eq(
216 $queryBuilder->expr()->eq(
218 $queryBuilder->createNamedParameter($folder->
getStorage()->
getUid(), \PDO::PARAM_INT)
224 while ($row = $result->fetch()) {
225 $resultRows[$row[
'identifier']] = $row;
239 public function findByFolders(array $folders, $includeMissing =
true, $fileName =
null)
242 $folderIdentifiers = [];
244 foreach ($folders as $folder) {
245 if (!$folder instanceof
Folder) {
249 $storageUids[] = (int)$folder->getStorage()->getUid();
250 $folderIdentifiers[] = $folder->getHashedIdentifier();
253 $storageUids = array_unique($storageUids);
254 $folderIdentifiers = array_unique($folderIdentifiers);
256 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
259 ->select(...$this->fields)
262 $queryBuilder->expr()->in(
264 $queryBuilder->createNamedParameter($folderIdentifiers, Connection::PARAM_STR_ARRAY)
266 $queryBuilder->expr()->in(
268 $queryBuilder->createNamedParameter($storageUids, Connection::PARAM_INT_ARRAY)
272 if (isset($fileName)) {
273 $nameParts = str_getcsv($fileName,
' ');
274 foreach ($nameParts as $part) {
277 $queryBuilder->andWhere(
278 $queryBuilder->expr()->like(
280 $queryBuilder->createNamedParameter(
281 '%' . $queryBuilder->escapeLikeWildcards($part) .
'%',
290 if (!$includeMissing) {
291 $queryBuilder->andWhere($queryBuilder->expr()->eq(
'missing', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)));
294 $result = $queryBuilder->execute();
297 while ($fileRecord = $result->fetch()) {
298 $fileRecords[$fileRecord[
'identifier']] = $fileRecord;
327 public function addRaw(array $data)
342 $data = array_intersect_key($data, array_flip($this->fields));
343 $data[
'tstamp'] = time();
344 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
349 $data[
'uid'] = $connection->lastInsertId($this->table);
363 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
367 $queryBuilder->expr()->eq(
'uid', $queryBuilder->createNamedParameter($file->
getUid(), \PDO::PARAM_INT))
371 $queryBuilder->expr()->eq(
375 $queryBuilder->expr()->eq(
377 $queryBuilder->createNamedParameter($file->
_getPropertyRaw(
'identifier'), \PDO::PARAM_STR)
382 $count = $queryBuilder
385 ->where(...$constraints)
401 foreach ($updatedProperties as $key) {
404 if (!empty($updateRow)) {
406 $constraints = [
'uid' => (int)$file->
getUid()];
414 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
415 $updateRow[
'tstamp'] = time();
437 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
439 if ((
int)$limit > 0) {
440 $queryBuilder->setMaxResults((
int)$limit);
443 $rows = $queryBuilder
444 ->select(...$this->fields)
447 $queryBuilder->expr()->gt(
'tstamp', $queryBuilder->quoteIdentifier(
'last_indexed')),
448 $queryBuilder->expr()->eq(
'storage', $queryBuilder->createNamedParameter($storage->
getUid(), \PDO::PARAM_INT))
450 ->orderBy(
'tstamp',
'ASC')
466 $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
469 ->select(...$this->fields)
472 $queryBuilder->expr()->eq(
474 $queryBuilder->createNamedParameter($storage->
getUid(), \PDO::PARAM_INT)
478 if (!empty($uidList)) {
479 $queryBuilder->andWhere(
480 $queryBuilder->expr()->notIn(
482 array_map(
'intval', $uidList)
487 $rows = $queryBuilder->execute()->fetchAll();
499 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
503 'last_indexed' => time()
506 'uid' => (
int)$fileUid
518 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
525 'uid' => (
int)$fileUid
536 public function remove($fileUid)
538 $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
542 'uid' => (
int)$fileUid
557 $refIndexObj = GeneralUtility::makeInstance(ReferenceIndex::class);
558 $refIndexObj->enableRuntimeCache();
559 $refIndexObj->updateRefIndexTable($this->table, $id);
571 trigger_error(__METHOD__ .
' is deprecated. Use FileSearchQuery instead', \E_USER_DEPRECATED);
574 $result = $searchQuery->execute();
576 while ($fileRecord = $result->fetch()) {
577 $fileRecords[$fileRecord[
'identifier']] = $fileRecord;
600 return GeneralUtility::makeInstance(ObjectManager::class);