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