Skip to content

Commit

Permalink
[Date picker][REF] Convert jcalendar date fields to date picker on me…
Browse files Browse the repository at this point in the history
…mber search screen

Ensure that relative fields are handled as per newer handling

Update to eileen's metadata date_query functions and fix template
  • Loading branch information
seamuslee001 committed Sep 2, 2019
1 parent 57682f5 commit 1b36b65
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 89 deletions.
3 changes: 3 additions & 0 deletions CRM/Contact/BAO/Query.php
Original file line number Diff line number Diff line change
Expand Up @@ -1591,6 +1591,9 @@ public static function convertFormValues(&$formValues, $wildcard = 0, $useEquals
'pledge_create_date_relative',
'pledge_start_date_relative',
'pledge_payment_scheduled_date_relative',
'membership_join_date_relative',
'membership_start_date_relative',
'membership_end_date_relative',
];
// Handle relative dates first
foreach (array_keys($formValues) as $id) {
Expand Down
72 changes: 37 additions & 35 deletions CRM/Member/BAO/Query.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,19 +161,33 @@ public static function where(&$query) {
* @param CRM_Contact_BAO_Query $query
*/
public static function whereClauseSingle(&$values, &$query) {
if ($query->buildDateRangeQuery($values)) {
// @todo - move this to Contact_Query in or near the call to
// $this->buildRelativeDateQuery($values);
return;
}
list($name, $op, $value, $grouping) = $values;
switch ($name) {
case 'member_join_date_low':
case 'member_join_date_high':
Civi::log()->warning(
'member_join_date field is deprecated please use membership_join_date field instead',
['civi.tag' => 'deprecated']
);
$fldName = str_replace(['_low', '_high'], '', $name);
$query->dateQueryBuilder($values,
'civicrm_membership', 'member_join_date', 'join_date',
'civicrm_membership', $fldName, 'join_date',
'Member Since'
);
return;

case 'membership_start_date':
case 'member_start_date_low':
case 'member_start_date_high':
Civi::log()->warning(
'member_start_date field is deprecated please use membership_start_date field instead',
['civi.tag' => 'deprecated']
);
$fldName = str_replace(['_low', '_high'], '', $name);
$query->dateQueryBuilder($values,
'civicrm_membership', $fldName, 'start_date',
Expand All @@ -184,6 +198,10 @@ public static function whereClauseSingle(&$values, &$query) {
case 'membership_end_date':
case 'member_end_date_low':
case 'member_end_date_high':
Civi::log()->warning(
'member_end_date field is deprecated please use membership_end_date field instead',
['civi.tag' => 'deprecated']
);
$fldName = str_replace(['_low', '_high'], '', $name);
$query->dateQueryBuilder($values,
'civicrm_membership', $fldName, 'end_date',
Expand Down Expand Up @@ -376,6 +394,7 @@ public static function whereClauseSingle(&$values, &$query) {
$query->_qill[$grouping][] = $value ? ts("Membership Status Is Overriden") : ts("Membership Status Is NOT Overriden");
$query->_tables['civicrm_membership'] = $query->_whereTables['civicrm_membership'] = 1;
return;

}
}

Expand Down Expand Up @@ -470,12 +489,29 @@ public static function defaultReturnProperties(
return $properties;
}

/**
* Get the metadata for fields to be included on the grant search form.
*
* @throws \CiviCRM_API3_Exception
*/
public static function getSearchFieldMetadata() {
$fields = [
'membership_join_date',
'membership_start_date',
'membership_end_date',
];
$metadata = civicrm_api3('Membership', 'getfields', [])['values'];
return array_intersect_key($metadata, array_flip($fields));
}

/**
* Build the search form.
*
* @param CRM_Core_Form $form
*/
public static function buildSearchForm(&$form) {
$form->addSearchFieldMetadata(['Membership' => self::getSearchFieldMetadata()]);
$form->addFormFieldsFromMetadata();
$membershipStatus = CRM_Member_PseudoConstant::membershipStatus(NULL, NULL, 'label', FALSE, FALSE);
$form->add('select', 'membership_status_id', ts('Membership Status'), $membershipStatus, FALSE, [
'id' => 'membership_status_id',
Expand All @@ -493,17 +529,6 @@ public static function buildSearchForm(&$form) {
$form->addElement('text', 'member_source', ts('Source'));
$form->add('number', 'membership_id', ts('Membership ID'), ['class' => 'four', 'min' => 1]);

CRM_Core_Form_Date::buildDateRange($form, 'member_join_date', 1, '_low', '_high', ts('From'), FALSE);
$form->addElement('hidden', 'member_join_date_range_error');

CRM_Core_Form_Date::buildDateRange($form, 'member_start_date', 1, '_low', '_high', ts('From'), FALSE);
$form->addElement('hidden', 'member_start_date_range_error');

CRM_Core_Form_Date::buildDateRange($form, 'member_end_date', 1, '_low', '_high', ts('From'), FALSE);
$form->addElement('hidden', 'member_end_date_range_error');

$form->addFormRule(['CRM_Member_BAO_Query', 'formRule'], $form);

$form->addYesNo('membership_is_current_member', ts('Current Member?'), TRUE);
$form->addYesNo('member_is_primary', ts('Primary Member?'), TRUE);
$form->addYesNo('member_pay_later', ts('Pay Later?'), TRUE);
Expand Down Expand Up @@ -543,27 +568,4 @@ public static function tableNames(&$tables) {
}
}

/**
* Custom form rules.
*
* @param array $fields
* @param array $files
* @param CRM_Core_Form $form
*
* @return bool|array
*/
public static function formRule($fields, $files, $form) {
$errors = [];

if ((empty($fields['member_join_date_low']) || empty($fields['member_join_date_high'])) && (empty($fields['member_start_date_low']) || empty($fields['member_start_date_high'])) && (empty($fields['member_end_date_low']) || empty($fields['member_end_date_high']))) {
return TRUE;
}

CRM_Utils_Rule::validDateRange($fields, 'member_join_date', $errors, ts('Member Since'));
CRM_Utils_Rule::validDateRange($fields, 'member_start_date', $errors, ts('Start Date'));
CRM_Utils_Rule::validDateRange($fields, 'member_end_date', $errors, ts('End Date'));

return empty($errors) ? TRUE : $errors;
}

}
16 changes: 3 additions & 13 deletions CRM/Member/Form/Search.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ public function preProcess() {
}

if ($this->_force) {
$this->addSearchFieldMetadata(['Membership' => CRM_Member_BAO_Query::getSearchFieldMetadata()]);
$this->addFormFieldsFromMetadata();
$this->postProcess();
$this->set('force', 0);
}
Expand Down Expand Up @@ -227,8 +229,7 @@ public function postProcess() {
}

$this->_done = TRUE;

$this->_formValues = $this->controller->exportValues($this->_name);
$this->setFormValues();

$this->fixFormValues();

Expand Down Expand Up @@ -292,17 +293,6 @@ public function postProcess() {
$controller->run();
}

/**
* Set default values.
*
* @todo - can this function override be removed?
*
* @return array
*/
public function setDefaultValues() {
return $this->_defaults;
}

/**
* If this search has been forced then see if there are any get values, and if so over-ride the post values.
*
Expand Down
6 changes: 6 additions & 0 deletions CRM/Upgrade/Incremental/php/FiveEighteen.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,9 @@ public function upgrade_5_18_alpha1($rev) {
$this->addTask('Update smart groups to rename filters on pledge_payment_date to pledge_payment_scheduled_date', 'updateSmartGroups', [
'renameField' => [
['old' => 'pledge_payment_date', 'new' => 'pledge_payment_scheduled_date'],
['old' => 'member_join_date', 'new' => 'membership_join_date'],
['old' => 'member_start_date', 'new' => 'membership_start_date'],
['old' => 'member_end_date', 'new' => 'membership_end_date'],
],
]);
$this->addTask('Update smart groups where jcalendar fields have been converted to datepicker', 'updateSmartGroups', [
Expand All @@ -93,6 +96,9 @@ public function upgrade_5_18_alpha1($rev) {
'pledge_create_date',
'pledge_end_date',
'pledge_start_date',
'membership_join_date',
'membership_end_date',
'membership_start_date',
],
]);
$this->addTask('Update civicrm_mapping_field and civicrm_uf_field for change in join_date name', 'updateJoinDateMappingUF');
Expand Down
65 changes: 25 additions & 40 deletions templates/CRM/Member/Form/Search/Common.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -33,58 +33,43 @@
</tr>

<tr>
<td>
{$form.member_source.label}
<br />{$form.member_source.html}
<p>
{$form.member_test.label} {help id="is-test" file="CRM/Contact/Form/Search/Advanced"} &nbsp;{$form.member_test.html}
</p>
<td>{$form.member_source.label}<br />
{$form.member_source.html}
</td>
<td>
<p>
{$form.membership_is_current_member.label}
{$form.membership_is_current_member.label}<br />
{$form.membership_is_current_member.html}
</p>
<p>
{$form.member_is_primary.label}
{help id="id-member_is_primary" file="CRM/Member/Form/Search.hlp"}
{$form.member_is_primary.html}
</p>
<p>
{$form.member_pay_later.label}&nbsp;{$form.member_pay_later.html}
</p>
<p>
{if $form.member_auto_renew}
<label>{$form.member_auto_renew.label}</label>
{help id="id-member_auto_renew" file="CRM/Member/Form/Search.hlp"}
<br/>
{$form.member_auto_renew.html}
{/if}
</p>
<p>
{$form.member_is_override.label}
{help id="id-member_is_override" file="CRM/Member/Form/Search.hlp"}
{$form.member_is_override.html}
</p>
</td>
</tr>

<tr>
<td>{$form.member_test.label} {help id="is-test" file="CRM/Contact/Form/Search/Advanced"} &nbsp;{$form.member_test.html}
</td>
<td>
{$form.member_is_primary.label} {help id="id-member_is_primary" file="CRM/Member/Form/Search.hlp"} {$form.member_is_primary.html}
</td>
</tr>
<tr><td><label>{$form.membership_id.label}</label> {$form.membership_id.html}</td>
<td>{$form.member_pay_later.label}&nbsp;{$form.member_pay_later.html}</td>
</tr>

<tr><td><label>{ts}Member Since{/ts}</label></td></tr>
<tr>
{include file="CRM/Core/DateRange.tpl" fieldName="member_join_date" from='_low' to='_high'}
<td>
{if $form.member_auto_renew}
<label>{$form.member_auto_renew.label}</label>
{help id="id-member_auto_renew" file="CRM/Member/Form/Search.hlp"}
<br/>
{$form.member_auto_renew.html}
{/if}
</td>
<td>{$form.member_is_override.label}{help id="id-member_is_override" file="CRM/Member/Form/Search.hlp"}{$form.member_is_override.html}</td>
</tr>

<tr><td><label>{ts}Start Date{/ts}</label></td></tr>
<tr>
{include file="CRM/Core/DateRange.tpl" fieldName="member_start_date" from='_low' to='_high'}
{include file="CRM/Core/DatePickerRangeWrapper.tpl" fieldName="membership_join_date" colspan='2'}
</tr>
<tr>
{include file="CRM/Core/DatePickerRangeWrapper.tpl" fieldName="membership_start_date" colspan='2'}
</tr>

<tr><td><label>{ts}End Date{/ts}</label></td></tr>
<tr>
{include file="CRM/Core/DateRange.tpl" fieldName="member_end_date" from='_low' to='_high'}
{include file="CRM/Core/DatePickerRangeWrapper.tpl" fieldName="membership_end_date" colspan='2'}
</tr>

{* campaign in membership search *}
Expand Down
2 changes: 1 addition & 1 deletion templates/CRM/Member/Form/Selector.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
{$row.membership_type}{if $row.is_test} ({ts}test{/ts}){/if}
{if $row.owner_membership_id}<br />({ts}by relationship{/ts}){/if}
</td>
<td class="crm-membership-join_date">{$row.join_date|truncate:10:''|crmDate}</td>
<td class="crm-membership-join_date">{$row.membership_join_date|truncate:10:''|crmDate}</td>
<td class="crm-membership-start_date">{$row.membership_start_date|truncate:10:''|crmDate}</td>
<td class="crm-membership-end_date">{$row.membership_end_date|truncate:10:''|crmDate}</td>
<td class="crm-membership-source">{$row.membership_source}</td>
Expand Down

0 comments on commit 1b36b65

Please sign in to comment.