From ce4b9629bbfb98352ba07a46ebf59bfe8c836b68 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 6 Oct 2013 13:27:36 +0100 Subject: [PATCH] CRM-13446 - Upgrade - Abort if orphaned contribution recur --- CRM/Upgrade/Incremental/php/FourThree.php | 25 ++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/CRM/Upgrade/Incremental/php/FourThree.php b/CRM/Upgrade/Incremental/php/FourThree.php index 278f010e52..821260d0b0 100644 --- a/CRM/Upgrade/Incremental/php/FourThree.php +++ b/CRM/Upgrade/Incremental/php/FourThree.php @@ -47,7 +47,7 @@ class CRM_Upgrade_Incremental_php_FourThree { * * @param $postUpgradeMessage string, alterable * @param $rev string, a version number, e.g. '4.3.alpha1', '4.3.beta3', '4.3.0' - * @return void + * @return void|bool */ function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { if ($rev == '4.3.beta3') { @@ -73,6 +73,29 @@ class CRM_Upgrade_Incremental_php_FourThree { CRM_Core_Error::fatal('Please reset the Drupal cache (Administer => Site Configuration => Performance => Clear cached data))'); } } + + if ($rev == '4.3.6') { + $constraintArray = array( + 'civicrm_contact' => 'contact_id', + 'civicrm_campaign' => 'campaign_id' + ); + foreach ($constraintArray as $key => $value) { + $query = "SELECT contri_recur.id FROM civicrm_contribution_recur contri_recur LEFT JOIN {$key} ON contri_recur.{$value} = {$key}.id +WHERE {$key}.id IS NULL"; + if ($value == 'campaign_id') { + $query .= ' AND contri_recur.campaign_id IS NOT NULL '; + } + $dao = CRM_Core_DAO::executeQuery($query); + if ($dao->N) { + $invalidDataMessage = '' . + ts('Oops, it looks like you have orphaned recurring contribution records in your database. Before this upgrade can complete they will need to be fixed or deleted. You can review steps to correct this situation on the documentation wiki.', + array( 1 => 'http://wiki.civicrm.org/confluence/display/CRMDOC/Fixing+Orphaned+Contribution+Recur+Records') + ) . ''; + CRM_Core_Error::fatal($invalidDataMessage); + return FALSE; + } + } + } } /** -- 2.25.1