CRM-14952, fixes for sorting
authorkurund <kurund@civicrm.org>
Thu, 10 Jul 2014 11:55:05 +0000 (17:25 +0530)
committerkurund <kurund@civicrm.org>
Thu, 10 Jul 2014 11:55:05 +0000 (17:25 +0530)
----------------------------------------
* CRM-14952: Sorting on state in search throws FATAL error: Database Error Code: Unknown column 'civicrm_state_province.name' in 'field list'
  https://issues.civicrm.org/jira/browse/CRM-14952

CRM/Contact/BAO/Query.php

index 1ffdeb928f3196f96931bc811dbbbef94ff42b97..32d19ab5a93e2a690ad74307029bb54900333bfa 100644 (file)
@@ -4673,8 +4673,14 @@ civicrm_relationship.is_permission_a_b = 0
         if (!$count) {
           $this->_useDistinct = TRUE;
         }
-        $this->_fromClause = self::fromClause($this->_tables, NULL, NULL, $this->_primaryLocation, $this->_mode);
-        $this->_simpleFromClause = self::fromClause($this->_whereTables, NULL, NULL, $this->_primaryLocation, $this->_mode);
+
+        if (empty($this->_fromClause)) {
+          $this->_fromClause = self::fromClause($this->_tables, NULL, NULL, $this->_primaryLocation, $this->_mode);
+        }
+
+        if (empty($this->_simpleFromClause)) {
+          $this->_simpleFromClause = self::fromClause($this->_whereTables, NULL, NULL, $this->_primaryLocation, $this->_mode);
+        }
       }
     }
     else {
@@ -5493,7 +5499,13 @@ AND   displayRelType.is_active = 1
           //preserve id value
           $idColumn = "{$key}_id";
           $dao->$idColumn = $val;
-          $dao->$value['pseudoField'] = $dao->$key = CRM_Core_PseudoConstant::getLabel($baoName, $value['pseudoField'], $val);
+
+          if ($key == 'state_province_name') {
+            $dao->$value['pseudoField'] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($val);
+          }
+          else {
+            $dao->$value['pseudoField'] = $dao->$key = CRM_Core_PseudoConstant::getLabel($baoName, $value['pseudoField'], $val);
+          }
         }
         elseif ($value['pseudoField'] == 'state_province_abbreviation') {
           $dao->$key = CRM_Core_PseudoConstant::stateProvinceAbbreviation($val);