X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCase%2FXMLProcessor.php;h=245e9ace1c268058e45222cd0903df05d3c2083b;hb=42b1aab33d897bac0413864358943caf39d60338;hp=863ea68ff5b58ca152ab9a3120fdc3f129fcafa6;hpb=7e51746c3b575e881c03fb6c679f50197042658c;p=civicrm-core.git diff --git a/CRM/Case/XMLProcessor.php b/CRM/Case/XMLProcessor.php index 863ea68ff5..245e9ace1c 100644 --- a/CRM/Case/XMLProcessor.php +++ b/CRM/Case/XMLProcessor.php @@ -42,26 +42,6 @@ class CRM_Case_XMLProcessor { */ public static $activityTypes = NULL; - /** - * FIXME: This does *NOT* belong in a static property, but we're too late in - * the 4.5-cycle to do the necessary cleanup. - * - * Format is array(int $id => string $relTypeCname). - * - * @var array|null - */ - public static $relationshipTypes = NULL; - - /** - * Relationship-types have four name fields (name_a_b, name_b_a, label_a_b, - * label_b_a), but CiviCase XML refers to reltypes by a single name. - * REL_TYPE_CNAME identifies the canonical name field as used by CiviCase XML. - * - * This appears to be "label_b_a", but IMHO "name_b_a" would be more - * sensible. - */ - const REL_TYPE_CNAME = 'label_b_a'; - /** * @param $caseType * @@ -111,19 +91,33 @@ class CRM_Case_XMLProcessor { } /** + * Get all relationship type labels + * + * TODO: These should probably be names, but under legacy behavior this has + * been labels. + * + * @param bool $fromXML + * Is this to be used for lookup of values from XML? + * Relationships are recorded in XML from the perspective of the non-client + * while relationships in the UI and everywhere else are from the + * perspective of the client. Since the XML can't be expected to be + * switched, the direction needs to be translated. * @return array */ - public function &allRelationshipTypes() { - if (self::$relationshipTypes === NULL) { + public function &allRelationshipTypes($fromXML = FALSE) { + if (!isset(Civi::$statics[__CLASS__]['reltypes'][$fromXML])) { $relationshipInfo = CRM_Core_PseudoConstant::relationshipType('label', TRUE); - self::$relationshipTypes = []; + Civi::$statics[__CLASS__]['reltypes'][$fromXML] = []; foreach ($relationshipInfo as $id => $info) { - self::$relationshipTypes[$id] = $info[CRM_Case_XMLProcessor::REL_TYPE_CNAME]; + Civi::$statics[__CLASS__]['reltypes'][$fromXML][$id . '_b_a'] = ($fromXML) ? $info['label_a_b'] : $info['label_b_a']; + if ($info['label_b_a'] !== $info['label_a_b']) { + Civi::$statics[__CLASS__]['reltypes'][$fromXML][$id . '_a_b'] = ($fromXML) ? $info['label_b_a'] : $info['label_a_b']; + } } } - return self::$relationshipTypes; + return Civi::$statics[__CLASS__]['reltypes'][$fromXML]; } /** @@ -131,7 +125,7 @@ class CRM_Case_XMLProcessor { */ public static function flushStaticCaches() { self::$activityTypes = NULL; - self::$relationshipTypes = NULL; + unset(Civi::$statics[__CLASS__]['reltypes']); } }