diff --git a/Classes/Controller/ConfigurationController.php b/Classes/Controller/ConfigurationController.php index f16f33f7152b199abe95635f08bfe2556f6f1d8a..ad6dfabf35c9889baa24f02b5c78e817e0db5d24 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 2425c6fb673de37688541672542394bb48000cf5..0328484908688e74ebbf108790399f0930d09c0e 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 27cd6c96805d047aa804eca5a2fd84612ffc1c1c..dfeb25ab19cf9d84cb2bbdb23a9de3b2d42cfe37 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}" />