Skip to content

Commit

Permalink
[TASK] integrate ^1 fallback
Browse files Browse the repository at this point in the history
  • Loading branch information
xerc committed Sep 26, 2023
1 parent 8325525 commit 8ae6ac5
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 13 deletions.
2 changes: 1 addition & 1 deletion Classes/Command/ProcessCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int

$queryBuilder = $connectionPool->getQueryBuilderForTable('sys_file_processedfile');
$databaseRows = $queryBuilder
->select('uid', 'identifier' ,'original', 'task_type', 'configuration')
->select('uid' ,'original', 'task_type', 'configuration', 'identifier')
->from('sys_file_processedfile')
->where($queryBuilder->expr()->eq('processed', $queryBuilder->createNamedParameter(false)))
->setMaxResults($limit)
Expand Down
26 changes: 16 additions & 10 deletions Classes/Middleware/DeferredImage.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,26 @@ class DeferredImage extends \TYPO3\CMS\Core\Imaging\GraphicalFunctions implement
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$queryParams = $request->getQueryParams();
if(!isset($queryParams['dip'])) {
if (!isset($queryParams['dip'])
|| 'image/' !== substr($request->getHeaderLine('Accept'), 0, 6) // fallback ^1
) {
return $handler->handle($request);
}
if(!in_array($queryParams['dip']['ext'], $this->webImageExt))
{

$match = $queryParams['dip'];
if (isset($match['chk'], $match['ext']) && !in_array($match['ext'], $webImageExt)// << plz. optim. logic | rem.
|| !preg_match('/_(?<chk>[0-9a-f]{10})\.(?:'.implode('|',$webImageExt).')$/', $url, $match) // fallback ^1 <<
) {
return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction($request, '[510] DeferredImage');
}

# https://github.com/TYPO3/typo3/blob/main/typo3/sysext/core/Classes/Resource/Processing/AbstractTask.php#L95-L115
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_processedfile');
$connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);

$queryBuilder = $connectionPool->getQueryBuilderForTable('sys_file_processedfile');
$databaseRow = $queryBuilder
->select('original', 'task_type', 'configuration')
->select('uid', 'original', 'task_type', 'configuration')
->from('sys_file_processedfile')
->where($queryBuilder->expr()->eq('checksum', $queryBuilder->createNamedParameter($queryParams['dip']['chk'])))
->where($queryBuilder->expr()->eq('checksum', $queryBuilder->createNamedParameter($match['chk'])))
->executeQuery()
->fetchAssociative()
;
Expand All @@ -56,11 +62,11 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
->getFileObject((int)$databaseRow['original'])
->process($databaseRow['task_type'], $configuration)
;
if (!$processedFile->exists()) {
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_processedfile');
if ($processedFile->exists()) {
$queryBuilder = $connectionPool->getQueryBuilderForTable('sys_file_processedfile');
$queryBuilder
->update('sys_file_processedfile')
->where($queryBuilder->expr()->eq('checksum', $queryBuilder->createNamedParameter($queryParams['dip']['chk'])))
->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($databaseRow['uid'])))
->set('processed', true)
->executeStatement()
;
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ So make sure to add a rule like this *before* the blocking rule above:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /_processed_/.+_([0-9a-f]{10})\.(gif|jpe?g|png)$ %{ENV:CWD}index.php?dip[chk]=$1&dip[ext]=$2 [END]
```
URL/HASH ref. @ [`Resource/Processing/AbstractTask`](https://github.com/TYPO3/typo3/blob/main/typo3/sysext/core/Classes/Resource/Processing/AbstractTask.php#L95-L115)

### Processing queue (optional)

Expand Down
4 changes: 2 additions & 2 deletions ext_tables.sql
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# ref. https://github.com/TYPO3/typo3/blob/11.5/typo3/sysext/core/ext_tables.sql#L226
create table sys_file_processedfile
CREATE TABLE sys_file_processedfile
(
processed tinyint(1) DEFAULT 0 NOT NULL
processed TINYINT(1) DEFAULT 0 NOT NULL
);

0 comments on commit 8ae6ac5

Please sign in to comment.