From 4e35e67ef1edf0659faaff97baf763ffadda8569 Mon Sep 17 00:00:00 2001 From: rirat-0 Date: Tue, 2 Jun 2026 17:06:41 +0200 Subject: [PATCH] anpassung von der search function --- php/model/LocalArticleManager.php | 56 +++++++++++++------------------ 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/php/model/LocalArticleManager.php b/php/model/LocalArticleManager.php index 05d76a0..cfccf68 100644 --- a/php/model/LocalArticleManager.php +++ b/php/model/LocalArticleManager.php @@ -170,42 +170,34 @@ class LocalArticleManager implements ArticleManagerDAO { } // getarticlesbyauthor nutzen um auch nach kategorien zu suchen - public function search(string $keyword): array { - $articles = $this->getAllArticles(); - $filteredArticles = []; + public function search(string $keyword): array + { + // 1. Alle Artikel aus der JSON-Datei laden + $articles = $this->getAllArticles(); + $filteredArticles = []; - // Sicherheits-Check: Falls getAllArticles aus irgendeinem Grund kein Array liefert - if (!is_array($articles)) { - return []; - } + // 2. Artikel durchlaufen und filtern + foreach ($articles as $article) { + $inTitle = isset($article['title']) && stripos($article['title'], $keyword) !== false; + $inContent = isset($article['content']) && stripos($article['content'], $keyword) !== false; - // Suchbegriff trimmen und in Kleinbuchstaben umwandeln für besseren Vergleich - $cleanKeyword = mb_strtolower(trim($keyword)); - - foreach ($articles as $article) { - // Sicherstellen, dass die Felder existieren und Strings sind - $title = isset($article['title']) ? mb_strtolower((string)$article['title']) : ''; - $content = isset($article['content']) ? mb_strtolower((string)$article['content']) : ''; - - // Suche im Titel ODER im Inhalt - if (($cleanKeyword !== '' && strpos($title, $cleanKeyword) !== false) || - ($cleanKeyword !== '' && strpos($content, $cleanKeyword) !== false)) { - - // Wir mappen die Daten auf das Article-Objekt (wie in deiner getArticlesByAuthor) - $filteredArticles[] = new Article( - intval($article['id'] ?? 0), - $article['title'] ?? '', - $article['content'] ?? '', - $article['author'] ?? '', - $article['category'] ?? '', - $article['tags'] ?? '', - $article['creationDate'] ?? '' - ); + // Wenn das Keyword im Titel ODER im Inhalt vorkommt + if ($inTitle || $inContent) { + // Wir mappen die JSON-Daten auf ein echtes Article-Objekt (genau wie bei getArticlesByAuthor) + $filteredArticles[] = new Article( + intval($article['id']), + $article['title'], + $article['content'], + $article['author'], + $article['category'], + $article['tags'], + $article['creationDate'] + ); + } } - } - return $filteredArticles; -} + return $filteredArticles; + } } ?> \ No newline at end of file