134 lines
4.3 KiB
PHP
134 lines
4.3 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;
|
|
}
|
|
|
|
$filterArray = [
|
|
0 => "",
|
|
1 => "",
|
|
2 => "",
|
|
3 => "",
|
|
4 => "",
|
|
5 => "",
|
|
6 => "",
|
|
7 => "",
|
|
8 => ""
|
|
];
|
|
$sortArray = [
|
|
0 => "",
|
|
1 => "",
|
|
2 => "",
|
|
3 => "",
|
|
4 => "",
|
|
5 => "",
|
|
6 => "",
|
|
7 => "",
|
|
8 => ""
|
|
];
|
|
|
|
$rowLimit = 5;
|
|
|
|
$filterArray[$_GET['category'] ?? null] = $_GET['term'] ?? null;
|
|
$sortArray[$_GET['sort'] ?? null] = $_GET['dir'] ?? null;
|
|
|
|
$facilityDataSet = new FacilityDataSet();
|
|
|
|
if ((isset($_POST['filter']) && isset($_POST['filterCat']) && (isset($_POST['dir'])) && (isset($_POST['sort'])))) {
|
|
$filter = filter_input(INPUT_POST, 'filter', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? '';
|
|
$filterKey = filter_input(INPUT_POST, 'filterCat', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? '';
|
|
$direction = filter_input(INPUT_POST, 'dir', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? 'asc'; // Default to 'asc'
|
|
$sortKey = filter_input(INPUT_POST, 'sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? '1'; // Default to 'title'
|
|
$page = filter_input(INPUT_POST, 'paginationButton', FILTER_SANITIZE_NUMBER_INT) ?? 0; // Default page to 0 on new filter
|
|
$filterArray[$filterKey] = $filter;
|
|
$sortArray[$sortKey] = $direction;
|
|
var_dump($filterArray, $filterKey);
|
|
redirect($filter, $filterArray, $direction, $sortArray, $page);
|
|
}
|
|
function redirect($filter, $filterArray, $direction, $sortArray, $page) : void {
|
|
// Set the filter and generate the new URI
|
|
//$filterSet = $facilityDataSet->setFilterUri($applyFilters, array_search($applyFilters, $filterArray));
|
|
$filterSet = setUri($filter, array_search($filter, $filterArray), $direction, array_search($direction, $sortArray), $page);
|
|
// Parse the existing query string
|
|
$queryParams = [];
|
|
parse_str($filterSet["newUri"], $queryParams);
|
|
|
|
// Add or overwrite the 'page' parameter
|
|
$queryParams['page'] = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, [
|
|
'options' => ['default' => 0, 'min_range' => 0] // Default to 0 for the first page
|
|
]);
|
|
|
|
// Build the updated query string
|
|
$newQueryString = http_build_query($queryParams);
|
|
|
|
// Redirect with the updated URI
|
|
//var_dump("Redirecting to: {$filterSet["path"]}?{$newQueryString}");
|
|
header("Location: {$filterSet["path"]}?{$newQueryString}");
|
|
exit;
|
|
}
|
|
|
|
var_dump($filterArray);
|
|
$view->pageData = $facilityDataSet->fetchAll($filterArray, $sortArray);
|
|
$view->paginator = new Paginator($rowLimit, $view->pageData);
|
|
|
|
// Initialize paginator
|
|
$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)";
|
|
|
|
function setUri($filter, $category, $direction, $sort, $page)
|
|
{
|
|
$uri = $_SERVER['REQUEST_URI'];
|
|
$uriComp = parse_url($uri);
|
|
$params = [];
|
|
|
|
// Parse existing query parameters
|
|
if (isset($uriComp['query'])) {
|
|
parse_str($uriComp['query'], $params);
|
|
} else {
|
|
$params = array();
|
|
}
|
|
// Avoid unnecessary redirection if sort and filter is already correct
|
|
if (
|
|
(isset($params['sort']) && $params['sort'] === (string)$sort && isset($params['dir']) && $params['dir'] === $direction) &&
|
|
(isset($params['category']) && $params['category'] === (string)$category && isset($params['term']) && $params['term'] === $filter)
|
|
) {
|
|
exit;
|
|
}
|
|
|
|
// Update parameters
|
|
if (!empty($category)) {
|
|
$params['category'] = $category;
|
|
}
|
|
if (!empty($filter)) {
|
|
$params['term'] = $filter;
|
|
}
|
|
if (!empty($sort)) {
|
|
$params['sort'] = $sort;
|
|
}
|
|
if (!empty($direction)) {
|
|
$params['dir'] = $direction;
|
|
}
|
|
if (!empty($filter)) {
|
|
$params['page'] = $page;
|
|
}
|
|
|
|
// Rebuild the query string
|
|
$newUri = http_build_query($params);
|
|
var_dump($newUri);
|
|
// Redirect to the updated URI
|
|
// Use the current path or root
|
|
return
|
|
[
|
|
'newUri' => $newUri,
|
|
'path' => $uriComp['path'] ?? '/'
|
|
];
|
|
}
|