Merge pull request #15102 from mlutfy/fixPriceSetLabelHtml
[civicrm-core.git] / CRM / Case / ManagedEntities.php
index 382f9a05a7b3f0ac1e251591898eee4324c8e777..15bc97354f7e0448489900456c68aac7f9966ac9 100644 (file)
@@ -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,35 +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();
+    $result = [];
 
     if (!isset(Civi::$statics[__CLASS__]['reltypes'])) {
       $relationshipInfo = CRM_Core_PseudoConstant::relationshipType('label', TRUE, NULL);
-      Civi::$statics[__CLASS__]['reltypes'] = CRM_Utils_Array::collect(CRM_Case_XMLProcessor::REL_TYPE_CNAME, $relationshipInfo);
+      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.