Add result list date and test filters
This commit is contained in:
@@ -13,6 +13,9 @@ class ResultsModel extends ListModel
|
||||
{
|
||||
parent::populateState($ordering, $direction);
|
||||
$this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search', '', 'string'));
|
||||
$this->setState('filter.test_name', $this->getUserStateFromRequest($this->context . '.filter.test_name', 'filter_test_name', '', 'string'));
|
||||
$this->setState('filter.date_from', $this->getUserStateFromRequest($this->context . '.filter.date_from', 'filter_date_from', '', 'string'));
|
||||
$this->setState('filter.date_to', $this->getUserStateFromRequest($this->context . '.filter.date_to', 'filter_date_to', '', 'string'));
|
||||
}
|
||||
|
||||
protected function getListQuery()
|
||||
@@ -30,6 +33,22 @@ class ResultsModel extends ListModel
|
||||
$query->where('(r.participant_name LIKE ' . $needle . ' OR s.title LIKE ' . $needle . ')');
|
||||
}
|
||||
|
||||
$testName = trim((string) $this->getState('filter.test_name'));
|
||||
if ($testName !== '') {
|
||||
$needle = $db->quote('%' . $db->escape($testName, true) . '%', false);
|
||||
$query->where('s.title LIKE ' . $needle);
|
||||
}
|
||||
|
||||
$dateFrom = (string) $this->getState('filter.date_from');
|
||||
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $dateFrom)) {
|
||||
$query->where('r.created >= ' . $db->quote($dateFrom . ' 00:00:00'));
|
||||
}
|
||||
|
||||
$dateTo = (string) $this->getState('filter.date_to');
|
||||
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $dateTo)) {
|
||||
$query->where('r.created <= ' . $db->quote($dateTo . ' 23:59:59'));
|
||||
}
|
||||
|
||||
return $query->order('r.created DESC, r.id DESC');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user