anpassung der such funktion

This commit is contained in:
rirat-0
2026-06-02 17:03:06 +02:00
parent 06930644a6
commit 830b57d245
+26 -18
View File
@@ -170,34 +170,42 @@ class LocalArticleManager implements ArticleManagerDAO {
}
// getarticlesbyauthor nutzen um auch nach kategorien zu suchen
public function search(string $keyword): array
{
// 1. Alle Artikel aus der JSON-Datei laden
public function search(string $keyword): array {
$articles = $this->getAllArticles();
$filteredArticles = [];
// 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;
// Sicherheits-Check: Falls getAllArticles aus irgendeinem Grund kein Array liefert
if (!is_array($articles)) {
return [];
}
// 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)
// 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']),
$article['title'],
$article['content'],
$article['author'],
$article['category'],
$article['tags'],
$article['creationDate']
intval($article['id'] ?? 0),
$article['title'] ?? '',
$article['content'] ?? '',
$article['author'] ?? '',
$article['category'] ?? '',
$article['tags'] ?? '',
$article['creationDate'] ?? ''
);
}
}
return $filteredArticles;
}
}
}
?>