From d2de21a249ba3e8f5e7af956a077b51446927736 Mon Sep 17 00:00:00 2001
From: Torsten Oppermann <torsten@sgalinski.de>
Date: Fri, 8 Mar 2019 13:14:52 +0100
Subject: [PATCH] [TASK]Migrating edited templates in database

---
 .../Controller/ConfigurationController.php    |  4 ++-
 Classes/Service/RegisterService.php           | 31 +++++++++++++++++++
 .../Templates/Configuration/Index.html        |  1 +
 3 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/Classes/Controller/ConfigurationController.php b/Classes/Controller/ConfigurationController.php
index f16f33f7..ad6dfabf 100644
--- a/Classes/Controller/ConfigurationController.php
+++ b/Classes/Controller/ConfigurationController.php
@@ -209,13 +209,13 @@ class ConfigurationController extends ActionController {
 		$templateName = $configuration['templateName'];
 		$extensionKey = $configuration['extensionKey'];
 		$oldTemplateName = $configuration['oldTemplateName'];
+		$oldExtensionKey = $configuration['oldExtensionKey'];
 		$csv = str_replace("\r", '', $configuration['csv']);
 		$subject = $configuration['subject'];
 		$description = $configuration['description'];
 
 		$markersCsv = \explode("\n", $csv);
 		$markers = [];
-
 		foreach ($markersCsv as $markerCsv) {
 			$rowArray = str_getcsv($markerCsv, ';');
 			if (!$rowArray[0]) {
@@ -227,7 +227,9 @@ class ConfigurationController extends ActionController {
 				'description' => $rowArray[2]
 			];
 		}
+
 		$registerService = $this->objectManager->get(RegisterService::class);
+		$registerService->migrateTemplateEntries($oldTemplateName, $oldExtensionKey, $templateName, $extensionKey);
 		$registerService->deleteRegisterFile($oldTemplateName);
 		$registerService->writeRegisterFile(
 			$templateName, $extensionKey, $markers, $subject, $description
diff --git a/Classes/Service/RegisterService.php b/Classes/Service/RegisterService.php
index 2425c6fb..03284849 100644
--- a/Classes/Service/RegisterService.php
+++ b/Classes/Service/RegisterService.php
@@ -386,4 +386,35 @@ class RegisterService implements \TYPO3\CMS\Core\SingletonInterface {
 
 		return TRUE;
 	}
+
+	/**
+	 * Update an edited template entry, so that it uses the new keys
+	 *
+	 * @param string $oldTemplateName
+	 * @param string $oldExtensionKey
+	 * @param string $newTemplateName
+	 * @param string $newExtensionKey
+	 */
+	public function migrateTemplateEntries(
+		string $oldTemplateName, string $oldExtensionKey,
+		string $newTemplateName, string $newExtensionKey
+	): void {
+		$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(
+			'tx_sgmail_domain_model_template'
+		);
+		$queryBuilder->update('tx_sgmail_domain_model_template')
+			->where(
+				$queryBuilder->expr()->eq('extension_key', '"' . $oldExtensionKey . '"')
+			)
+			->andWhere(
+				$queryBuilder->expr()->eq('template_name', '"' . $oldTemplateName . '"')
+			)
+			->set(
+				'extension_key', $newExtensionKey
+			)
+			->set(
+				'template_name', $newTemplateName
+			)
+			->execute();
+	}
 }
diff --git a/Resources/Private/Templates/Configuration/Index.html b/Resources/Private/Templates/Configuration/Index.html
index 27cd6c96..dfeb25ab 100644
--- a/Resources/Private/Templates/Configuration/Index.html
+++ b/Resources/Private/Templates/Configuration/Index.html
@@ -28,6 +28,7 @@
 			<div class="col-xs-12 col-md-10 col-md-offset-1">
 				<f:form.hidden name="extensionKey" value="{selectedExtensionKey}"/>
 				<f:form.hidden name="oldTemplateName" property="oldTemplateName" value="{templateName}"/>
+				<f:form.hidden name="oldExtensionKey" property="oldExtensionKey" value="{selectedExtensionKey}"/>
 				<div class="form-group">
 					<label for="extensionKey"><f:translate key="backend.create.extensionKey" /></label>
 					<f:form.textfield class="form-control" property="extensionKey" id="extensionKey" required="TRUE" value="{extensionKey}" />
-- 
GitLab