Ready for release: Includes Auto-cron, Installer, and Schema

This commit is contained in:
Timothy Allen
2026-01-10 16:00:06 -06:00
commit 7fc2f2bc1f
9 changed files with 608 additions and 0 deletions

51
fetch.php Normal file
View File

@@ -0,0 +1,51 @@
<?php
require 'config.php';
require 'vendor/autoload.php'; // Or manual include if not using composer
$feed = new SimplePie();
$feed->set_cache_location(__DIR__ . '/cache');
// 1. Get feeds
$stmt = $pdo->query("SELECT id, rss_url FROM feeds");
$feeds_list = $stmt->fetchAll();
foreach ($feeds_list as $row) {
$feed->set_feed_url($row['rss_url']);
$feed->init();
$feed->handle_content_type();
foreach ($feed->get_items() as $item) {
// FIX: Decode HTML entities so "AT&amp;T" becomes "AT&T"
$title = html_entity_decode($item->get_title(), ENT_QUOTES | ENT_HTML5);
$desc = html_entity_decode($item->get_description(), ENT_QUOTES | ENT_HTML5);
$link = $item->get_permalink();
$date = $item->get_date('Y-m-d H:i:s');
if (!$date) { $date = date('Y-m-d H:i:s'); }
$sql = "INSERT IGNORE INTO items (feed_id, title, link, description, pub_date)
VALUES (?, ?, ?, ?, ?)";
$stmtInsert = $pdo->prepare($sql);
$stmtInsert->execute([$row['id'], $title, $link, $desc, $date]);
}
}
// --- CLEANUP ROUTINE ---
// Delete articles older than 30 days, BUT KEEP items marked as 'is_saved'
$days_to_keep = 30;
$sql_cleanup = "DELETE FROM items
WHERE pub_date < DATE_SUB(NOW(), INTERVAL ? DAY)
AND is_saved = 0";
$stmtCleanup = $pdo->prepare($sql_cleanup);
$stmtCleanup->execute([$days_to_keep]);
// -----------------------
// 2. Redirect back to dashboard immediately
header("Location: index.php");
exit;
?>