]> git.wh0rd.org - tt-rss.git/blobdiff - include/rssfuncs.php
pass logfile to child tasks if locking is possible, lock logfile before writing,...
[tt-rss.git] / include / rssfuncs.php
index 612c914c034b2f6cc75498c3f334b7cb9fccb059..7f6417759e1a8b7f310414f186d893618275c85e 100644 (file)
        } // 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,
 
                $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"]);
 
 
                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);
 
                                _debug("fetch done.", $debug_enabled);
 
-                               if ($feed_data) {
+                               /* if ($feed_data) {
                                        $error = verify_feed_xml($feed_data);
 
                                        if ($error) {
                                                        if ($error) $feed_data = '';
                                                }
                                        }
-                               }
+                               } */
                        }
 
                        if (!$feed_data) {
                        }
                }
 
-               $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();
-
                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
                        $rss->init();
                }
 
+               require_once "lib/languagedetect/LanguageDetect.php";
+
+               $lang = new Text_LanguageDetect();
+               $lang->setNameMode(2);
+
 //             print_r($rss);
 
                $feed = db_escape_string($feed);
                                        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();
 
                                        "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);
                                                        updated,
                                                        content,
                                                        content_hash,
-                                                       cached_content,
                                                        no_orig_date,
                                                        date_updated,
                                                        date_entered,
                                                        comments,
                                                        num_comments,
                                                        plugin_data,
+                                                       lang,
                                                        author)
                                                VALUES
                                                        ('$entry_title',
                                                        '$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();
                                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);
                                        }
                                }
 
                                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'");
                                        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')");
                                        }
                                }
 
                                _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);
                                        }
                                }
 
-                               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) {
                        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);
                $rc = cleanup_tags( 14, 50000);
 
                _debug("Cleaned $rc cached tags.");
+
+               PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", "");
+
        }
 ?>