From: Tim Otten Date: Mon, 14 Jul 2014 05:55:29 +0000 (-0700) Subject: RelationshipType - Flush static caches after creating RelationshipType X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=4bc6c777bceb48b2b1944d2afada394c9327e4de;p=civicrm-core.git RelationshipType - Flush static caches after creating RelationshipType --- diff --git a/CRM/Case/XMLProcessor.php b/CRM/Case/XMLProcessor.php index 49a6338735..a174a6a8ea 100644 --- a/CRM/Case/XMLProcessor.php +++ b/CRM/Case/XMLProcessor.php @@ -34,6 +34,22 @@ */ class CRM_Case_XMLProcessor { + /** + * FIXME: This does *NOT* belong in a static property, but we're too late in + * the 4.5-cycle to do the necessary cleanup. + * + * @var array|null array(int $id => string $relTypeCname) + */ + 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. + * + * @var array|null array(int $id => string $relTypeCname) + */ + 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. @@ -86,29 +102,34 @@ class CRM_Case_XMLProcessor { * @return array */ function &allActivityTypes($indexName = TRUE, $all = FALSE) { - static $activityTypes = NULL; - if (!$activityTypes) { - $activityTypes = CRM_Case_PseudoConstant::caseActivityType($indexName, $all); + if (self::$activityTypes === NULL) { + self::$activityTypes = CRM_Case_PseudoConstant::caseActivityType($indexName, $all); } - return $activityTypes; + return self::$activityTypes; } /** * @return array */ function &allRelationshipTypes() { - static $relationshipTypes = array(); - - if (!$relationshipTypes) { - $relationshipInfo = CRM_Core_PseudoConstant::relationshipType(); + if (self::$relationshipTypes === NULL) { + $relationshipInfo = CRM_Core_PseudoConstant::relationshipType('label', TRUE); - $relationshipTypes = array(); + self::$relationshipTypes = array(); foreach ($relationshipInfo as $id => $info) { - $relationshipTypes[$id] = $info[CRM_Case_XMLProcessor::REL_TYPE_CNAME]; + self::$relationshipTypes[$id] = $info[CRM_Case_XMLProcessor::REL_TYPE_CNAME]; } } - return $relationshipTypes; + return self::$relationshipTypes; + } + + /** + * FIXME: This should not exist + */ + public static function flushStaticCaches() { + self::$activityTypes = NULL; + self::$relationshipTypes = NULL; } } diff --git a/CRM/Contact/BAO/RelationshipType.php b/CRM/Contact/BAO/RelationshipType.php index 58ec7cefd5..b41a21afda 100644 --- a/CRM/Contact/BAO/RelationshipType.php +++ b/CRM/Contact/BAO/RelationshipType.php @@ -126,7 +126,12 @@ class CRM_Contact_BAO_RelationshipType extends CRM_Contact_DAO_RelationshipType $relationshipType->id = CRM_Utils_Array::value('relationshipType', $ids); - return $relationshipType->save(); + $result = $relationshipType->save(); + + CRM_Core_PseudoConstant::relationshipType('label', TRUE); + CRM_Core_PseudoConstant::relationshipType('name', TRUE); + CRM_Case_XMLProcessor::flushStaticCaches(); + return $result; } /**