[Smarty Variables] Remove isset from location type form
authorEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 30 Nov 2021 00:02:43 +0000 (13:02 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 30 Nov 2021 01:25:16 +0000 (14:25 +1300)
https://dmaster.localhost:32353/civicrm/admin/locationType?reset=1

CRM/Admin/Page/LocationType.php
CRM/Core/Page/Basic.php
templates/CRM/Admin/Page/LocationType.tpl
tests/phpunit/CRM/Core/FormTest.php

index 45de123bcf2ef0732076afd7fd79d65988938a88..0b8b9022763e269e1ef4670a166423f5fb010016 100644 (file)
@@ -107,4 +107,24 @@ class CRM_Admin_Page_LocationType extends CRM_Core_Page_Basic {
     return 'civicrm/admin/locationType';
   }
 
+  /**
+   * @param $sort
+   * @param $action
+   * @param array $links
+   *
+   * @return array
+   */
+  protected function getRows($sort, $action, array $links): array {
+    $rows = parent::getRows($sort, $action, $links);
+    foreach ($rows as &$row) {
+      // prevent smarty notices.
+      foreach (['is_default', 'class', 'vcard_name'] as $expectedField) {
+        if (!isset($row['is_default'])) {
+          $row[$expectedField] = NULL;
+        }
+      }
+    }
+    return $rows;
+  }
+
 }
index 097ba8b6c07126840fb96e1d7d8dc8ffbe906cee..21b522032b6044a616778ca05e3996bd6295fe97 100644 (file)
@@ -203,67 +203,8 @@ abstract class CRM_Core_Page_Basic extends CRM_Core_Page {
     if ($action & CRM_Core_Action::ENABLE) {
       $action -= CRM_Core_Action::ENABLE;
     }
-    $baoString = $this->getBAOName();
-    $object = new $baoString();
-
-    $values = [];
-
-    // lets make sure we get the stuff sorted by name if it exists
-    $fields = &$object->fields();
-    $key = '';
-    if (!empty($fields['title'])) {
-      $key = 'title';
-    }
-    elseif (!empty($fields['label'])) {
-      $key = 'label';
-    }
-    elseif (!empty($fields['name'])) {
-      $key = 'name';
-    }
-
-    if (trim($sort)) {
-      $object->orderBy($sort);
-    }
-    elseif ($key) {
-      $object->orderBy($key . ' asc');
-    }
 
-    $contactTypes = CRM_Contact_BAO_ContactType::getSelectElements(FALSE, FALSE);
-    // find all objects
-    $object->find();
-    while ($object->fetch()) {
-      if (!isset($object->mapping_type_id) ||
-        // "1 for Search Builder"
-        $object->mapping_type_id != 1
-      ) {
-        $permission = CRM_Core_Permission::EDIT;
-        if ($key) {
-          $permission = $this->checkPermission($object->id, $object->$key);
-        }
-        if ($permission) {
-          $values[$object->id] = [];
-          CRM_Core_DAO::storeValues($object, $values[$object->id]);
-
-          if (is_a($object, 'CRM_Contact_DAO_RelationshipType')) {
-            if (isset($values[$object->id]['contact_type_a'])) {
-              $values[$object->id]['contact_type_a_display'] = $contactTypes[$values[$object->id]['contact_type_a']];
-            }
-            if (isset($values[$object->id]['contact_type_b'])) {
-              $values[$object->id]['contact_type_b_display'] = $contactTypes[$values[$object->id]['contact_type_b']];
-            }
-          }
-
-          // populate action links
-          $this->action($object, $action, $values[$object->id], $links, $permission);
-
-          if (isset($object->mapping_type_id)) {
-            $mappintTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Mapping', 'mapping_type_id');
-            $values[$object->id]['mapping_type'] = $mappintTypes[$object->mapping_type_id];
-          }
-        }
-      }
-    }
-    $this->assign('rows', $values);
+    $this->assign('rows', $this->getRows($sort, $action, $links));
   }
 
   /**
@@ -395,4 +336,75 @@ abstract class CRM_Core_Page_Basic extends CRM_Core_Page {
     $controller->run();
   }
 
+  /**
+   * @param $sort
+   * @param $action
+   * @param array $links
+   *
+   * @return array
+   */
+  protected function getRows($sort, $action, array $links): array {
+    $baoString = $this->getBAOName();
+    $object = new $baoString();
+
+    $values = [];
+
+    // lets make sure we get the stuff sorted by name if it exists
+    $fields = &$object->fields();
+    $key = '';
+    if (!empty($fields['title'])) {
+      $key = 'title';
+    }
+    elseif (!empty($fields['label'])) {
+      $key = 'label';
+    }
+    elseif (!empty($fields['name'])) {
+      $key = 'name';
+    }
+
+    if (trim($sort)) {
+      $object->orderBy($sort);
+    }
+    elseif ($key) {
+      $object->orderBy($key . ' asc');
+    }
+
+    $contactTypes = CRM_Contact_BAO_ContactType::getSelectElements(FALSE, FALSE);
+    // find all objects
+    $object->find();
+    while ($object->fetch()) {
+      if (!isset($object->mapping_type_id) ||
+        // "1 for Search Builder"
+        $object->mapping_type_id != 1
+      ) {
+        $permission = CRM_Core_Permission::EDIT;
+        if ($key) {
+          $permission = $this->checkPermission($object->id, $object->$key);
+        }
+        if ($permission) {
+          $values[$object->id] = [];
+          CRM_Core_DAO::storeValues($object, $values[$object->id]);
+
+          if (is_a($object, 'CRM_Contact_DAO_RelationshipType')) {
+            if (isset($values[$object->id]['contact_type_a'])) {
+              $values[$object->id]['contact_type_a_display'] = $contactTypes[$values[$object->id]['contact_type_a']];
+            }
+            if (isset($values[$object->id]['contact_type_b'])) {
+              $values[$object->id]['contact_type_b_display'] = $contactTypes[$values[$object->id]['contact_type_b']];
+            }
+          }
+
+          // populate action links
+          $this->action($object, $action, $values[$object->id], $links, $permission);
+
+          if (isset($object->mapping_type_id)) {
+            $mappintTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Mapping', 'mapping_type_id');
+            $values[$object->id]['mapping_type'] = $mappintTypes[$object->mapping_type_id];
+          }
+        }
+      }
+    }
+    return $values;
+  }
+
 }
index 80e8b716aa2f7a1deb69b714ad24370f476907a9..3ce80083fb610fbd36cc30273189bd03ff395ad1 100644 (file)
       </tr>
     </thead>
     {foreach from=$rows item=row}
-    <tr id="location_type-{$row.id}"  data-action="setvalue" class="{cycle values="odd-row,even-row"}{if !empty($row.class)} {$row.class}{/if} crm-entity {if NOT $row.is_active} disabled{/if}">
+    <tr id="location_type-{$row.id}"  data-action="setvalue" class="{cycle values="odd-row,even-row"} {$row.class} crm-entity {if NOT $row.is_active} disabled{/if}">
         <td class="crmf-name">{$row.name}</td>
         <td class="crmf-display_name crm-editable">{$row.display_name}</td>
-        <td class="crmf-vcard_name crm-editable">{if !empty($row.vcard_name)}{$row.vcard_name}{/if}</td>
+        <td class="crmf-vcard_name crm-editable">{$row.vcard_name}</td>
         <td class="crmf-description crm-editable">{$row.description}</td>
         <td id="row_{$row.id}_status" class="crmf-is_active">{if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td>
-        <td class="crmf-is_default">{if isset($row.is_default)}{icon condition=$row.is_default}{ts}Default{/ts}{/icon}&nbsp;{/if}</td>
+        <td class="crmf-is_default">{if $row.is_default}{icon condition=$row.is_default}{ts}Default{/ts}{/icon}&nbsp;{/if}</td>
         <td>{$row.action|replace:'xx':$row.id}</td>
     </tr>
     {/foreach}
index 958efb1b1cc9a5a0742ad3b3ae312d8ac9218d96..03c19affd628b2a7b8657a520c35449eba6dca29 100644 (file)
@@ -50,6 +50,9 @@ class CRM_Core_FormTest extends CiviUnitTestCase {
       'Add New Tag' => [
         'civicrm/tag/edit?action=add&parent_id=',
       ],
+      'Location Type' => [
+        'civicrm/admin/locationType?reset=1',
+      ],
       'Assign Account to Financial Type' => [
         'civicrm/admin/financial/financialType/accounts?action=add&reset=1&aid=1',
       ],