CRM-13768 - api_v3_CaseTest::testCreateCaseEmpty - Fix regression and warning
[civicrm-core.git] / CRM / Case / Info.php
index c9183e5f6306d537d0758fd70d69cb403c39b6ed..02bb0e043c933ab43c0394504840329d2a15f5b5 100644 (file)
@@ -152,5 +152,31 @@ 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)
+      &&
+      (!$oldValue || !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);
+      }
+    }
+  }
 }