TASK: Prevent issue When hook is called with non uid

If some issues occur outside of our extension, we might not get a valid
uid inside of our hooks. We will therefore add additional checks and
prevent any further execution.

Resolves: #112
This commit is contained in:
Daniel Siepmann 2018-03-16 17:37:19 +01:00
parent ad7befb911
commit 203b5d7adf
Signed by: Daniel Siepmann
GPG key ID: 33D6629915560EF4
2 changed files with 47 additions and 1 deletions

View file

@ -72,7 +72,7 @@ class DataHandler implements Singleton
/**
* Called by CoreDataHandler on deletion of records.
*/
public function processCmdmap_deleteAction(string $table, int $uid) : bool
public function processCmdmap_deleteAction(string $table, string $uid) : bool
{
if (! $this->shouldProcessHookForTable($table)) {
$this->logger->debug('Delete not processed.', [$table, $uid]);
@ -95,6 +95,10 @@ class DataHandler implements Singleton
$uid = $dataHandler->substNEWwithIDs[$uid];
}
if (!is_numeric($uid) || $uid <= 0) {
continue;
}
$this->processRecord($table, $uid);
}
}

View file

@ -91,4 +91,46 @@ class DataHandlerToProcessorTest extends AbstractUnitTestCase
],
];
}
/**
* @test
*/
public function indexingIsNotCalledForCacheClearIfDataIsInvalid()
{
$coreDataHandlerMock = $this->getMockBuilder(CoreDataHandler::class)->getMock();
$ownDataHandlerMock = $this->getMockBuilder(OwnDataHandler::class)
->disableOriginalConstructor()
->getMock();
$subject = new DataHandler($ownDataHandlerMock);
$ownDataHandlerMock->expects($this->never())->method('update');
$subject->clearCachePostProc([
'cacheCmd' => 'NEW343',
], $coreDataHandlerMock);
}
/**
* @test
*/
public function indexingIsNotCalledForProcesIfDataIsInvalid()
{
$coreDataHandlerMock = $this->getMockBuilder(CoreDataHandler::class)->getMock();
$coreDataHandlerMock->datamap = [
'tt_content' => [
'NEW343' => [],
],
];
$coreDataHandlerMock->substNEWwithIDs = [];
$ownDataHandlerMock = $this->getMockBuilder(OwnDataHandler::class)
->disableOriginalConstructor()
->getMock();
$subject = new DataHandler($ownDataHandlerMock);
$ownDataHandlerMock->expects($this->never())->method('update');
$subject->processDatamap_afterAllOperations($coreDataHandlerMock);
}
}