summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2015-06-17 23:11:47 +0300
committerAndrew Dolgov <[email protected]>2015-06-17 23:11:47 +0300
commit6022776daced6802eae5261c4b7142c5bffafe06 (patch)
tree275663f9bc9e9b5480233895a12f5a2e25426805 /include
parentfa05356a88c9f886afbcf8a85be7368771ff613d (diff)
speedup feed subscription process
Diffstat (limited to 'include')
-rw-r--r--include/functions.php2
-rw-r--r--include/rssfuncs.php61
2 files changed, 62 insertions, 1 deletions
diff --git a/include/functions.php b/include/functions.php
index 0d4c8ed09..edc196f31 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1743,7 +1743,7 @@
$feed_id = db_fetch_result($result, 0, "id");
if ($feed_id) {
- update_rss_feed($feed_id, true);
+ set_basic_feed_info($feed_id);
}
return array("code" => 1);
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index 4dbb7c18e..33f9ebb87 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -222,6 +222,67 @@
} // function update_daemon_common
+ // this is used when subscribing
+ function set_basic_feed_info($feed) {
+
+ $feed = db_escape_string($feed);
+
+ $result = db_query("SELECT feed_url,auth_pass,auth_pass_encrypted
+ FROM ttrss_feeds WHERE id = '$feed'");
+
+ $auth_pass_encrypted = sql_bool_to_bool(db_fetch_result($result,
+ 0, "auth_pass_encrypted"));
+
+ $auth_login = db_fetch_result($result, 0, "auth_login");
+ $auth_pass = db_fetch_result($result, 0, "auth_pass");
+
+ if ($auth_pass_encrypted) {
+ require_once "crypt.php";
+ $auth_pass = decrypt_string($auth_pass);
+ }
+
+ $fetch_url = db_fetch_result($result, 0, "feed_url");
+
+ $feed_data = fetch_file_contents($fetch_url, false,
+ $auth_login, $auth_pass, false,
+ FEED_FETCH_TIMEOUT_TIMEOUT,
+ 0);
+
+ global $fetch_curl_used;
+
+ if (!$fetch_curl_used) {
+ $tmp = @gzdecode($feed_data);
+
+ if ($tmp) $feed_data = $tmp;
+ }
+
+ $feed_data = trim($feed_data);
+
+ $rss = new FeedParser($feed_data);
+ $rss->init();
+
+ if (!$rss->error()) {
+
+ $result = db_query("SELECT title, site_url FROM ttrss_feeds WHERE id = '$feed'");
+
+ $registered_title = db_fetch_result($result, 0, "title");
+ $orig_site_url = db_fetch_result($result, 0, "site_url");
+
+ $site_url = db_escape_string(mb_substr(rewrite_relative_url($fetch_url, $rss->get_link()), 0, 245));
+ $feed_title = db_escape_string(mb_substr($rss->get_title(), 0, 199));
+
+ if ($feed_title && (!$registered_title || $registered_title == "[Unknown]")) {
+ db_query("UPDATE ttrss_feeds SET
+ title = '$feed_title' WHERE id = '$feed'");
+ }
+
+ if ($site_url && $orig_site_url != $site_url) {
+ db_query("UPDATE ttrss_feeds SET
+ site_url = '$site_url' WHERE id = '$feed'");
+ }
+ }
+ }
+
// ignore_daemon is not used
function update_rss_feed($feed, $ignore_daemon = false, $no_cache = false, $rss = false) {