diff --git a/classes/migration/upgrade/v3_4_0/I11125_UpdateEmailTemplateVariables.php b/classes/migration/upgrade/v3_4_0/I11125_UpdateEmailTemplateVariables.php new file mode 100644 index 00000000000..696bff6d6c2 --- /dev/null +++ b/classes/migration/upgrade/v3_4_0/I11125_UpdateEmailTemplateVariables.php @@ -0,0 +1,92 @@ +renameTemplateVariables($this->oldToNewVariablesMap()); + } + + public function down(): void + { + $newToOldVariableMap = array_map(function ($variablesMap) { + return array_flip($variablesMap); + }, $this->oldToNewVariablesMap()); + + $this->renameTemplateVariables($newToOldVariableMap); + } + + /** + * Replaces email template variables in templates' subject and body + */ + protected function renameTemplateVariables(array $oldNewVariablesMap): void + { + foreach ($oldNewVariablesMap as $emailKey => $variablesMap) { + $existingVariables = []; + $replacementsVariables = []; + + foreach ($variablesMap as $key => $value) { + $existingVariables[] = '/\{\$' . $key . '\}/'; + $replacementsVariables[] = '{$' . $value . '}'; + } + + // Default templates + $data = DB::table('email_templates_default_data')->where('email_key', $emailKey)->get(); + + $data->each(function (object $entry) use ($existingVariables, $replacementsVariables) { + $subject = preg_replace($existingVariables, $replacementsVariables, $entry->subject); + $body = preg_replace($existingVariables, $replacementsVariables, $entry->body); + DB::table('email_templates_default_data') + ->where('email_key', $entry->{'email_key'}) + ->where('locale', $entry->{'locale'}) + ->update(['subject' => $subject, 'body' => $body]); + }); + + // Custom templates + $customData = DB::table('email_templates')->where('email_key', $emailKey)->get(); + $customData->each(function (object $customEntry) use ($existingVariables, $replacementsVariables) { + $emailSettingsRows = DB::table('email_templates_settings')->where('email_id', $customEntry->{'email_id'})->get(); + foreach ($emailSettingsRows as $emailSettingsRow) { + $value = preg_replace($existingVariables, $replacementsVariables, $emailSettingsRow->{'setting_value'}); + DB::table('email_templates_settings') + ->where('email_id', $emailSettingsRow->{'email_id'}) + ->where('locale', $emailSettingsRow->{'locale'}) + ->where('setting_name', $emailSettingsRow->{'setting_name'}) + ->update(['setting_value' => $value]); + } + }); + } + } + + /** + * @return array [email_key => [old_variable => new_variable]] + */ + protected function oldToNewVariablesMap(): array + { + return [ + 'COPYEDIT_REQUEST' => [ + 'contextAcronym' => 'contextAcronym', + ], + 'LAYOUT_REQUEST' => [ + 'contextAcronym' => 'contextAcronym', + ], + ]; + } +} diff --git a/locale/gd/submission.po b/locale/gd/submission.po index 7c9a6eb9529..13de0d523c0 100644 --- a/locale/gd/submission.po +++ b/locale/gd/submission.po @@ -1728,7 +1728,9 @@ msgid "notification.type.editorAssign" msgstr "" msgid "notification.type.copyeditorRequest" -msgstr "" +msgstr +"Chaidh iarraidh ort lèirmheas a dhèanamh air a’ ghrinn-deasachadh a rinneadh " +"air “{$title}”." msgid "notification.type.layouteditorRequest" msgstr ""