2025-06-29 19:46:50 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Services\Article;
|
|
|
|
|
|
|
|
|
|
use App\Models\Article;
|
|
|
|
|
|
|
|
|
|
class ValidationService
|
|
|
|
|
{
|
|
|
|
|
public static function validate(Article $article): Article
|
|
|
|
|
{
|
|
|
|
|
logger('Checking keywords for article: ' . $article->id);
|
|
|
|
|
|
2025-06-29 21:33:18 +02:00
|
|
|
$articleData = ArticleFetcher::fetchArticleData($article);
|
2025-06-30 21:28:15 +02:00
|
|
|
|
2025-08-09 18:34:19 +02:00
|
|
|
// Update article with fetched data (title, description, etc.)
|
|
|
|
|
$updateData = [
|
|
|
|
|
'validated_at' => now(),
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
if (!empty($articleData)) {
|
|
|
|
|
$updateData['title'] = $articleData['title'] ?? null;
|
|
|
|
|
$updateData['description'] = $articleData['description'] ?? null;
|
|
|
|
|
$updateData['full_article'] = $articleData['full_article'] ?? null;
|
|
|
|
|
$updateData['thumbnail'] = $articleData['thumbnail'] ?? null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!isset($articleData['full_article']) || empty($articleData['full_article'])) {
|
2025-06-30 21:28:15 +02:00
|
|
|
logger()->warning('Article data missing full_article key', [
|
|
|
|
|
'article_id' => $article->id,
|
|
|
|
|
'url' => $article->url
|
|
|
|
|
]);
|
|
|
|
|
|
2025-08-09 18:34:19 +02:00
|
|
|
$updateData['is_valid'] = false;
|
|
|
|
|
$article->update($updateData);
|
2025-06-30 21:28:15 +02:00
|
|
|
|
|
|
|
|
return $article->refresh();
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-29 21:33:18 +02:00
|
|
|
$validationResult = self::validateByKeywords($articleData['full_article']);
|
2025-08-09 18:34:19 +02:00
|
|
|
$updateData['is_valid'] = $validationResult;
|
2025-06-29 21:33:18 +02:00
|
|
|
|
2025-08-09 18:34:19 +02:00
|
|
|
$article->update($updateData);
|
2025-06-29 19:46:50 +02:00
|
|
|
|
|
|
|
|
return $article->refresh();
|
|
|
|
|
}
|
2025-06-29 21:33:18 +02:00
|
|
|
|
|
|
|
|
private static function validateByKeywords(string $full_article): bool
|
|
|
|
|
{
|
|
|
|
|
$keywords = [
|
|
|
|
|
'N-VA', 'Bart De Wever', 'Frank Vandenbroucke',
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach ($keywords as $keyword) {
|
|
|
|
|
if (stripos($full_article, $keyword) !== false) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2025-06-29 19:46:50 +02:00
|
|
|
}
|