From 2bc3bd8f47150b6fcae4f2f443033a79ab6c620f Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Fri, 15 Nov 2013 00:07:20 -0800 Subject: [PATCH] CRM-13768 - enable_components - Use same logic when toggling components via API and web UI ---------------------------------------- * CRM-13768: CiviCase not fully activated during extension installation http://issues.civicrm.org/jira/browse/CRM-13768 --- CRM/Admin/Form/Setting/Component.php | 14 +------------- CRM/Case/Info.php | 24 ++++++++++++++++++++++++ settings/Core.setting.php | 3 +++ 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/CRM/Admin/Form/Setting/Component.php b/CRM/Admin/Form/Setting/Component.php index ecae5f3068..6e10018ef6 100644 --- a/CRM/Admin/Form/Setting/Component.php +++ b/CRM/Admin/Form/Setting/Component.php @@ -108,19 +108,7 @@ class CRM_Admin_Form_Setting_Component extends CRM_Admin_Form_Setting { public function postProcess() { $params = $this->controller->exportValues($this->_name); - // if CiviCase is being enabled, - // load the case related sample data - if (in_array('CiviCase', $params['enableComponents']) && - !in_array('CiviCase', $this->_defaults['enableComponents']) - ) { - $config = CRM_Core_Config::singleton(); - CRM_Admin_Form_Setting_Component::loadCaseSampleData($config->dsn, $config->sqlDir . 'case_sample.mysql'); - CRM_Admin_Form_Setting_Component::loadCaseSampleData($config->dsn, $config->sqlDir . 'case_sample1.mysql'); - if (!CRM_Case_BAO_Case::createCaseViews()) { - $msg = ts("Could not create the MySQL views for CiviCase. Your mysql user needs to have the 'CREATE VIEW' permission"); - CRM_Core_Error::fatal($msg); - } - } + CRM_Case_Info::onToggleComponents($this->_defaults['enableComponents'], $params['enableComponents'], NULL); parent::commonProcess($params); // reset navigation when components are enabled / disabled diff --git a/CRM/Case/Info.php b/CRM/Case/Info.php index c9183e5f63..14346fabbf 100644 --- a/CRM/Case/Info.php +++ b/CRM/Case/Info.php @@ -152,5 +152,29 @@ class CRM_Case_Info extends CRM_Core_Component_Info { } } } + + /** + * (Setting Callback) + * Respond to changes in the "enable_components" setting + * + * If CiviCase is being enabled, load the case related sample data + * + * @param array $oldValue List of component names + * @param array $newValue List of component names + * @param array $metadata Specification of the setting (per *.settings.php) + */ + public static function onToggleComponents($oldValue, $newValue, $metadata) { + if (in_array('CiviCase', $newValue) && + !in_array('CiviCase', $oldValue) + ) { + $config = CRM_Core_Config::singleton(); + CRM_Admin_Form_Setting_Component::loadCaseSampleData($config->dsn, $config->sqlDir . 'case_sample.mysql'); + CRM_Admin_Form_Setting_Component::loadCaseSampleData($config->dsn, $config->sqlDir . 'case_sample1.mysql'); + if (!CRM_Case_BAO_Case::createCaseViews()) { + $msg = ts("Could not create the MySQL views for CiviCase. Your mysql user needs to have the 'CREATE VIEW' permission"); + CRM_Core_Error::fatal($msg); + } + } + } } diff --git a/settings/Core.setting.php b/settings/Core.setting.php index e9a0f7bb51..b5031dd24f 100644 --- a/settings/Core.setting.php +++ b/settings/Core.setting.php @@ -626,6 +626,9 @@ When enabled, statistics about your CiviCRM installation are reported anonymousl 'is_contact' => 0, 'description' => null, 'help_text' => null, + 'on_change' => array( + array('CRM_Case_Info', 'onToggleComponents') + ), ), 'disable_core_css' => array( -- 2.25.1