X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCase%2FManagedEntities.php;h=15bc97354f7e0448489900456c68aac7f9966ac9;hb=42b1aab33d897bac0413864358943caf39d60338;hp=daeebe989b037043d0cc1e29e64f99dda9c22c64;hpb=c219b4c822b7539da67f5eb9fdcde48b562720ed;p=civicrm-core.git diff --git a/CRM/Case/ManagedEntities.php b/CRM/Case/ManagedEntities.php index daeebe989b..15bc97354f 100644 --- a/CRM/Case/ManagedEntities.php +++ b/CRM/Case/ManagedEntities.php @@ -14,14 +14,14 @@ class CRM_Case_ManagedEntities { * @throws CRM_Core_Exception */ public static function createManagedCaseTypes() { - $entities = array(); + $entities = []; // Use hook_civicrm_caseTypes to build a list of OptionValues // In the long run, we may want more specialized logic for this, but // this design is fairly convenient and will allow us to replace it // without changing the hook_civicrm_caseTypes interface. - $caseTypes = array(); + $caseTypes = []; CRM_Utils_Hook::caseTypes($caseTypes); $proc = new CRM_Case_XMLProcessor(); @@ -32,11 +32,11 @@ class CRM_Case_ManagedEntities { } if (isset($caseType['module'], $caseType['name'], $caseType['file'])) { - $entities[] = array( + $entities[] = [ 'module' => $caseType['module'], 'name' => $caseType['name'], 'entity' => 'CaseType', - 'params' => array( + 'params' => [ 'version' => 3, 'name' => $caseType['name'], 'title' => (string) $xml->name, @@ -44,8 +44,8 @@ class CRM_Case_ManagedEntities { 'is_reserved' => 1, 'is_active' => 1, 'weight' => $xml->weight ? $xml->weight : 1, - ), - ); + ], + ]; } else { throw new CRM_Core_Exception("Invalid case type"); @@ -64,26 +64,26 @@ class CRM_Case_ManagedEntities { * @see CRM_Utils_Hook::managed */ public static function createManagedActivityTypes(CRM_Case_XMLRepository $xmlRepo, CRM_Core_ManagedEntities $me) { - $result = array(); + $result = []; $validActTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, TRUE, 'name'); $actTypes = $xmlRepo->getAllDeclaredActivityTypes(); foreach ($actTypes as $actType) { - $managed = array( + $managed = [ 'module' => 'civicrm', 'name' => "civicase:act:$actType", 'entity' => 'OptionValue', 'update' => 'never', 'cleanup' => 'unused', - 'params' => array( + 'params' => [ 'version' => 3, 'option_group_id' => 'activity_type', 'label' => $actType, 'name' => $actType, 'description' => $actType, 'component_id' => 'CiviCase', - ), - ); + ], + ]; // We'll create managed-entity if this record doesn't exist yet // or if we previously decided to manage this record. @@ -108,32 +108,46 @@ class CRM_Case_ManagedEntities { * @see CRM_Utils_Hook::managed */ public static function createManagedRelationshipTypes(CRM_Case_XMLRepository $xmlRepo, CRM_Core_ManagedEntities $me) { - $result = array(); - - $p = new CRM_Case_XMLProcessor(); - $validRelTypes = $p->allRelationshipTypes(); + $result = []; + + if (!isset(Civi::$statics[__CLASS__]['reltypes'])) { + $relationshipInfo = CRM_Core_PseudoConstant::relationshipType('label', TRUE, NULL); + foreach ($relationshipInfo as $id => $relTypeDetails) { + Civi::$statics[__CLASS__]['reltypes']["{$id}_a_b"] = $relTypeDetails['label_a_b']; + if ($relTypeDetails['label_a_b'] != $relTypeDetails['label_b_a']) { + Civi::$statics[__CLASS__]['reltypes']["{$id}_b_a"] = $relTypeDetails['label_b_a']; + } + } + } + $validRelTypes = Civi::$statics[__CLASS__]['reltypes']; $relTypes = $xmlRepo->getAllDeclaredRelationshipTypes(); foreach ($relTypes as $relType) { - $managed = array( + // Making assumption that client is the A side of the relationship. + // Relationship label coming from XML, meaning from perspective of + // non-client. + + // These assumptions only apply if a case type is introduced without the + // relationship types already existing. + $managed = [ 'module' => 'civicrm', 'name' => "civicase:rel:$relType", 'entity' => 'RelationshipType', 'update' => 'never', 'cleanup' => 'unused', - 'params' => array( + 'params' => [ 'version' => 3, 'name_a_b' => "$relType is", 'name_b_a' => $relType, 'label_a_b' => "$relType is", 'label_b_a' => $relType, 'description' => $relType, - 'contact_type_a' => 'Individual', - 'contact_type_b' => 'Individual', + 'contact_type_a' => NULL, + 'contact_type_b' => NULL, 'contact_sub_type_a' => NULL, 'contact_sub_type_b' => NULL, - ), - ); + ], + ]; // We'll create managed-entity if this record doesn't exist yet // or if we previously decided to manage this record.