CRM-18128 Stop bypassing caching for state_province abbreviation
authoreileen <emcnaughton@wikimedia.org>
Tue, 1 Mar 2016 05:17:11 +0000 (18:17 +1300)
committereileen <emcnaughton@wikimedia.org>
Thu, 3 Mar 2016 01:07:57 +0000 (14:07 +1300)
CRM/Core/PseudoConstant.php

index 16a6ef8933d91e728827171c7d3f9dfbcc3f8127..509a3ea29d55f8308f8ac27dc3cd64c3eb0781d4 100644 (file)
@@ -77,7 +77,7 @@ class CRM_Core_PseudoConstant {
    * States/provinces abbreviations
    * @var array
    */
-  private static $stateProvinceAbbreviation;
+  private static $stateProvinceAbbreviation = array();
 
   /**
    * Country.
@@ -738,22 +738,22 @@ class CRM_Core_PseudoConstant {
    *   array reference of all State/Province abbreviations.
    */
   public static function stateProvinceAbbreviation($id = FALSE, $limit = TRUE) {
-    if ($id > 1) {
-      $query = "
-SELECT abbreviation
+    if ($id && is_numeric($id)) {
+      if (!array_key_exists($id, (array) self::$stateProvinceAbbreviation)) {
+        $query = "SELECT abbreviation
 FROM   civicrm_state_province
 WHERE  id = %1";
-      $params = array(
-        1 => array(
-          $id,
-          'Integer',
-        ),
-      );
-      return CRM_Core_DAO::singleValueQuery($query, $params);
+        $params = array(
+          1 => array(
+            $id,
+            'Integer',
+          ),
+        );
+        self::$stateProvinceAbbreviation[$id] = CRM_Core_DAO::singleValueQuery($query, $params);
+      }
+      return self::$stateProvinceAbbreviation[$id];
     }
-
-    if (!self::$stateProvinceAbbreviation || !$id) {
-
+    else {
       $whereClause = FALSE;
 
       if ($limit) {
@@ -774,15 +774,6 @@ WHERE  id = %1";
       self::populate(self::$stateProvinceAbbreviation, 'CRM_Core_DAO_StateProvince', TRUE, 'abbreviation', 'is_active', $whereClause);
     }
 
-    if ($id) {
-      if (array_key_exists($id, self::$stateProvinceAbbreviation)) {
-        return self::$stateProvinceAbbreviation[$id];
-      }
-      else {
-        $result = NULL;
-        return $result;
-      }
-    }
     return self::$stateProvinceAbbreviation;
   }