From 3182e644deb3516e2433ab9f495ed27198ef4062 Mon Sep 17 00:00:00 2001 From: monishdeb Date: Wed, 14 May 2014 23:05:27 +0530 Subject: [PATCH] CRM-13981, migrate honoree information to uf_join.module_data during upgrade ---------------------------------------- * CRM-13981: Migrate "In Honor of" to Soft Credits https://issues.civicrm.org/jira/browse/CRM-13981 --- CRM/Upgrade/Incremental/php/FourFive.php | 64 ++++++++++++++++++- .../Incremental/sql/4.5.alpha1.mysql.tpl | 3 - 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/CRM/Upgrade/Incremental/php/FourFive.php b/CRM/Upgrade/Incremental/php/FourFive.php index f4c0b85016..caf71b2f32 100644 --- a/CRM/Upgrade/Incremental/php/FourFive.php +++ b/CRM/Upgrade/Incremental/php/FourFive.php @@ -71,8 +71,8 @@ class CRM_Upgrade_Incremental_php_FourFive { function upgrade_4_5_alpha1($rev) { // task to process sql + $this->addTask(ts('Migrate honoree information to module_data'), 'migrateHonoreeInfo'); $this->addTask(ts('Upgrade DB to 4.5.alpha1: SQL'), 'task_4_5_x_runSql', $rev); - $this->addTask(ts('Set default for Individual name fields configuration'), 'addNameFieldOptions'); // CRM-14522 - The below schema checking is done as foreign key name @@ -124,6 +124,68 @@ DROP KEY `{$dao->CONSTRAINT_NAME}`"; return TRUE; } + /** + * Migrate honoree information to uf_join.module_data as honoree columns (text and title) will be dropped + * on DB upgrade + * + * @param CRM_Queue_TaskContext $ctx + * + * @return bool TRUE for success + */ + static function migrateHonoreeInfo(CRM_Queue_TaskContext $ctx) { + $query = "ALTER TABLE `civicrm_uf_join` + ADD COLUMN `module_data` longtext COMMENT 'Json serialized array of data used by the ufjoin.module'"; + CRM_Core_DAO::executeQuery($query); + + $honorTypes = array_keys(CRM_Core_OptionGroup::values('honor_type')); + $ufGroupDAO = new CRM_Core_DAO_UFGroup(); + $ufGroupDAO->name = 'new_individual'; + $ufGroupDAO->find(TRUE); + + $query = "SELECT * FROM civicrm_contribution_page"; + $dao = CRM_Core_DAO::executeQuery($query); + + if ($dao->N) { + $domain = new CRM_Core_DAO_Domain; + $domain->find(TRUE); + while ($dao->fetch()) { + $honorParams = array('soft_credit' => array('soft_credit_types' => $honorTypes)); + if ($domain->locales) { + $locales = explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales); + foreach ($locales as $locale) { + $honor_block_title = "honor_block_title_{$locale}"; + $honor_block_text = "honor_block_text_{$locale}"; + $honorParams['soft_credit'] += array( + $locale => array( + 'honor_block_title' => $dao->$honor_block_title, + 'honor_block_text' => $dao->$honor_block_text, + ), + ); + } + } + else { + $honorParams['soft_credit'] += array( + 'default' => array( + 'honor_block_title' => $dao->honor_block_title, + 'honor_block_text' => $dao->honor_block_text, + ), + ); + } + $ufJoinParam = array( + 'module' => 'soft_credit', + 'entity_table' => 'civicrm_contribution_page', + 'is_active' => $dao->honor_block_is_active, + 'entity_id' => $dao->id, + 'uf_group_id' => $ufGroupDAO->id, + 'module_data' => json_encode($honorParams), + ); + CRM_Core_BAO_UFJoin::create($ufJoinParam); + } + } + + return TRUE; + } + /** * (Queue Task Callback) */ diff --git a/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl b/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl index 88efde42fa..fcde513b8a 100644 --- a/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl +++ b/CRM/Upgrade/Incremental/sql/4.5.alpha1.mysql.tpl @@ -134,9 +134,6 @@ VALUES (@uf_group_id_honoree_individual, 'last_name', 0, 1, 3, 'User and User Admin Only', 0, 1, NULL, {localize}'{ts escape="sql"}Last Name{/ts}'{/localize}, 'Individual'), (@uf_group_id_honoree_individual, 'email', 0, 1, 4, 'User and User Admin Only', 0, 1, 1, {localize}'{ts escape="sql"}Email Address{/ts}'{/localize}, 'Individual'); -ALTER TABLE `civicrm_uf_join` - ADD COLUMN `module_data` longtext COMMENT 'Json serialized array of data used by the ufjoin.module'; - {if $multilingual} {foreach from=$locales item=loc} ALTER TABLE civicrm_contribution_page DROP honor_block_title_{$loc}; -- 2.25.1