65 lines
2.4 KiB
PHP
65 lines
2.4 KiB
PHP
<?php
|
|
require_once('Models/FacilityDataSet.php');
|
|
require_once("Models/Paginator.php");
|
|
// If page loads empty, set initial headers
|
|
//if(empty($_GET)) {
|
|
// header("Location: ?sort=1&dir=asc&category=1&term=&page=0");
|
|
// exit;
|
|
//}
|
|
|
|
$filters = [
|
|
'category' => $_GET['category'] ?? '1', // Default category
|
|
'term' => $_GET['term'] ?? '', // Default term
|
|
'sort' => $_GET['sort'] ?? '1', // Default sort
|
|
'dir' => $_GET['dir'] ?? 'asc', // Default direction
|
|
'page' => $_GET['page'] ?? 0 // Default to first page
|
|
];
|
|
|
|
// If no query parameters exist (initial page load), redirect to set default ones
|
|
if (empty($_GET)) {
|
|
redirectWithFilters($filters);
|
|
}
|
|
|
|
$rowLimit = 5;
|
|
$facilityDataSet = new FacilityDataSet();
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
// Check if filters/sorting changed
|
|
$filtersChanged = (
|
|
$filters['category'] !== ($_POST['filterCat'] ?? $filters['category']) ||
|
|
$filters['term'] !== ($_POST['filter'] ?? $filters['term']) ||
|
|
$filters['sort'] !== ($_POST['sort'] ?? $filters['sort']) ||
|
|
$filters['dir'] !== ($_POST['dir'] ?? $filters['dir'])
|
|
);
|
|
|
|
$filters['category'] = filter_input(INPUT_POST, 'filterCat', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['category'];
|
|
$filters['term'] = filter_input(INPUT_POST, 'filter', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['term'];
|
|
$filters['sort'] = filter_input(INPUT_POST, 'sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['sort'];
|
|
$filters['dir'] = filter_input(INPUT_POST, 'dir', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['dir'];
|
|
|
|
// Reset page if filters changed
|
|
$filters['page'] = $filtersChanged ? 0 : $_POST['paginationButton'] ?? $filters['page'];
|
|
redirectWithFilters($filters);
|
|
}
|
|
|
|
$view->pageData = $facilityDataSet->fetchAll(
|
|
['category' => $filters['category'], 'term' => $filters['term']],
|
|
['sort' => $filters['sort'], 'dir' => $filters['dir']]
|
|
);
|
|
|
|
$view->paginator = new Paginator($rowLimit, $view->pageData);
|
|
$view->pageNumber = $view->paginator->getPageFromUri();
|
|
$view->pageData = $view->paginator->getPage($view->pageNumber);
|
|
|
|
// Send result count to view
|
|
$view->dbMessage = $view->paginator->countPageResults($view->pageNumber) == 0
|
|
? "No results"
|
|
: $view->paginator->countPageResults($view->pageNumber) . " result(s)";
|
|
|
|
// Redirect function
|
|
function redirectWithFilters($filters) {
|
|
$queryString = http_build_query($filters);
|
|
header("Location: ?" . $queryString);
|
|
exit;
|
|
}
|