Compare commits

...

59 Commits

Author SHA1 Message Date
niklas.ortmann ded98ed757 Update LocalArticleManager.php 2026-06-03 19:34:51 +02:00
niklas.ortmann 18fe69cbcd Update showCategory-controller.php 2026-06-03 19:34:48 +02:00
niklas.ortmann e35d07ebc3 Update LocalArticleManager.php 2026-06-03 19:33:02 +02:00
niklas.ortmann e772a8b57f Kategorien nicht statisch sondern dynamisch 2026-06-03 19:29:29 +02:00
niklas.ortmann 9c3ebc9877 Merge pull request 'WIP Suche implementiert, sowie Sortieren der Ergebnisse' (#19) from ImplementedSearch into dev
Reviewed-on: #19
2026-06-03 16:07:41 +02:00
rirat-0 3d13c3b8c8 Design Anpassung der search in navbar 2026-06-03 07:59:39 +02:00
rirat-0 6c3e788f13 Limitation der eingabefelder auf 50 zeichen 2026-06-03 03:03:37 +02:00
rirat-0 aceac0bf8b aufraeumen 7 2026-06-03 02:52:22 +02:00
rirat-0 78d04f1715 aufraeumen 6 2026-06-03 02:48:11 +02:00
rirat-0 1d773ea4e6 Funktionalitaet der sortierung 2026-06-03 02:44:59 +02:00
rirat-0 a595567db1 funktionale suche der sidebox 2026-06-03 02:39:03 +02:00
rirat-0 945d3e1c1f aufraeumen 5 2026-06-03 02:28:45 +02:00
rirat-0 d58ea953af aufraeumen 4 2026-06-03 02:02:54 +02:00
rirat-0 b9475a045f aufraeumen 3 2026-06-03 01:58:02 +02:00
rirat-0 32c2a1a3d8 aufraeumen 2 2026-06-03 01:56:57 +02:00
rirat-0 fc93f2b3f0 aufraeumen 2026-06-03 01:55:33 +02:00
rirat-0 f33778f97a fehlersuche 12 2026-06-03 01:51:26 +02:00
rirat-0 1c72a03f26 fehlersuche 11 2026-06-03 01:48:00 +02:00
rirat-0 3dcbdbf23c fehlersuche 10 2026-06-03 01:45:04 +02:00
rirat-0 8143d501fa fehlersuche 9 2026-06-03 01:42:09 +02:00
rirat-0 3471eedf4a fehlersuche 8 2026-06-03 01:17:38 +02:00
rirat-0 b6a3dad2ab fehlersuche 7 2026-06-03 01:08:14 +02:00
rirat-0 375e6d9625 fehlersuche 6 2026-06-03 00:45:57 +02:00
rirat-0 4d144ec704 fehlersuche 5 2026-06-03 00:44:57 +02:00
rirat-0 370c047c16 fehlersuche 4 2026-06-02 18:06:45 +02:00
rirat-0 a562a67923 fehlersuche 3 2026-06-02 18:02:40 +02:00
rirat-0 078dbd8901 fehlersuche 2 2026-06-02 18:01:14 +02:00
rirat-0 64d624a6df fehlersuche 1 2026-06-02 18:00:01 +02:00
rirat-0 90ab57e4cb Mehrere anpassungen, damit ergebnisse angezeigt werden 2026-06-02 17:53:04 +02:00
rirat-0 a00ddf18e6 update der pfade 2026-06-02 17:19:03 +02:00
rirat-0 5048dc2466 weitere anpassungen der such funktion 2026-06-02 17:16:57 +02:00
rirat-0 7209fe3e20 article.php wird nun genutzt im search results controller 2026-06-02 17:14:45 +02:00
rirat-0 4e35e67ef1 anpassung von der search function 2026-06-02 17:06:41 +02:00
rirat-0 830b57d245 anpassung der such funktion 2026-06-02 17:03:06 +02:00
rirat-0 06930644a6 Implementierung von neuem such algorithmus und entsprechenden anpassungen in anderen dateien 2026-06-02 16:58:12 +02:00
niklas.ortmann 8e3642c668 Merge branch 'dev' into ImplementedSearch 2026-06-02 14:48:37 +02:00
rirat-0 87d78b749b Finale Aktualisierung 2026-06-02 14:09:06 +02:00
rirat-0 604dbeca93 Aktualisierung 2026-06-02 14:07:33 +02:00
rirat-0 8e9e7d65d0 noch mehr debugging 2026-06-02 13:59:21 +02:00
rirat-0 e2c317e507 mehr debugging 2026-06-02 13:57:30 +02:00
rirat-0 5a7fa35465 test mit absoluten pfaden 2026-06-02 13:55:58 +02:00
rirat-0 2601a1c1ca naechster debugging versuch 2026-06-02 13:54:04 +02:00
rirat-0 0e26679f24 anpassung beider article manager 2026-06-02 13:48:51 +02:00
rirat-0 d5ab659217 anpassung von article managerdao 2026-06-02 13:44:37 +02:00
rirat-0 2d5919d572 alte aenderung reverted 2026-06-02 13:41:51 +02:00
rirat-0 f56a074a3c search results controller wird ueber die results seite geladen 2026-06-02 13:38:19 +02:00
rirat-0 24dc432f01 entfernung mancher aenderungen 2026-06-02 13:26:11 +02:00
rirat-0 016193de07 weitere anpassung von index.php 2026-06-02 13:24:17 +02:00
rirat-0 f04d8fecd3 Anpassung der index.php damit der richtige controller geladen wird 2026-06-02 13:20:54 +02:00
rirat-0 36276c7c88 debug versuch nr.5 2026-06-02 13:16:53 +02:00
rirat-0 4a2cf0b55b 4. versuch 2026-06-02 13:14:04 +02:00
rirat-0 400436a73f 3. versuch die homepage zu reparieren 2026-06-02 13:13:02 +02:00
rirat-0 4c378dfba6 2. versuch das problem der homepage zu loesen 2026-06-02 13:08:17 +02:00
rirat-0 c3a9de71f4 1. versuch, das problem der homepage zu beheben 2026-06-02 13:06:29 +02:00
rirat-0 ecf2e9ef57 Update von ArticleManagerDAO, damit die search Methode auch genutzt werden kann 2026-06-02 13:00:21 +02:00
rirat-0 45ac70eba2 Weitere Anpassung der search.php 2026-06-02 12:54:15 +02:00
rirat-0 3b66c6aa3a aenderung des such formulars um korrekte action zu nutzen 2026-06-02 12:49:24 +02:00
rirat-0 e37b882481 anpassung von controllern und results
search function implementiert, search controller entsprechend angepasst und die results seite angepasst
2026-06-02 12:43:59 +02:00
rirat-0 b328c2613c search.php form erstellt 2026-06-01 21:04:37 +02:00
11 changed files with 332 additions and 144 deletions
+5
View File
@@ -17,6 +17,11 @@ include_once 'php/controller/home-controller.php';
Dein Beitrag wurde erfolgreich veröffentlicht!
</p>
<?php endif; ?>
<?php if (isset($_SESSION["message"]) && $_SESSION["message"] == "invalid_category"): ?>
<p class="alert-message is-error">
Diese Kategorie ist nicht gültig.
</p>
<?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
+41 -50
View File
@@ -1,5 +1,10 @@
<?php
session_start();
$results = $_SESSION["search_results"] ?? [];
$query = $_SESSION["search_query"] ?? "";
$resultCount = count($results);
?>
<!--
Seite: Suchergebnisse
@@ -10,95 +15,81 @@ session_start();
<!-- Links: Seitenleiste für Filter und Suche -->
<aside class="s-res-sidebar">
<!-- Suchleiste Box -->
<!-- Sortierfuntion Box und Such Box-->
<form action="php/controller/search-results-controller.php" method="GET" class="s-res-sidebar-form">
<div class="s-res-sidebar-box">
<h3 class="s-res-sidebar-title">Suche anpassen</h3>
<form action="#" method="GET" class="s-res-search-form">
<input type="search" id="site-search" name="q" placeholder="Suchen..." class="nav__search">
<input type="search" id="site-search" name="q" placeholder="Suchen..." class="nav__search" value="<?php echo htmlspecialchars($query); ?>" maxlength="50" required>
<button type="submit" class="nav__search-button">Suchen</button>
</form>
</div>
<!-- Sortierfuntion Box -->
<div class="s-res-sidebar-box">
<h3 class="s-res-sidebar-title">Sortierung</h3>
<?php $currentSort = $_SESSION['search_sort'] ?? 'alphabet'; ?>
<div class="s-res-filter-group">
<label class="s-res-filter-option">
<input type="radio" name="sort" value="alphabet" checked>
<input type="radio" name="sort" value="alphabet" <?php echo $currentSort === 'alphabet' ? 'checked' : ''; ?> onchange="this.form.submit()">
<span>Alphabetisch</span>
</label>
<!-- Noch disabled, da likes noch nicht implementiert-->
<label class="s-res-filter-option">
<input type="radio" name="sort" value="likes">
<span>Beliebtheit (Likes)</span>
<input type="radio" name="sort" value="likes" <?php echo $currentSort === 'likes' ? 'checked' : ''; ?> disabled>
<span style="color: #94a3b8;">Beliebtheit (Likes)</span>
</label>
<label class="s-res-filter-option">
<input type="radio" name="sort" value="newest">
<input type="radio" name="sort" value="newest" <?php echo $currentSort === 'newest' ? 'checked' : ''; ?> onchange="this.form.submit()">
<span>Neueste Beiträge</span>
</label>
<label class="s-res-filter-option">
<input type="radio" name="sort" value="oldest">
<input type="radio" name="sort" value="oldest" <?php echo $currentSort === 'oldest' ? 'checked' : ''; ?> onchange="this.form.submit()">
<span>Älteste Beiträge</span>
</label>
</div>
</div>
</form>
</aside>
<main class="s-res-main-content">
<div class="s-res-header">
<h1 class="s-res-main-title">Suchergebnisse</h1>
<p class="s-res-meta">3 Treffer für Ihre Suchanfrage</p>
<p class="s-res-meta"><?php echo $resultCount; ?> Treffer für Ihre Suchanfrage "<?php echo htmlspecialchars($query); ?>"</p>
</div>
<!-- Ergebnisliste -->
<div class="s-res-list">
<?php
if (!empty($results)): ?>
<?php foreach ($results as $item): ?>
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="index.php?pfad=showArticle&id=<?php echo $item['id']; ?>" class="s-res-link">
<?php echo htmlspecialchars($item['title']); ?>
</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name"><?php echo htmlspecialchars($item['author']); ?></span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
<?php endforeach; ?>
<?php
if(isset($_SESSION['message']) && $_SESSION['message'] == "new_search_results"): ?>
<!-- TODO: Hier die Beiträge ausgeben. -->
<?php elseif (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
<p>
Bitte überprüfe deine Sucheingabe und versuche es erneut!
</p>
elseif (isset($_SESSION["search_query"]) && $_SESSION["search_query"] !== "" && $resultCount === 0): ?>
<p>Keine Beiträge zu diesem Suchbegriff gefunden.</p>
<?php
elseif (isset($_SESSION["message"]) && $_SESSION["message"] == "missing_parameters"): ?>
<p>Bitte überprüfe deine Sucheingabe und versuche es erneut!</p>
<?php endif; ?>
<?php
unset($_SESSION["message"]);
?>
<!-- Beispielbeitrag -->
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="#" class="s-res-link">Pythagoras</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
<!-- Beispielbeitrag -->
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="#" class="s-res-link">Pythagoras</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
<!-- Beispielbeitrag -->
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="#" class="s-res-link">Pythagoras</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name">Max Mustermann</span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
</div>
<div class="s-res-pagination-footer">
+33
View File
@@ -0,0 +1,33 @@
<?php
include_once "php/controller/showCategory-controller.php";
?>
<main>
<h1><?php if (isset($category) && !empty($category)){ echo htmlspecialchars($category); } ?></h1>
<div class="s-res-list">
<?php
if (!empty($articles)): ?>
<?php foreach ($articles as $article): ?>
<div class="s-res-item">
<div class="s-res-content">
<h2 class="s-res-item-title">
<a href="index.php?pfad=showArticle&id=<?php echo $article['id']; ?>" class="s-res-link">
<?php echo htmlspecialchars($article['title']); ?>
</a>
</h2>
<p class="s-res-author">Von: <span class="s-res-author-name"><?php echo htmlspecialchars($article['author']); ?></span></p>
</div>
<div class="s-res-arrow">&rarr;</div>
</div>
<?php endforeach; ?>
<?php
else: ?>
<p> Es sind noch keine Beiträge in dieser Kategorie enthalten.</p>
<?php endif; ?>
</div>
</main>
+52 -52
View File
@@ -39,50 +39,50 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<li>
<label class="nav__mobile-label">Sprachen</label>
<ul class="nav__mobile-submenu">
<li><a href="index.php?pfad=deutsch">Deutsch</a></li>
<li><a href="index.php?pfad=englisch">Englisch</a></li>
<li><a href="index.php?pfad=franzoesisch">Französisch</a></li>
<li><a href="index.php?pfad=latein">Latein</a></li>
<li><a href="index.php?pfad=literatur">Literatur</a></li>
<li><a href="index.php?pfad=showCategory&category=deutsch">Deutsch</a></li>
<li><a href="index.php?pfad=showCategory&category=englisch">Englisch</a></li>
<li><a href="index.php?pfad=showCategory&category=franzoesisch">Französisch</a></li>
<li><a href="index.php?pfad=showCategory&category=latein">Latein</a></li>
<li><a href="index.php?pfad=showCategory&category=literatur">Literatur</a></li>
</ul>
</li>
<li>
<label class="nav__mobile-label">MINT</label>
<ul class="nav__mobile-submenu">
<li><a href="index.php?pfad=mathe">Mathematik</a></li>
<li><a href="index.php?pfad=biologie">Biologie</a></li>
<li><a href="index.php?pfad=chemie">Chemie</a></li>
<li><a href="index.php?pfad=physik">Physik</a></li>
<li><a href="index.php?pfad=informatik">Informatik</a></li>
<li><a href="index.php?pfad=astronomie">Astronomie</a></li>
<li><a href="index.php?pfad=showCategory&category=mathe">Mathematik</a></li>
<li><a href="index.php?pfad=showCategory&category=biologie">Biologie</a></li>
<li><a href="index.php?pfad=showCategory&category=chemie">Chemie</a></li>
<li><a href="index.php?pfad=showCategory&category=physik">Physik</a></li>
<li><a href="index.php?pfad=showCategory&category=informatik">Informatik</a></li>
<li><a href="index.php?pfad=showCategory&category=astronomie">Astronomie</a></li>
</ul>
</li>
<li>
<label class="nav__mobile-label">Gesellschaft & Werte</label>
<ul class="nav__mobile-submenu">
<li><a href="index.php?pfad=geschichte">Geschichte</a></li>
<li><a href="index.php?pfad=erdkunde">Erdkunde</a></li>
<li><a href="index.php?pfad=sozialkunde">Sozialkunde</a></li>
<li><a href="index.php?pfad=wirtschaft">Wirtschaftskunde</a></li>
<li><a href="index.php?pfad=religion">Religion</a></li>
<li><a href="index.php?pfad=ethik">Ethikunterricht</a></li>
<li><a href="index.php?pfad=philosophie">Philosophie</a></li>
<li><a href="index.php?pfad=psychologie">Psychologie</a></li>
<li><a href="index.php?pfad=kunst">Kunst</a></li>
<li><a href="index.php?pfad=musik">Musik</a></li>
<li><a href="index.php?pfad=theater">Theater</a></li>
<li><a href="index.php?pfad=showCategory&category=geschichte">Geschichte</a></li>
<li><a href="index.php?pfad=showCategory&category=erdkunde">Erdkunde</a></li>
<li><a href="index.php?pfad=showCategory&category=sozialkunde">Sozialkunde</a></li>
<li><a href="index.php?pfad=showCategory&category=wirtschaft">Wirtschaftskunde</a></li>
<li><a href="index.php?pfad=showCategory&category=religion">Religion</a></li>
<li><a href="index.php?pfad=showCategory&category=ethik">Ethikunterricht</a></li>
<li><a href="index.php?pfad=showCategory&category=philosophie">Philosophie</a></li>
<li><a href="index.php?pfad=showCategory&category=psychologie">Psychologie</a></li>
<li><a href="index.php?pfad=showCategory&category=kunst">Kunst</a></li>
<li><a href="index.php?pfad=showCategory&category=musik">Musik</a></li>
<li><a href="index.php?pfad=showCategory&category=theater">Theater</a></li>
</ul>
</li>
<li>
<label class="nav__mobile-label">Technik & Praxis</label>
<ul class="nav__mobile-submenu">
<li><a href="index.php?pfad=technik">Technik</a></li>
<li><a href="index.php?pfad=werken">Werken</a></li>
<li><a href="index.php?pfad=hauswirtschaft">Hauswirtschaft</a></li>
<li><a href="index.php?pfad=sport">Sport</a></li>
<li><a href="index.php?pfad=showCategory&category=technik">Technik</a></li>
<li><a href="index.php?pfad=showCategory&category=werken">Werken</a></li>
<li><a href="index.php?pfad=showCategory&category=hauswirtschaft">Hauswirtschaft</a></li>
<li><a href="index.php?pfad=showCategory&category=sport">Sport</a></li>
</ul>
</li>
</ul>
@@ -92,50 +92,50 @@ Globales Menü, wird via PHP später in alle Seiten eingebunden
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Sprachen</button>
<div class="nav__dropdown-menu">
<a href="index.php?pfad=deutsch">Deutsch</a>
<a href="index.php?pfad=englisch">Englisch</a>
<a href="index.php?pfad=franzoesisch">Französisch</a>
<a href="index.php?pfad=latein">Latein</a>
<a href="index.php?pfad=literatur">Literatur</a>
<a href="index.php?pfad=showCategory&category=deutsch">Deutsch</a>
<a href="index.php?pfad=showCategory&category=englisch">Englisch</a>
<a href="index.php?pfad=showCategory&category=franzoesisch">Französisch</a>
<a href="index.php?pfad=showCategory&category=latein">Latein</a>
<a href="index.php?pfad=showCategory&category=literatur">Literatur</a>
</div>
</div>
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">MINT</button>
<div class="nav__dropdown-menu">
<a href="index.php?pfad=mathe">Mathematik</a>
<a href="index.php?pfad=biologie">Biologie</a>
<a href="index.php?pfad=chemie">Chemie</a>
<a href="index.php?pfad=physik">Physik</a>
<a href="index.php?pfad=informatik">Informatik</a>
<a href="index.php?pfad=astronomie">Astronomie</a>
<a href="index.php?pfad=showCategory&category=mathe">Mathematik</a>
<a href="index.php?pfad=showCategory&category=biologie">Biologie</a>
<a href="index.php?pfad=showCategory&category=chemie">Chemie</a>
<a href="index.php?pfad=showCategory&category=physik">Physik</a>
<a href="index.php?pfad=showCategory&category=informatik">Informatik</a>
<a href="index.php?pfad=showCategory&category=astronomie">Astronomie</a>
</div>
</div>
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Gesellschaft & Werte</button>
<div class="nav__dropdown-menu">
<a href="index.php?pfad=geschichte">Geschichte</a>
<a href="index.php?pfad=erdkunde">Erdkunde</a>
<a href="index.php?pfad=sozialkunde">Sozialkunde</a>
<a href="index.php?pfad=wirtschaft">Wirtschaftskunde</a>
<a href="index.php?pfad=religion">Religion</a>
<a href="index.php?pfad=ethik">Ethikunterricht</a>
<a href="index.php?pfad=philosophie">Philosophie</a>
<a href="index.php?pfad=psychologie">Psychologie</a>
<a href="index.php?pfad=kunst">Kunst</a>
<a href="index.php?pfad=musik">Musik</a>
<a href="index.php?pfad=theater">Theater</a>
<a href="index.php?pfad=showCategory&category=geschichte">Geschichte</a>
<a href="index.php?pfad=showCategory&category=erdkunde">Erdkunde</a>
<a href="index.php?pfad=showCategory&category=sozialkunde">Sozialkunde</a>
<a href="index.php?pfad=showCategory&category=wirtschaft">Wirtschaftskunde</a>
<a href="index.php?pfad=showCategory&category=religion">Religion</a>
<a href="index.php?pfad=showCategory&category=ethik">Ethikunterricht</a>
<a href="index.php?pfad=showCategory&category=philosophie">Philosophie</a>
<a href="index.php?pfad=showCategory&category=psychologie">Psychologie</a>
<a href="index.php?pfad=showCategory&category=kunst">Kunst</a>
<a href="index.php?pfad=showCategory&category=musik">Musik</a>
<a href="index.php?pfad=showCategory&category=theater">Theater</a>
</div>
</div>
<div class="nav__item nav__dropdown">
<button class="nav__dropdown-toggle">Technik & Praxis</button>
<div class="nav__dropdown-menu">
<a href="index.php?pfad=technik">Technik</a>
<a href="index.php?pfad=werken">Werken</a>
<a href="index.php?pfad=hauswirtschaft">Hauswirtschaft</a>
<a href="index.php?pfad=sport">Sport</a>
<a href="index.php?pfad=showCategory&category=technik">Technik</a>
<a href="index.php?pfad=showCategory&category=werken">Werken</a>
<a href="index.php?pfad=showCategory&category=hauswirtschaft">Hauswirtschaft</a>
<a href="index.php?pfad=showCategory&category=sport">Sport</a>
</div>
</div>
</div>
+7 -2
View File
@@ -2,5 +2,10 @@
Suchleiste. Wird via PHP später in alle Seiten eingebunden
-->
<!--<label for="site-search">Suche</label>-->
<input type="search" id="site-search" name="q" placeholder="Suchen..." class="nav__search">
<button type="submit" class="nav__search-button">Suchen</button>
<form action="php/controller/search-results-controller.php" method="GET" class="search-form" style="display: flex; align-items: center; gap: 5px;">
<input type="hidden" name="pfad" value="search-results">
<input type="search" id="site-search" name="q" placeholder="Suchen..." class="nav__search" maxlength="50" required>
<button type="submit" class="nav__search-button">Suchen</button>
</form>
+51 -12
View File
@@ -2,28 +2,67 @@
session_start();
require_once '../model/LocalArticleManager.php';
require_once '../model/ArticleManager.php';
require_once '../model/Article.php';
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if(!isset($_POST["search"])){
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";
header("location: ../../index.php?pfad=search-results");
} else {
$search = $_POST["search"];
try {
$articleManager = ArticleManager::getInstance();
$articleManager->search($search); // TODO: Methode implementieren.
$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";
}
$_SESSION["message"] = "new_search_results";
// TODO: Liste mit Artikeln in der Suchreihenfolge übertragen.
// Weiterleitung zur Suchergebnisanzeige
header("location: ../../index.php?pfad=search-results");
}
header("Location: ../../index.php?pfad=search-results");
exit();
}
}
?>
@@ -0,0 +1,20 @@
<?php
require_once '../model/LocalArticleManager.php';
require_once '../model/ArticleManager.php';
if (isset($_GET["category"]) && !empty($_GET["category"]) && articleCategoryValidator($_GET["category"])){
$category = $_GET["category"];
try {
$articleManager = ArticleManager::getInstance();
$articles = $articleManager->getArticlesByCategory($category);
} catch (Exception $e) {
$_SESSION["message"] = "internal_error";
include_once "content/404.php";
exit();
}
}else{
$_SESSION["message"] = "invalid_category";
include_once "content/404.php";
exit();
}
?>
+7 -7
View File
@@ -7,13 +7,13 @@
*/
class Article
{
private $id;
private $title;
private $content;
private $author;
private $creationDate;
private $category;
private $tags;
public $id;
public $title;
public $content;
public $author;
public $creationDate;
public $category;
public $tags;
/**
* Konstruktor
+22
View File
@@ -44,4 +44,26 @@ class ArticleManager extends LocalArticleManager
return $articleManager;
}
public function getArticlesByCategory($category)
{
$articles = $this->getAllArticles();
$filteredArticles = [];
foreach ($articles as $article) {
if (isset($article['category']) && $article['category'] == $category) {
$filteredArticles[] = new Article(
intval($article['id']),
$article['title'],
$article['content'],
$article['author'],
$article['category'],
$article['tags'],
$article['creationDate']
);
}
}
return $filteredArticles;
}
}
+17
View File
@@ -76,5 +76,22 @@ interface ArticleManagerDAO
*/
public function getArticlesByAuthor($author);
/**
* Durchsucht die vorhandenen Beiträge nach einem bestimmten Suchbegriff.
* Die Suche prüft, ob das übergebene Keyword im Titel oder im Inhalt eines Beitrags vorkommt.
* (Unabhängig von Groß-und Kleinschreibung)
* @param string $keyword Der eingegebene Suchbegriff.
* @return array Ein Array von Artikeln ,die dem Suchkriterium entsprechen. Wenn nichts gefunden wird, ein leeres Array.
*/
public function search(string $keyword): array;
/**
* Gibt alle Beiträge einer gegebenen Kategorie aus.
* @param $category
* @return mixed
*/
public function getArticlesByCategory($category);
}
?>
+56
View File
@@ -166,5 +166,61 @@ class LocalArticleManager implements ArticleManagerDAO {
}
return $filteredArticles;
}
public function search(string $keyword): array
{
$articles = $this->getAllArticles();
$filteredArticles = [];
if (!is_array($articles)) {
return [];
}
$cleanKeyword = strtolower(trim($keyword));
foreach ($articles as $article) {
$title = isset($article['title']) ? strtolower((string)$article['title']) : '';
$content = isset($article['content']) ? strtolower((string)$article['content']) : '';
if (($cleanKeyword !== '' && strpos($title, $cleanKeyword) !== false) ||
($cleanKeyword !== '' && strpos($content, $cleanKeyword) !== false)) {
$filteredArticles[] = new Article(
intval($article['id'] ?? 0),
$article['title'] ?? '',
$article['content'] ?? '',
$article['author'] ?? '',
$article['category'] ?? '',
$article['tags'] ?? '',
$article['creationDate'] ?? ''
);
}
}
return $filteredArticles;
}
public function getArticlesByCategory($category)
{
$articles = $this->getAllArticles();
$filteredArticles = [];
foreach ($articles as $article) {
if (isset($article['category']) && $article['category'] == $category) {
$filteredArticles[] = new Article(
intval($article['id']),
$article['title'],
$article['content'],
$article['author'],
$article['category'],
$article['tags'],
$article['creationDate']
);
}
}
return $filteredArticles;
}
}
?>