74 lines
2.6 KiB
PHP
74 lines
2.6 KiB
PHP
<?php
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
require_once '../model/LocalArticleManager.php';
|
|
require_once '../model/ArticleManager.php';
|
|
require_once '../model/Article.php';
|
|
|
|
if ($_SERVER["REQUEST_METHOD"] === "GET" && isset($_GET["q"])) {
|
|
|
|
$search = trim($_GET["q"]);
|
|
if (empty($search)) {
|
|
$_SESSION["search_results"] = [];
|
|
$_SESSION["search_query"] = "";
|
|
$_SESSION["message"] = "missing_parameters";
|
|
} else {
|
|
try {
|
|
|
|
$articleManager = ArticleManager::getInstance();
|
|
|
|
$results = $articleManager->search($search);
|
|
|
|
$sortStyle = $_GET['sort'] ?? 'alphabet';
|
|
$_SESSION['search_sort'] = $sortStyle;
|
|
|
|
if ($sortStyle === 'alphabet') {
|
|
// Titel aufsteigend alphabetiisch sortiert
|
|
usort($results, function($a, $b) {
|
|
return strcasecmp($a->title, $b->title);
|
|
});
|
|
} elseif ($sortStyle === 'newest') {
|
|
// Datum neu zu alt sortiert
|
|
usort($results, function($a, $b) {
|
|
return strcmp($b->creationDate, $a->creationDate);
|
|
});
|
|
} elseif ($sortStyle === 'oldest') {
|
|
// Datum alt zu neu sortiert
|
|
usort($results, function($a, $b) {
|
|
return strcmp($a->creationDate, $b->creationDate);
|
|
});
|
|
}
|
|
|
|
// Ergebnisse werden in ein flaches array umgewandelt, da sont incomplete-PHP error im Ergebnis
|
|
$safeArrayResults = [];
|
|
foreach ($results as $obj) {
|
|
$safeArrayResults[] = [
|
|
"id" => $obj->id,
|
|
"title" => $obj->title,
|
|
"content" => $obj->content,
|
|
"author" => $obj->author,
|
|
"category" => $obj->category,
|
|
"tags" => $obj->tags,
|
|
"creationDate" => $obj->creationDate
|
|
];
|
|
}
|
|
|
|
$_SESSION["search_results"] = $safeArrayResults;
|
|
$_SESSION["search_query"] = $search;
|
|
$_SESSION["message"] = "new_search_results";
|
|
|
|
} catch (Exception $e){
|
|
$_SESSION["message"] = "internal_error";
|
|
}
|
|
}
|
|
|
|
$sort = $_GET['sort'] ?? 'alphabet';
|
|
$limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 10;
|
|
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
|
|
header("Location: ../../index.php?pfad=search-results&q=" . urlencode($search) . "&sort=" . urlencode($sort) . "&limit=" . $limit . "&page=" . $page);
|
|
exit();
|
|
|
|
}
|
|
|
|
?>
|