<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014 |
+ | Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| 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
*/
- static function &getFields($excludeActivityFields = FALSE) {
- $fields = array();
+ public static function &getFields($excludeActivityFields = FALSE) {
$fields = CRM_Case_BAO_Case::exportableFields();
// add activity related fields
}
/**
- * build select for Case
+ * Build select for Case.
*
- * @param $query
- *
- * @return void
- * @access public
+ * @param CRM_Contact_BAO_Query $query
*/
- static function select(&$query) {
+ public static function select(&$query) {
if (($query->_mode & CRM_Contact_BAO_Query::MODE_CASE) || !empty($query->_returnProperties['case_id'])) {
$query->_select['case_id'] = "civicrm_case.id as case_id";
$query->_element['case_id'] = 1;
}
/**
- * 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
- * @access public
+ * @param CRM_Contact_BAO_Query $query
*/
- static function where(&$query) {
+ public static function where(&$query) {
foreach ($query->_params as $id => $values) {
if (!is_array($values) || count($values) != 5) {
continue;
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
- *
- * @param $values
- * @param $query
+ * Where clause for a single field.
*
- * @return void
- * @access public
+ * @param array $values
+ * @param CRM_Contact_BAO_Query $query
*/
- static function whereClauseSingle(&$values, &$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];
- }
- }
+ if (strpos($name, 'type')) {
+ $name = 'case_type_id';
+ $label = 'Case Type(s)';
}
- elseif (is_numeric($value)) {
- $val[$value] = $value;
- $names[] = $value;
- }
- 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;
}
/**
- * @param $name
- * @param $mode
- * @param $side
+ * Build from clause.
+ *
+ * @param string $name
+ * @param string $mode
+ * @param string $side
*
* @return string
*/
- static function from($name, $mode, $side) {
+ public static function from($name, $mode, $side) {
$from = "";
switch ($name) {
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':
}
/**
- * getter for the qill object
+ * Getter for the qill object.
*
* @return string
- * @access public
*/
- function qill() {
+ public function qill() {
return (isset($this->_qill)) ? $this->_qill : "";
}
*
* @return array|null
*/
- static function defaultReturnProperties($mode,
+ public static function defaultReturnProperties(
+ $mode,
$includeCustomFields = TRUE
) {
}
/**
- * This includes any extra fields that might need for export etc
+ * This includes any extra fields that might need for export etc.
*/
- static function extraReturnProperties($mode) {
+ public static function extraReturnProperties($mode) {
$properties = NULL;
if ($mode & CRM_Contact_BAO_Query::MODE_CASE) {
/**
* @param $tables
*/
- static function tableNames(&$tables) {
+ public static function tableNames(&$tables) {
if (!empty($tables['civicrm_case'])) {
$tables = array_merge(array('civicrm_case_contact' => 1), $tables);
}
}
/**
- * add all the elements shared between case search and advanaced search
- *
- * @access public
- *
- * @param $form
+ * Add all the elements shared between case search and advanced search.
*
- * @return void
- * @static
+ * @param CRM_Core_Form $form
*/
- static function buildSearchForm(&$form) {
+ public static function buildSearchForm(&$form) {
$config = CRM_Core_Config::singleton();
//validate case configuration.
$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);
+ CRM_Core_Form_Date::buildDateRange($form, 'case_to', 1, '_end_date_low', '_end_date_high', ts('From'), FALSE);
$form->assign('validCiviCase', TRUE);
/**
* @param $row
- * @param $id
+ * @param int $id
*/
- static function searchAction(&$row, $id) {}
-}
+ public static function searchAction(&$row, $id) {
+ }
+}