CRM-19401 - more generalized solution
authorspirit <info@miracom.com.ua>
Fri, 23 Sep 2016 06:17:27 +0000 (09:17 +0300)
committerspirit <info@miracom.com.ua>
Fri, 23 Sep 2016 06:17:40 +0000 (09:17 +0300)
----------------------------------------
* CRM-19401: Integer list option custom fields do not render properly in reports
  https://issues.civicrm.org/jira/browse/CRM-19401

CRM/Report/Form.php

index 40f63a464258a8e628b24e1da9d44e29bfc9ce7e..95ffc12c84792caf28f86681e004598eceab3c0b 100644 (file)
@@ -3706,15 +3706,6 @@ ORDER BY cg.weight, cf.weight";
         case 'Int':
           $curFilters[$fieldName]['operatorType'] = CRM_Report_Form::OP_INT;
           $curFilters[$fieldName]['type'] = CRM_Utils_Type::T_INT;
-          
-          // CRM-19401 fix
-          if ($customDAO->html_type == 'Select') {
-            $options = CRM_Core_PseudoConstant::get('CRM_Core_BAO_CustomField', 'custom_' . $customDAO->cf_id, array(), 'search');
-            if ($options !== FALSE) {
-              $curFilters[$fieldName]['operatorType'] = CRM_Core_BAO_CustomField::isSerialized($customDAO) ? CRM_Report_Form::OP_MULTISELECT_SEPARATOR : CRM_Report_Form::OP_MULTISELECT;
-              $curFilters[$fieldName]['options'] = $options;
-            }
-          }
           break;
 
         case 'Money':
@@ -3755,6 +3746,15 @@ ORDER BY cg.weight, cf.weight";
           $curFilters[$fieldName]['type'] = CRM_Utils_Type::T_STRING;
       }
 
+      // CRM-19401 fix
+      if ($customDAO->html_type == 'Select' && !array_key_exists('options', $curFilters[$fieldName])) {
+        $options = CRM_Core_PseudoConstant::get('CRM_Core_BAO_CustomField', 'custom_' . $customDAO->cf_id, array(), 'search');
+        if ($options !== FALSE) {
+          $curFilters[$fieldName]['operatorType'] = CRM_Core_BAO_CustomField::isSerialized($customDAO) ? CRM_Report_Form::OP_MULTISELECT_SEPARATOR : CRM_Report_Form::OP_MULTISELECT;
+          $curFilters[$fieldName]['options'] = $options;
+        }
+      }
+
       if (!array_key_exists('type', $curFields[$fieldName])) {
         $curFields[$fieldName]['type'] = CRM_Utils_Array::value('type', $curFilters[$fieldName], array());
       }