X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCase%2FBAO%2FQuery.php;h=da243165ea405f75dd9a0a061f80635a9626f840;hb=b863b16436bd6aa0ba3d2effd1065b2b77083fb0;hp=49ec82f2b56a3f9f50681504d64709a75424a5fe;hpb=af321125666c7444accea956adaad22395fcd4c9;p=civicrm-core.git diff --git a/CRM/Case/BAO/Query.php b/CRM/Case/BAO/Query.php index 49ec82f2b5..da243165ea 100644 --- a/CRM/Case/BAO/Query.php +++ b/CRM/Case/BAO/Query.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -23,24 +23,23 @@ | GNU Affero General Public License or the licensing of CiviCRM, | | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ -*/ + */ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2014 - * $Id$ - * + * @copyright CiviCRM LLC (c) 2004-2015 */ class CRM_Case_BAO_Query { /** + * Get fields. + * * @param bool $excludeActivityFields * * @return array */ public static function &getFields($excludeActivityFields = FALSE) { - $fields = array(); $fields = CRM_Case_BAO_Case::exportableFields(); // add activity related fields @@ -52,11 +51,9 @@ class CRM_Case_BAO_Query { } /** - * Build select for Case + * Build select for Case. * - * @param $query - * - * @return void + * @param CRM_Contact_BAO_Query $query */ public static function select(&$query) { if (($query->_mode & CRM_Contact_BAO_Query::MODE_CASE) || !empty($query->_returnProperties['case_id'])) { @@ -218,12 +215,9 @@ class CRM_Case_BAO_Query { } /** - * Given a list of conditions in query generate the required - * where clause - * - * @param $query + * Given a list of conditions in query generate the required where clause. * - * @return void + * @param CRM_Contact_BAO_Query $query */ public static function where(&$query) { foreach ($query->_params as $id => $values) { @@ -235,85 +229,45 @@ class CRM_Case_BAO_Query { if ($query->_mode == CRM_Contact_BAO_Query::MODE_CONTACTS) { $query->_useDistinct = TRUE; } - $grouping = $query->_params[$id][3]; self::whereClauseSingle($query->_params[$id], $query); } } } /** - * Where clause for a single field + * Where clause for a single field. * - * @param $values - * @param $query - * - * @return void + * @param array $values + * @param CRM_Contact_BAO_Query $query */ public static function whereClauseSingle(&$values, &$query) { list($name, $op, $value, $grouping, $wildcard) = $values; $val = $names = array(); switch ($name) { - case 'case_status': - case 'case_status_id': - $statuses = CRM_Case_PseudoConstant::caseStatus(); - // Standardize input from checkboxes or single value - if (is_array($value) && $query->_mode == CRM_Contact_BAO_Query::MODE_CASE) { - $value = array_keys($value, 1); - } - foreach ((array) $value as $k) { - if ($k && isset($statuses[$k])) { - $val[$k] = $k; - $names[] = $statuses[$k]; - } - elseif ($k && ($v = CRM_Utils_Array::key($k, $statuses))) { - $val[$v] = $v; - $names[] = $k; - } - } - if ($val) { - $query->_where[$grouping][] = "civicrm_case.status_id IN (" . implode(',', $val) . ")"; - } - else { - $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_case.status_id', $op, $value, "Integer"); - } - $query->_qill[$grouping][] = ts('Case Status is %1', array(1 => implode(' ' . ts('or') . ' ', $names))); - $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; - return; case 'case_type_id': case 'case_type': - $caseTypes = CRM_Case_PseudoConstant::caseType('title', FALSE); + case 'case_status': + case 'case_status_id': + case 'case_id': - if (is_array($value)) { - foreach ($value as $k => $v) { - if ($v) { - $val[$k] = $k; - $names[] = $caseTypes[$k]; - } - } - } - elseif (is_numeric($value)) { - $val[$value] = $value; - $names[] = $value; + if (strpos($name, 'type')) { + $name = 'case_type_id'; + $label = 'Case Type(s)'; } - elseif ($caseTypeId = CRM_Utils_Array::key($value, $caseTypes)) { - $val[$caseTypeId] = $caseTypeId; - $names[] = $caseTypes[$caseTypeId]; - } - - if ($val) { - $query->_where[$grouping][] = "(civicrm_case.case_type_id IN (" . implode(',', $val) . "))"; + elseif (strpos($name, 'status')) { + $name = 'status_id'; + $label = 'Case Status(s)'; } else { - $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_case.case_type_id', $op, $value, "Integer"); + $name = 'id'; + $label = 'Case ID'; } - $query->_qill[$grouping][] = ts('Case Type is %1', array(1 => implode(' ' . ts('or') . ' ', $names))); - $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; - return; + $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_case.{$name}", $op, $value, "Integer"); + list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Case_DAO_Case', $name, $value, $op); - case 'case_id': - $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_case.id", $op, $value, 'Int'); + $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $label, 2 => $op, 3 => $value)); $query->_tables['civicrm_case'] = $query->_whereTables['civicrm_case'] = 1; return; @@ -527,9 +481,11 @@ class CRM_Case_BAO_Query { } /** + * Build from clause. + * * @param string $name - * @param $mode - * @param $side + * @param string $mode + * @param string $side * * @return string */ @@ -573,8 +529,8 @@ class CRM_Case_BAO_Query { case 'case_relationship': $session = CRM_Core_Session::singleton(); - $userID = $session->get('userID'); - $from .= " $side JOIN civicrm_relationship case_relationship ON ( case_relationship.contact_id_a = civicrm_case_contact.contact_id AND case_relationship.contact_id_b = {$userID} AND case_relationship.case_id = civicrm_case.id )"; + $userID = $session->get('userID'); + $from .= " $side JOIN civicrm_relationship case_relationship ON ( case_relationship.contact_id_a = civicrm_case_contact.contact_id AND case_relationship.contact_id_b = {$userID} AND case_relationship.case_id = civicrm_case.id )"; break; case 'case_relation_type': @@ -601,7 +557,7 @@ case_relation_type.id = case_relationship.relationship_type_id )"; } /** - * Getter for the qill object + * Getter for the qill object. * * @return string */ @@ -615,7 +571,7 @@ case_relation_type.id = case_relationship.relationship_type_id )"; * * @return array|null */ - static function defaultReturnProperties( + public static function defaultReturnProperties( $mode, $includeCustomFields = TRUE ) { @@ -658,7 +614,7 @@ case_relation_type.id = case_relationship.relationship_type_id )"; } /** - * This includes any extra fields that might need for export etc + * This includes any extra fields that might need for export etc. */ public static function extraReturnProperties($mode) { $properties = NULL; @@ -693,13 +649,9 @@ case_relation_type.id = case_relationship.relationship_type_id )"; } /** - * Add all the elements shared between case search and advanaced search - * + * Add all the elements shared between case search and advanced search. * * @param CRM_Core_Form $form - * - * @return void - * @static */ public static function buildSearchForm(&$form) { $config = CRM_Core_Config::singleton(); @@ -708,15 +660,17 @@ case_relation_type.id = case_relationship.relationship_type_id )"; $configured = CRM_Case_BAO_Case::isCaseConfigured(); $form->assign('notConfigured', !$configured['configured']); - $caseTypes = CRM_Case_PseudoConstant::caseType('title', FALSE); - foreach ($caseTypes as $id => $name) { - $form->addElement('checkbox', "case_type_id[$id]", NULL, $name); - } + $form->add('select', 'case_type_id', + ts('Case Type'), + CRM_Case_PseudoConstant::caseType('title', FALSE), + FALSE, array('class' => 'crm-select2', 'multiple' => 'multiple') + ); - $statuses = CRM_Case_PseudoConstant::caseStatus('label', FALSE); - foreach ($statuses as $id => $name) { - $form->addElement('checkbox', "case_status_id[$id]", NULL, $name); - } + $form->add('select', 'case_status_id', + ts('Case Status'), + CRM_Case_PseudoConstant::caseStatus('label', FALSE), + FALSE, array('class' => 'crm-select2', 'multiple' => 'multiple') + ); CRM_Core_Form_Date::buildDateRange($form, 'case_from', 1, '_start_date_low', '_start_date_high', ts('From'), FALSE); CRM_Core_Form_Date::buildDateRange($form, 'case_to', 1, '_end_date_low', '_end_date_high', ts('From'), FALSE); @@ -773,4 +727,5 @@ case_relation_type.id = case_relationship.relationship_type_id )"; */ public static function searchAction(&$row, $id) { } + }