Merge pull request #143 from Codappix/feature/112-prevent-issue-with-non-uids

TASK: Prevent issue When hook is called with non uid
This commit is contained in:
Daniel Siepmann 2018-03-20 14:39:33 +01:00 committed by GitHub
commit 250a187cc6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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. * 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)) { if (! $this->shouldProcessHookForTable($table)) {
$this->logger->debug('Delete not processed.', [$table, $uid]); $this->logger->debug('Delete not processed.', [$table, $uid]);
@ -95,6 +95,10 @@ class DataHandler implements Singleton
$uid = $dataHandler->substNEWwithIDs[$uid]; $uid = $dataHandler->substNEWwithIDs[$uid];
} }
if (!is_numeric($uid) || $uid <= 0) {
continue;
}
$this->processRecord($table, $uid); $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 indexingIsNotCalledForProcessIfDataIsInvalid()
{
$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);
}
} }