Project

General

Profile

Bug #82233 ยป FileIndexRepository_patch.patch

Ricky Mathew, 2017-08-29 08:45

View differences:

FileIndexRepository.php 2017-08-28 16:44:23.837613533 +0530
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extbase\SignalSlot\Dispatcher;
use TYPO3\CMS\Core\Database\Platform\PlatformInformation;
/**
* Repository Class as an abstraction layer to sys_file
......
*/
public function findInStorageAndNotInUidList(ResourceStorage $storage, array $uidList)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder
->select(...$this->fields)
->from($this->table)
->where(
$queryBuilder->expr()->eq(
'storage',
$queryBuilder->createNamedParameter($storage->getUid(), \PDO::PARAM_INT)
)
);
$rows = [];
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$maxBindParameters = PlatformInformation::getMaxBindParameters($connection->getDatabasePlatform());
if (!empty($uidList)) {
$queryBuilder->andWhere(
foreach (array_chunk($uidList, $maxBindParameters - 10, true) as $chunk) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder
->select(...$this->fields)
->from($this->table)
->where(
$queryBuilder->expr()->eq(
'storage',
$queryBuilder->createNamedParameter($storage->getUid(), \PDO::PARAM_INT)
)
);
if (empty($chunk)) {
continue;
}
$queryBuilder->andWhere(
$queryBuilder->expr()->notIn(
'uid',
$queryBuilder->createNamedParameter($uidList, Connection::PARAM_INT_ARRAY)
$queryBuilder->createNamedParameter($chunk, Connection::PARAM_INT_ARRAY)
)
);
);
$rowsChunks = $queryBuilder->execute()->fetchAll();
foreach ($rowsChunks as $rowChunk) {
if (!in_array($rowChunk['uid'], $uidList)) {
$rows[$rowChunk['uid']] = $rowChunk;
}
}
}
}
else{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder
->select(...$this->fields)
->from($this->table)
->where(
$queryBuilder->expr()->eq(
'storage',
$queryBuilder->createNamedParameter($storage->getUid(), \PDO::PARAM_INT)
)
);
$rows = $queryBuilder->execute()->fetchAll();
}
$rows = $queryBuilder->execute()->fetchAll();
return $rows;
}
    (1-1/1)