diff --git a/classes/handler/public.php b/classes/handler/public.php index 9c0359507..7fb2771bd 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -391,10 +391,13 @@ class Handler_Public extends Handler { } function updateTask() { - PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op); } + function housekeepingTask() { + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", $op); + } + function globalUpdateFeeds() { RPC::updaterandomfeed_real($this->dbh); diff --git a/plugins/cache_starred_images/init.php b/plugins/cache_starred_images/init.php index 2366a1e2b..6899aa5cf 100644 --- a/plugins/cache_starred_images/init.php +++ b/plugins/cache_starred_images/init.php @@ -25,6 +25,7 @@ class Cache_Starred_Images extends Plugin { if (is_writable($this->cache_dir)) { $host->add_hook($host::HOOK_UPDATE_TASK, $this); + $host->add_hook($host::HOOK_HOUSE_KEEPING, $this); $host->add_hook($host::HOOK_SANITIZE, $this); } else { user_error("Starred cache directory is not writable.", E_USER_WARNING); @@ -68,6 +69,30 @@ class Cache_Starred_Images extends Plugin { } } + function hook_house_keeping() { + $files = glob($this->cache_dir . "/*.png"); + + $last_article_id = 0; + $article_exists = 1; + + foreach ($files as $file) { + list ($article_id, $hash) = explode("-", basename($file)); + + if ($article_id != $last_article_id) { + $last_article_id = $article_id; + $article_id = db_escape_string($article_id); + + $result = db_query("SELECT id FROM ttrss_entries WHERE id = " . $article_id); + + $article_exists = db_num_rows($result) > 0; + } + + if (!$article_exists) { + unlink($file); + } + } + } + function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) { $xpath = new DOMXpath($doc); @@ -94,8 +119,6 @@ class Cache_Starred_Images extends Plugin { } function hook_update_task() { - header("Content-type: text/plain"); - $result = db_query("SELECT content, ttrss_user_entries.owner_uid, link, site_url, ttrss_entries.id, plugin_data FROM ttrss_entries, ttrss_user_entries LEFT JOIN ttrss_feeds ON (ttrss_user_entries.feed_id = ttrss_feeds.id)