<?php
namespace Drupal\cfp_payment_request\Plugin\views\filter;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\views\Plugin\views\filter\FilterPluginBase;
/**
* Filter PR view by correction deadline date.
*
* @ingroup views_filter_handlers
*
* @ViewsFilter("pr_correction_deadline")
*/
class PaymentRequestCorrectionDeadlineFilter extends FilterPluginBase {
use StringTranslationTrait;
/**
* {@inheritDoc}
*/
public function acceptExposedInput($input) {
return TRUE;
}
/**
* {@inheritDoc}
*/
public function buildExposedForm(&$form, FormStateInterface $form_state) {
if (empty($this->options['exposed'])) {
return;
}
$identifier = $this->options['expose']['identifier'];
$exposed_input = $this->view->getExposedInput();
$form[$identifier] = [
'#type' => 'fieldset',
'#title' => $this->t('Correction deadline'),
];
$form[$identifier]['start_date'] = [
'#type' => 'date',
'#title' => $this->t('Start date'),
'#default_value' => $exposed_input['start_date'] ?? NULL,
];
$form[$identifier]['end_date'] = [
'#type' => 'date',
'#title' => $this->t('End date'),
'#default_value' => $exposed_input['end_date'] ?? NULL,
];
return $form;
}
/**
* {@inheritDoc}
*/
public function query() {
$this->ensureMyTable();
/** @var \Drupal\views\Plugin\views\query\Sql $query */
$query = $this->query;
$query->addTable("cfp_payment_request__transition_history");
$input = $this->view->getExposedInput();
$start = isset($input['start_date']) ? strtotime($input['start_date']) : NULL;
if ($start) {
$query->addWhere($this->options['group'], "cfp_payment_request__transition_history.transition_history_deadline", $start, ">=");
}
$end = isset($input['end_date']) ? strtotime($input['end_date']) : NULL;
if ($end) {
$query->addWhere($this->options['group'], "cfp_payment_request__transition_history.transition_history_deadline", $end, "<=");
}
}
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter