anpassung von der search function

This commit is contained in:
rirat-0
2026-06-02 17:06:41 +02:00
parent 830b57d245
commit 4e35e67ef1
+24 -32
View File
@@ -170,42 +170,34 @@ class LocalArticleManager implements ArticleManagerDAO {
} }
// getarticlesbyauthor nutzen um auch nach kategorien zu suchen // getarticlesbyauthor nutzen um auch nach kategorien zu suchen
public function search(string $keyword): array { public function search(string $keyword): array
$articles = $this->getAllArticles(); {
$filteredArticles = []; // 1. Alle Artikel aus der JSON-Datei laden
$articles = $this->getAllArticles();
$filteredArticles = [];
// Sicherheits-Check: Falls getAllArticles aus irgendeinem Grund kein Array liefert // 2. Artikel durchlaufen und filtern
if (!is_array($articles)) { foreach ($articles as $article) {
return []; $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 // Wenn das Keyword im Titel ODER im Inhalt vorkommt
$cleanKeyword = mb_strtolower(trim($keyword)); if ($inTitle || $inContent) {
// Wir mappen die JSON-Daten auf ein echtes Article-Objekt (genau wie bei getArticlesByAuthor)
foreach ($articles as $article) { $filteredArticles[] = new Article(
// Sicherstellen, dass die Felder existieren und Strings sind intval($article['id']),
$title = isset($article['title']) ? mb_strtolower((string)$article['title']) : ''; $article['title'],
$content = isset($article['content']) ? mb_strtolower((string)$article['content']) : ''; $article['content'],
$article['author'],
// Suche im Titel ODER im Inhalt $article['category'],
if (($cleanKeyword !== '' && strpos($title, $cleanKeyword) !== false) || $article['tags'],
($cleanKeyword !== '' && strpos($content, $cleanKeyword) !== false)) { $article['creationDate']
);
// 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'] ?? ''
);
} }
}
return $filteredArticles; return $filteredArticles;
} }
} }
?> ?>