X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCase%2FInfo.php;h=ce5421fd1b0d754869efd47c00da6e5f7e1844ac;hb=3b7339b8901f6c480c23ac3a28e9fb152fcd1e42;hp=2a57400c683a9ed9ae4e5f32e87bc5e5b6a5f1f6;hpb=fd26f5cb9afddc176cb4005fcfc27f3c960abd1e;p=civicrm-core.git diff --git a/CRM/Case/Info.php b/CRM/Case/Info.php index 2a57400c68..ce5421fd1b 100644 --- a/CRM/Case/Info.php +++ b/CRM/Case/Info.php @@ -144,8 +144,14 @@ class CRM_Case_Info extends CRM_Core_Component_Info { } 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', @@ -246,7 +252,7 @@ class CRM_Case_Info extends CRM_Core_Component_Info { (!$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); @@ -254,6 +260,62 @@ class CRM_Case_Info extends CRM_Core_Component_Info { } } + /** + * 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).