Merge pull request #16001 from agileware/CIVICRM-1383
[civicrm-core.git] / CRM / Case / BAO / Query.php
index 0e18cf592784b1b6ceb26c090bd15c4251aae940..67d9d6f227a51bcaf6605638d3b2da763d52e7fa 100644 (file)
@@ -252,6 +252,8 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query {
       return;
     }
     list($name, $op, $value, $grouping, $wildcard) = $values;
+    $fields = CRM_Case_BAO_Case::fields();
+    $fieldSpec = $fields[$values[0]] ?? [];
     $val = $names = [];
     switch ($name) {
 
@@ -315,10 +317,7 @@ class CRM_Case_BAO_Query extends CRM_Core_BAO_Query {
         return;
 
       case 'case_subject':
-        $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_case.subject", $op, $value, 'String');
-        $query->_qill[$grouping][] = CRM_Contact_BAO_Query::getQillValue('CRM_Case_DAO_Case', $name, $value, $op, 'Case Subject');
-        $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1;
-        $query->_tables['civicrm_case_contact'] = $query->_whereTables['civicrm_case_contact'] = 1;
+        $query->handleWhereFromMetadata($fieldSpec, $name, $value, $op);
         return;
 
       case 'case_source_contact_id':
@@ -677,17 +676,20 @@ case_relation_type.id = case_relationship.relationship_type_id )";
   public static function getSearchFieldMetadata() {
     $fields = ['case_type_id', 'case_status_id', 'case_start_date', 'case_end_date', 'case_subject', 'case_id', 'case_deleted'];
     $metadata = civicrm_api3('Case', 'getfields', [])['values'];
+    $metadata['case_id'] = $metadata['id'];
     $metadata = array_intersect_key($metadata, array_flip($fields));
     $metadata['case_tags'] = [
       'title' => ts('Case Tag(s)'),
       'type' => CRM_Utils_Type::T_INT,
       'is_pseudofield' => TRUE,
+      'html' => ['type' => 'Select2'],
     ];
     if (CRM_Core_Permission::check('access all cases and activities')) {
       $metadata['case_owner'] = [
         'title' => ts('Cases'),
         'type' => CRM_Utils_Type::T_INT,
         'is_pseudofield' => TRUE,
+        'html' => ['type' => 'Radio'],
       ];
     }
     if (!CRM_Core_Permission::check('administer CiviCase')) {