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