From c16bd65b7b9de08e777f5b273bbca16f4f4e50f7 Mon Sep 17 00:00:00 2001 From: Thorsten Boock <tboock@codegy.de> Date: Fri, 10 Jul 2015 15:39:07 +0200 Subject: [PATCH] [FEATURE] Add signal afterMappingSingleRow Change-Id: Ic7144b172c876af8f4ee70573955ac963b152b26 Resolves: #68047 Releases: master Reviewed-on: http://review.typo3.org/41088 Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Markus Klein <markus.klein@typo3.org> Tested-by: Markus Klein <markus.klein@typo3.org> --- ...ture-68047-EmitASignalForEachMappedObject.rst | 8 ++++++++ .../Persistence/Generic/Mapper/DataMapper.php | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 typo3/sysext/core/Documentation/Changelog/master/Feature-68047-EmitASignalForEachMappedObject.rst diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-68047-EmitASignalForEachMappedObject.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-68047-EmitASignalForEachMappedObject.rst new file mode 100644 index 000000000000..40bd139d9b15 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-68047-EmitASignalForEachMappedObject.rst @@ -0,0 +1,8 @@ +====================================================== +Feature: #68047 - Emit a signal for each mapped object +====================================================== + +Description +=========== + +The signal ``afterMappingSingleRow`` is emitted whenever the DataMapper creates an object. \ No newline at end of file diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php b/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php index 7bcff55ed342..05831da0a2b8 100644 --- a/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php +++ b/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php @@ -82,6 +82,12 @@ class DataMapper implements \TYPO3\CMS\Core\SingletonInterface { */ protected $objectManager; + /** + * @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher + * @inject + */ + protected $signalSlotDispatcher; + /** * Maps the given rows on objects * @@ -133,12 +139,22 @@ class DataMapper implements \TYPO3\CMS\Core\SingletonInterface { $object = $this->createEmptyObject($className); $this->persistenceSession->registerObject($object, $row['uid']); $this->thawProperties($object, $row); + $this->emitAfterMappingSingleRow($object); $object->_memorizeCleanState(); $this->persistenceSession->registerReconstitutedEntity($object); } return $object; } + /** + * Emits a signal after mapping a single row. + * + * @param DomainObjectInterface $object The mapped object + */ + protected function emitAfterMappingSingleRow(DomainObjectInterface $object) { + $this->signalSlotDispatcher->dispatch(__CLASS__, 'afterMappingSingleRow', array($object)); + } + /** * Creates a skeleton of the specified object * -- GitLab