From e36d9057c1dfb661d42557ecd726e4b35946f685 Mon Sep 17 00:00:00 2001 From: Mathieu Lutfy Date: Wed, 13 Nov 2019 14:56:02 -0500 Subject: [PATCH] marketing/civicrm-website#163 Mitigate potential upgrade errors on missing msg_templates --- CRM/Upgrade/Incremental/MessageTemplates.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/CRM/Upgrade/Incremental/MessageTemplates.php b/CRM/Upgrade/Incremental/MessageTemplates.php index 842e4fa323bd..079e960c3bc9 100644 --- a/CRM/Upgrade/Incremental/MessageTemplates.php +++ b/CRM/Upgrade/Incremental/MessageTemplates.php @@ -267,7 +267,12 @@ public function updateTemplates() { $content = file_get_contents(\Civi::paths()->getPath('[civicrm.root]/xml/templates/message_templates/' . $template['name'] . '_' . $template['type'] . '.tpl')); $templatesToUpdate = []; if (!empty($workFlowID)) { - $templatesToUpdate[] = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_msg_template WHERE workflow_id = $workFlowID AND is_reserved = 1"); + // This could be empty if the template was deleted. It should not happen, + // but has been seen in the wild (ex: marketing/civicrm-website#163). + $id = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_msg_template WHERE workflow_id = $workFlowID AND is_reserved = 1"); + if ($id) { + $templatesToUpdate[] = $id; + } $defaultTemplateID = CRM_Core_DAO::singleValueQuery(" SELECT default_template.id FROM civicrm_msg_template reserved LEFT JOIN civicrm_msg_template default_template @@ -280,11 +285,13 @@ public function updateTemplates() { $templatesToUpdate[] = $defaultTemplateID; } - CRM_Core_DAO::executeQuery(" - UPDATE civicrm_msg_template SET msg_{$template['type']} = %1 WHERE id IN (" . implode(',', $templatesToUpdate) . ")", [ - 1 => [$content, 'String'], - ] - ); + if (!empty($templatesToUpdate)) { + CRM_Core_DAO::executeQuery(" + UPDATE civicrm_msg_template SET msg_{$template['type']} = %1 WHERE id IN (" . implode(',', $templatesToUpdate) . ")", [ + 1 => [$content, 'String'], + ] + ); + } } } }