<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 5 |
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2019 |
- +--------------------------------------------------------------------+
- | This file is a part of CiviCRM. |
- | |
- | CiviCRM is free software; you can copy, modify, and distribute it |
- | under the terms of the GNU Affero General Public License |
- | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
+ | Copyright CiviCRM LLC. All rights reserved. |
| |
- | CiviCRM is distributed in the hope that it will be useful, but |
- | WITHOUT ANY WARRANTY; without even the implied warranty of |
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
- | See the GNU Affero General Public License for more details. |
- | |
- | You should have received a copy of the GNU Affero General Public |
- | License and the CiviCRM Licensing Exception along |
- | with this program; if not, contact CiviCRM LLC |
- | at info[AT]civicrm[DOT]org. If you have questions about the |
- | GNU Affero General Public License or the licensing of CiviCRM, |
- | see the CiviCRM license FAQ at http://civicrm.org/licensing |
+ | This work is published under the GNU AGPLv3 license with some |
+ | permitted exceptions and without any warranty. For full license |
+ | and copyright information, see https://civicrm.org/licensing |
+--------------------------------------------------------------------+
*/
* abstract class.
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2019
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
*/
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',
(!$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).