diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index bc127ac765b..6601418650b 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -6369,6 +6369,7 @@ public static function processSpecialFormValue(&$formValues, $specialFields, $ch * * @return string * list(string $orderByClause, string $additionalFromClause). + * * @throws \CRM_Core_Exception */ protected function prepareOrderBy($sort, $sortOrder) { diff --git a/CRM/Contact/BAO/SavedSearch.php b/CRM/Contact/BAO/SavedSearch.php index 2819b8d04b9..bea1cf56391 100644 --- a/CRM/Contact/BAO/SavedSearch.php +++ b/CRM/Contact/BAO/SavedSearch.php @@ -417,47 +417,26 @@ public static function saveSkippedElement(&$queryParams, $formValues) { * @param string $fieldName * @param string $op * @param array|string|int $value + * + * @throws \CiviCRM_API3_Exception */ public static function decodeRelativeFields(&$formValues, $fieldName, $op, $value) { // check if its a custom date field, if yes then 'searchDate' format the value - $isCustomDateField = CRM_Contact_BAO_Query::isCustomDateField($fieldName); - - // select date range as default - if ($isCustomDateField) { - if (array_key_exists('relative_dates', $formValues) && array_key_exists($fieldName, $formValues['relative_dates'])) { - $formValues[$fieldName . '_relative'] = $formValues['relative_dates'][$fieldName]; - } - else { - $formValues[$fieldName . '_relative'] = 0; - } + if (CRM_Contact_BAO_Query::isCustomDateField($fieldName)) { + return; } + switch ($op) { case 'BETWEEN': - if ($isCustomDateField) { - list($formValues[$fieldName . '_from'], $formValues[$fieldName . '_from_time']) = CRM_Utils_Date::setDateDefaults($value[0], 'searchDate'); - list($formValues[$fieldName . '_to'], $formValues[$fieldName . '_to_time']) = CRM_Utils_Date::setDateDefaults($value[1], 'searchDate'); - } - else { - list($formValues[$fieldName . '_from'], $formValues[$fieldName . '_to']) = $value; - } + list($formValues[$fieldName . '_from'], $formValues[$fieldName . '_to']) = $value; break; case '>=': - if ($isCustomDateField) { - list($formValues[$fieldName . '_from'], $formValues[$fieldName . '_from_time']) = CRM_Utils_Date::setDateDefaults($value, 'searchDate'); - } - else { - $formValues[$fieldName . '_from'] = $value; - } + $formValues[$fieldName . '_from'] = $value; break; case '<=': - if ($isCustomDateField) { - list($formValues[$fieldName . '_to'], $formValues[$fieldName . '_to_time']) = CRM_Utils_Date::setDateDefaults($value, 'searchDate'); - } - else { - $formValues[$fieldName . '_to'] = $value; - } + $formValues[$fieldName . '_to'] = $value; break; } } diff --git a/CRM/Contact/Form/Search/Criteria.php b/CRM/Contact/Form/Search/Criteria.php index 8a5221bd3a3..89af07e55bd 100644 --- a/CRM/Contact/Form/Search/Criteria.php +++ b/CRM/Contact/Form/Search/Criteria.php @@ -605,6 +605,8 @@ public static function notes(&$form) { * Generate the custom Data Fields based for those with is_searchable = 1. * * @param CRM_Contact_Form_Search $form + * + * @throws \CiviCRM_API3_Exception */ public static function custom(&$form) { $form->add('hidden', 'hidden_custom', 1); @@ -624,8 +626,8 @@ public static function custom(&$form) { foreach ($group['fields'] as $field) { $fieldId = $field['id']; $elementName = 'custom_' . $fieldId; - if ($field['data_type'] == 'Date' && $field['is_search_range']) { - CRM_Core_Form_Date::buildDateRange($form, $elementName, 1, '_from', '_to', ts('From:'), FALSE); + if ($field['data_type'] === 'Date' && $field['is_search_range']) { + $form->addDatePickerRange($elementName, $field['label']); } else { CRM_Core_BAO_CustomField::addQuickFormElement($form, $elementName, $fieldId, FALSE, TRUE); diff --git a/CRM/Core/BAO/Query.php b/CRM/Core/BAO/Query.php index f6b3374890b..818291aca33 100644 --- a/CRM/Core/BAO/Query.php +++ b/CRM/Core/BAO/Query.php @@ -47,8 +47,8 @@ public static function addCustomFormFields(&$form, $extends) { foreach ($group['fields'] as $field) { $fieldId = $field['id']; $elementName = 'custom_' . $fieldId; - if ($field['data_type'] == 'Date' && $field['is_search_range']) { - CRM_Core_Form_Date::buildDateRange($form, $elementName, 1, '_from', '_to', ts('From:'), FALSE); + if ($field['data_type'] === 'Date' && $field['is_search_range']) { + $form->addDatePickerRange($elementName, $field['label']); } else { CRM_Core_BAO_CustomField::addQuickFormElement($form, $elementName, $fieldId, FALSE, TRUE); diff --git a/templates/CRM/Core/DatePickerRange.tpl b/templates/CRM/Core/DatePickerRange.tpl index b23bf1e5910..3e9f668cc75 100644 --- a/templates/CRM/Core/DatePickerRange.tpl +++ b/templates/CRM/Core/DatePickerRange.tpl @@ -44,19 +44,5 @@ {$form.$toName.html} - {literal} - - {/literal} + {include file="CRM/Core/DatePickerRangejs.tpl" relativeName=$relativeName} diff --git a/templates/CRM/Core/DatePickerRangeCustomField.tpl b/templates/CRM/Core/DatePickerRangeCustomField.tpl new file mode 100644 index 00000000000..4448fb51a07 --- /dev/null +++ b/templates/CRM/Core/DatePickerRangeCustomField.tpl @@ -0,0 +1,51 @@ +{* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ +*} +{*this is included inside a table row*} +{assign var=relativeName value=$fieldName|cat:"_relative"} +{assign var='from' value=$from|default:'_low'} +{assign var='to' value=$to|default:'_high'} + + {if !$hideRelativeLabel} +