]> git.wh0rd.org - tt-rss.git/blobdiff - include/rssfuncs.php
do not automatically call cleanup_tags() in housekeeping tasks
[tt-rss.git] / include / rssfuncs.php
old mode 100644 (file)
new mode 100755 (executable)
index 476d12b..f13ac36
@@ -9,7 +9,11 @@
 
                foreach ($article as $k => $v) {
                        if ($k != "feed" && isset($v)) {
-                               $tmp .= sha1("$k:" . (is_array($v) ? implode(",", $v) : $v));
+                               $x = strip_tags(is_array($v) ? implode(",", $v) : $v);
+
+                               //_debug("$k:" . sha1($x) . ":" . htmlspecialchars($x), true);
+
+                               $tmp .= sha1("$k:" . sha1($x));
                        }
                }
 
                $query_limit = "";
                if($limit) $query_limit = sprintf("LIMIT %d", $limit);
 
+               // Update the least recently updated feeds first
+               $query_order = "ORDER BY last_updated";
+               if (DB_TYPE == "pgsql") $query_order .= " NULLS FIRST";
+
                $query = "SELECT DISTINCT ttrss_feeds.feed_url, ttrss_feeds.last_updated
                        FROM
                                ttrss_feeds, ttrss_users, ttrss_user_prefs
                                AND ttrss_user_prefs.pref_name = 'DEFAULT_UPDATE_INTERVAL'
                                $login_thresh_qpart $update_limit_qpart
                                $updstart_thresh_qpart
-                               ORDER BY last_updated $query_limit";
+                               $query_order $query_limit";
 
                // We search for feed needing update.
                $result = db_query($query);
 
                $feed = db_escape_string($feed);
 
-               $result = db_query("SELECT feed_url,auth_pass,auth_pass_encrypted
+               $result = db_query("SELECT feed_url,auth_pass,auth_login,auth_pass_encrypted
                                        FROM ttrss_feeds WHERE id = '$feed'");
 
                $auth_pass_encrypted = sql_bool_to_bool(db_fetch_result($result,
                                        $entry_stored_hash = db_fetch_result($result, 0, "content_hash");
                                        $article_labels = get_article_labels($base_entry_id, $owner_uid);
                                        $entry_language = db_fetch_result($result, 0, "lang");
+
+                                       $existing_tags = get_article_tags($base_entry_id, $owner_uid);
+                                       $entry_tags = array_unique(array_merge($entry_tags, $existing_tags));
+
                                } else {
                                        $base_entry_id = false;
                                        $entry_stored_hash = "";
                                                        SET score = '$score' WHERE ref_id = '$ref_id'");
 
                                        if ($mark_unread_on_update) {
+                                               _debug("article updated, marking unread as requested.", $debug_enabled);
+
                                                db_query("UPDATE ttrss_user_entries
                                                        SET last_read = null, unread = true WHERE ref_id = '$ref_id'");
                                        }
                                        array_push($matches, $action);
 
                                        // if Stop action encountered, perform no further processing
-                                       if ($action["type"] == "stop") return $matches;
+                                       if (isset($action["type"]) && $action["type"] == "stop") return $matches;
                                }
                        }
                }
 
                purge_orphans( true);
                cleanup_counters_cache($debug);
-               $rc = cleanup_tags( 14, 50000);
 
-               _debug("Cleaned $rc cached tags.");
+               //$rc = cleanup_tags( 14, 50000);
+               //_debug("Cleaned $rc cached tags.");
 
                PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", "");