/**
+ * @var string
* @inheritDoc
*/
protected $keyword = 'case';
}
elseif ($dao instanceof CRM_Contact_DAO_RelationshipType) {
/** @var $dao CRM_Contact_DAO_RelationshipType */
- $count = CRM_Case_XMLRepository::singleton()
- ->getRelationshipReferenceCount($dao->{CRM_Case_XMLProcessor::REL_TYPE_CNAME});
+
+ // Need to look both directions, but no need to translate case role
+ // direction from XML perspective to client-based perspective
+ $xmlRepo = CRM_Case_XMLRepository::singleton();
+ $count = $xmlRepo->getRelationshipReferenceCount($dao->label_a_b);
+ if ($dao->label_a_b != $dao->label_b_a) {
+ $count += $xmlRepo->getRelationshipReferenceCount($dao->label_b_a);
+ }
if ($count > 0) {
$result[] = [
'name' => 'casetypexml:relationships',
(!$oldValue || !in_array('CiviCase', $oldValue))
) {
$pathToCaseSampleTpl = __DIR__ . '/xml/configuration.sample/';
- CRM_Admin_Form_Setting_Component::loadCaseSampleData($pathToCaseSampleTpl . 'case_sample.mysql.tpl');
+ self::loadCaseSampleData($pathToCaseSampleTpl . 'case_sample.mysql.tpl');
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);
}
}
+ /**
+ * Load case sample data.
+ *
+ * @param string $fileName
+ * @param bool $lineMode
+ */
+ public static function loadCaseSampleData($fileName, $lineMode = FALSE) {
+ $dao = new CRM_Core_DAO();
+ $db = $dao->getDatabaseConnection();
+
+ $domain = new CRM_Core_DAO_Domain();
+ $domain->find(TRUE);
+ $multiLingual = (bool) $domain->locales;
+ $smarty = CRM_Core_Smarty::singleton();
+ $smarty->assign('multilingual', $multiLingual);
+ $smarty->assign('locales', explode(CRM_Core_DAO::VALUE_SEPARATOR, $domain->locales));
+
+ if (!$lineMode) {
+
+ $string = $smarty->fetch($fileName);
+ // change \r\n to fix windows issues
+ $string = str_replace("\r\n", "\n", $string);
+
+ //get rid of comments starting with # and --
+
+ $string = preg_replace("/^#[^\n]*$/m", "\n", $string);
+ $string = preg_replace("/^(--[^-]).*/m", "\n", $string);
+
+ $queries = preg_split('/;$/m', $string);
+ foreach ($queries as $query) {
+ $query = trim($query);
+ if (!empty($query)) {
+ $res = &$db->query($query);
+ if (PEAR::isError($res)) {
+ die("Cannot execute $query: " . $res->getMessage());
+ }
+ }
+ }
+ }
+ else {
+ $fd = fopen($fileName, "r");
+ while ($string = fgets($fd)) {
+ $string = preg_replace("/^#[^\n]*$/m", "\n", $string);
+ $string = preg_replace("/^(--[^-]).*/m", "\n", $string);
+
+ $string = trim($string);
+ if (!empty($string)) {
+ $res = &$db->query($string);
+ if (PEAR::isError($res)) {
+ die("Cannot execute $string: " . $res->getMessage());
+ }
+ }
+ }
+ }
+ }
+
/**
* @return array
* Array(string $value => string $label).