X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=include%2Frssfuncs.php;h=7f6417759e1a8b7f310414f186d893618275c85e;hb=a33558a61efc244ad8c809748e6ee64413e3a217;hp=61f6ee6a0ca0c42cecea7ea643cea14e8fac4cfc;hpb=f4ae0f053bc4c84bb5e28ca464bbedea9f3855db;p=tt-rss.git diff --git a/include/rssfuncs.php b/include/rssfuncs.php index 61f6ee6a..7f641775 100644 --- a/include/rssfuncs.php +++ b/include/rssfuncs.php @@ -190,11 +190,12 @@ } // function update_daemon_common // ignore_daemon is not used - function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false, - $override_url = false) { + function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false) { $debug_enabled = defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']; + if (!$debug_enabled) define('SUPPRESS_DEBUGGING', true); + _debug("start", $debug_enabled); $result = db_query("SELECT id,update_interval,auth_login, @@ -239,15 +240,20 @@ $feed = db_escape_string($feed); - if ($override_url) $fetch_url = $override_url; - $date_feed_processed = date('Y-m-d H:i'); $cache_filename = CACHE_DIR . "/simplepie/" . sha1($fetch_url) . ".xml"; + $pluginhost = new PluginHost(); + $pluginhost->set_debug($debug_enabled); + $user_plugins = get_pref("_ENABLED_PLUGINS", $owner_uid); + + $pluginhost->load(PLUGINS, PluginHost::KIND_ALL); + $pluginhost->load($user_plugins, PluginHost::KIND_USER, $owner_uid); + $pluginhost->load_data(); + $rss = false; $rss_hash = false; - $cache_timestamp = file_exists($cache_filename) ? filemtime($cache_filename) : 0; $force_refetch = isset($_REQUEST["force_refetch"]); @@ -270,6 +276,10 @@ if (!$rss) { + foreach ($pluginhost->get_hooks(PluginHost::HOOK_FETCH_FEED) as $plugin) { + $feed_data = $plugin->hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed); + } + if (!$feed_data) { _debug("fetching [$fetch_url]...", $debug_enabled); _debug("If-Modified-Since: ".gmdate('D, d M Y H:i:s \G\M\T', $last_article_timestamp), $debug_enabled); @@ -291,7 +301,7 @@ _debug("fetch done.", $debug_enabled); - if ($feed_data) { + /* if ($feed_data) { $error = verify_feed_xml($feed_data); if ($error) { @@ -307,7 +317,7 @@ if ($error) $feed_data = ''; } } - } + } */ } if (!$feed_data) { @@ -333,16 +343,8 @@ } } - $pluginhost = new PluginHost(); - $pluginhost->set_debug($debug_enabled, $debug_enabled); - $user_plugins = get_pref("_ENABLED_PLUGINS", $owner_uid); - - $pluginhost->load(PLUGINS, PluginHost::KIND_ALL); - $pluginhost->load($user_plugins, PluginHost::KIND_USER, $owner_uid); - $pluginhost->load_data(); - foreach ($pluginhost->get_hooks(PluginHost::HOOK_FEED_FETCHED) as $plugin) { - $feed_data = $plugin->hook_feed_fetched($feed_data); + $feed_data = $plugin->hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed); } // set last update to now so if anything *simplepie* crashes later we won't be @@ -354,6 +356,11 @@ $rss->init(); } + require_once "lib/languagedetect/LanguageDetect.php"; + + $lang = new Text_LanguageDetect(); + $lang->setNameMode(2); + // print_r($rss); $feed = db_escape_string($feed); @@ -411,7 +418,7 @@ _debug("checking favicon...", $debug_enabled); - check_feed_favicon($site_url, $feed, $link); + check_feed_favicon($site_url, $feed); $favicon_modified_new = @filemtime($favicon_file); if ($favicon_modified_new > $favicon_modified) @@ -565,6 +572,17 @@ print "\n"; } + $entry_language = $lang->detect($entry_content, 1); + + if (count($entry_language) > 0) { + $entry_language = array_keys($entry_language); + $entry_language = db_escape_string(substr($entry_language[0], 0, 2)); + + _debug("detected language: $entry_language", $debug_enabled); + } else{ + $entry_language = ""; + } + $entry_comments = $item->get_comments_url(); $entry_author = $item->get_author(); @@ -628,7 +646,11 @@ "tags" => $entry_tags, "plugin_data" => $entry_plugin_data, "author" => $entry_author, - "stored" => $stored_article); + "stored" => $stored_article, + "feed" => array("id" => $feed, + "fetch_url" => $fetch_url, + "site_url" => $site_url) + ); foreach ($pluginhost->get_hooks(PluginHost::HOOK_ARTICLE_FILTER) as $plugin) { $article = $plugin->hook_article_filter($article); @@ -671,13 +693,13 @@ updated, content, content_hash, - cached_content, no_orig_date, date_updated, date_entered, comments, num_comments, plugin_data, + lang, author) VALUES ('$entry_title', @@ -686,13 +708,13 @@ '$entry_timestamp_fmt', '$entry_content', '$content_hash', - '', $no_orig_date, NOW(), '$date_feed_processed', '$entry_comments', '$num_comments', '$entry_plugin_data', + '$entry_language', '$entry_author')"); $article_labels = array(); @@ -938,7 +960,7 @@ if (is_array($encs)) { foreach ($encs as $e) { $e_item = array( - $e->link, $e->type, $e->length); + $e->link, $e->type, $e->length, $e->title); array_push($enclosures, $e_item); } } @@ -950,10 +972,14 @@ db_query("BEGIN"); +// debugging +// db_query("DELETE FROM ttrss_enclosures WHERE post_id = '$entry_ref_id'"); + foreach ($enclosures as $enc) { $enc_url = db_escape_string($enc[0]); $enc_type = db_escape_string($enc[1]); $enc_dur = db_escape_string($enc[2]); + $enc_title = db_escape_string($enc[3]); $result = db_query("SELECT id FROM ttrss_enclosures WHERE content_url = '$enc_url' AND post_id = '$entry_ref_id'"); @@ -961,7 +987,7 @@ if (db_num_rows($result) == 0) { db_query("INSERT INTO ttrss_enclosures (content_url, content_type, title, duration, post_id) VALUES - ('$enc_url', '$enc_type', '', '$enc_dur', '$entry_ref_id')"); + ('$enc_url', '$enc_type', '$enc_title', '$enc_dur', '$entry_ref_id')"); } } @@ -1062,11 +1088,6 @@ _debug("article processed", $debug_enabled); } - if (!$last_updated) { - _debug("new feed, catching it up...", $debug_enabled); - catchup_feed($feed, false, $owner_uid); - } - _debug("purging feed...", $debug_enabled); purge_feed($feed, 0, $debug_enabled); @@ -1123,16 +1144,15 @@ } } - if (file_exists($local_filename)) { + /* if (file_exists($local_filename)) { $entry->setAttribute('src', SELF_URL_PATH . '/image.php?url=' . base64_encode($src)); - } + } */ } } - $node = $doc->getElementsByTagName('body')->item(0); - - return $doc->saveXML($node); + //$node = $doc->getElementsByTagName('body')->item(0); + //return $doc->saveXML($node); } function expire_error_log($debug) { @@ -1349,14 +1369,14 @@ mb_strtolower(strip_tags($title), 'utf-8')); } - function verify_feed_xml($feed_data) { + /* function verify_feed_xml($feed_data) { libxml_use_internal_errors(true); $doc = new DOMDocument(); $doc->loadXML($feed_data); $error = libxml_get_last_error(); libxml_clear_errors(); return $error; - } + } */ function housekeeping_common($debug) { expire_cached_files($debug); @@ -1370,5 +1390,8 @@ $rc = cleanup_tags( 14, 50000); _debug("Cleaned $rc cached tags."); + + PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", ""); + } ?>