X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=classes%2Ffeeds.php;h=48e3337e02ebe4eb17fdcf8e3b372f9281e40735;hb=9563e3bcd662b87ea6779714b51afb61571dd32d;hp=e875eeb7f89bc506a36920a9fcf60135dd733281;hpb=930691876762e8149724993e2de7a80648442615;p=tt-rss.git diff --git a/classes/feeds.php b/classes/feeds.php index e875eeb7..48e3337e 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -173,53 +173,10 @@ class Feeds extends Handler_Protected { $method_split = explode(":", $method); if ($method == "ForceUpdate" && $feed > 0 && is_numeric($feed)) { - // Update the feed if required with some basic flood control - - $any_needs_curl = false; - - if (ini_get("open_basedir")) { - $pluginhost = PluginHost::getInstance(); - foreach ($pluginhost->get_plugins() as $plugin) { - $flags = $plugin->flags(); - - if (isset($flags["needs_curl"]) && $flags["needs_curl"]) { - $any_needs_curl = true; - break; - } - } - } - - //if ($_REQUEST["debug"]) print ""; - - if (!$any_needs_curl) { - - $sth = $this->pdo->prepare("SELECT cache_images," . SUBSTRING_FOR_DATE . "(last_updated,1,19) AS last_updated - FROM ttrss_feeds WHERE id = ?"); - $sth->execute([$feed]); - - if ($row = $sth->fetch()) { - $last_updated = strtotime($row["last_updated"]); - $cache_images = $row["cache_images"]; - - if (!$cache_images && time() - $last_updated > 120) { - try { - RSSUtils::update_rss_feed($feed, true); - } catch (PDOException $e) { - user_error("PDO Exception while doing on-demand feed update for $feed: " . $e->getMessage(), E_USER_NOTICE); - } - } else { - $sth = $this->pdo->prepare("UPDATE ttrss_feeds - SET last_updated = '1970-01-01', last_update_started = '1970-01-01' - WHERE id = ?"); - $sth->execute([$feed]); - } - } - } else { - $sth = $this->pdo->prepare("UPDATE ttrss_feeds - SET last_updated = '1970-01-01', last_update_started = '1970-01-01' - WHERE id = ?"); - $sth->execute([$feed]); - } + $sth = $this->pdo->prepare("UPDATE ttrss_feeds + SET last_updated = '1970-01-01', last_update_started = '1970-01-01' + WHERE id = ?"); + $sth->execute([$feed]); } if ($method_split[0] == "MarkAllReadGR") { @@ -320,7 +277,6 @@ class Feeds extends Handler_Protected { $lnum = $offset; $num_unread = 0; if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info); - $expand_cdm = get_pref('CDM_EXPANDED'); if (is_object($result)) { @@ -520,6 +476,8 @@ class Feeds extends Handler_Protected { $line = $p->hook_render_article_cdm($line); } + $line['content'] = rewrite_cached_urls($line['content']); + if ($vfeed_group_enabled && $line["feed_title"]) { if ($feed_id != $vgroup_last_feed) { @@ -538,10 +496,10 @@ class Feeds extends Handler_Protected { } } - $expanded_class = $expand_cdm ? "expanded" : "expandable"; + $content_encoded = htmlspecialchars(json_encode($line["content"])); - $tmp_content = "
"; + $tmp_content = "
"; $tmp_content .= "
"; $tmp_content .= "
"; @@ -557,7 +515,9 @@ class Feeds extends Handler_Protected { if ($highlight_words && count($highlight_words) > 0) { foreach ($highlight_words as $word) { - $line["title"] = preg_replace("/(\Q$word\E)/i", + $word = preg_quote($word, "/"); + + $line["title"] = preg_replace("/($word)/i", "$1", $line["title"]); } } @@ -566,7 +526,7 @@ class Feeds extends Handler_Protected { $tmp_content .= " + class=\"titleWrap hlMenuAttach $hlc_suffix\"> "; - if (!$expand_cdm) - $content_hidden = "style=\"display : none\""; - else - $excerpt_hidden = "style=\"display : none\""; - - $tmp_content .= "" . $content_preview . ""; - $tmp_content .= ""; if (!$vfeed_group_enabled) { @@ -615,9 +568,7 @@ class Feeds extends Handler_Protected { $tmp_content .= "
"; //cdmHeader - $tmp_content .= "
"; + $tmp_content .= "
"; $tmp_content .= "
"; if ($line['note']) { @@ -627,6 +578,7 @@ class Feeds extends Handler_Protected { if (!$line['lang']) $line['lang'] = 'en'; + // this is filled from RROW data-content $tmp_content .= "
"; if ($line["orig_feed_id"]) { @@ -655,14 +607,7 @@ class Feeds extends Handler_Protected { } } - $tmp_content .= ""; - $tmp_content .= ""; - $tmp_content .= htmlspecialchars($line["content"]); - $tmp_content .= ""; - $tmp_content .= ""; - $tmp_content .= "
"; //cdmContentInner - $tmp_content .= "
"; $always_display_enclosures = $line["always_display_enclosures"]; @@ -671,7 +616,7 @@ class Feeds extends Handler_Protected { $tmp_content .= "
"; // cdmIntermediate - $tmp_content .= "
"; + $tmp_content .= "
"; foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_LEFT_BUTTON) as $p) { $tmp_content .= $p->hook_article_left_button($line); @@ -1000,6 +945,8 @@ class Feeds extends Handler_Protected { } function quickAddFeed() { + print "
"; + print_hidden("op", "rpc"); print_hidden("method", "addfeed"); @@ -1064,10 +1011,8 @@ class Feeds extends Handler_Protected {
"; - print ""; - print "
- "; + "; if (!(defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER)) { print ""; @@ -1076,6 +1021,8 @@ class Feeds extends Handler_Protected { print "
"; + print ""; + //return; } @@ -1133,6 +1080,8 @@ class Feeds extends Handler_Protected { $active_feed_id = sprintf("%d", $this->params[0]); $is_cat = $this->params[1] != "false"; + print "
"; + print "
".__('Look for')."
"; print "
"; @@ -1159,14 +1108,19 @@ class Feeds extends Handler_Protected {
"; } - print " + print "
"; + + print ""; } function update_debugger() { header("Content-type: text/html"); + Debug::set_enabled(true); + Debug::set_loglevel($_REQUEST["xdebug"]); + $feed_id = (int)$_REQUEST["feed_id"]; @$do_update = $_REQUEST["action"] == "do_update"; $csrf_token = $_REQUEST["csrf_token"]; @@ -1263,6 +1217,7 @@ class Feeds extends Handler_Protected { if ($feed > 0) { $children = Feeds::getChildCategories($feed, $owner_uid); array_push($children, $feed); + $children = array_map("intval", $children); $children = join(",", $children); @@ -1429,7 +1384,7 @@ class Feeds extends Handler_Protected { } else if ($n_feed >= 0) { if ($n_feed != 0) { - $match_part = "feed_id = '$n_feed'"; + $match_part = "feed_id = " . (int)$n_feed; } else { $match_part = "feed_id IS NULL"; } @@ -1500,6 +1455,10 @@ class Feeds extends Handler_Protected { $contents = @fetch_file_contents($url, false, $auth_login, $auth_pass); + foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SUBSCRIBE_FEED) as $plugin) { + $contents = $plugin->hook_subscribe_feed($contents, $url, $auth_login, $auth_pass); + } + if (!$contents) { if (preg_match("/cloudflare\.com/", $fetch_last_error_content)) { $fetch_last_error .= " (feed behind Cloudflare)"; @@ -1508,10 +1467,6 @@ class Feeds extends Handler_Protected { return array("code" => 5, "message" => $fetch_last_error); } - foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SUBSCRIBE_FEED) as $plugin) { - $contents = $plugin->hook_subscribe_feed($contents, $url, $auth_login, $auth_pass); - } - if (is_html($contents)) { $feedUrls = get_feeds_from_html($url, $contents); @@ -1538,7 +1493,7 @@ class Feeds extends Handler_Protected { (owner_uid,feed_url,title,cat_id, auth_login,auth_pass,update_method,auth_pass_encrypted) VALUES (?, ?, ?, ?, ?, ?, 0, false)"); - $sth->execute([$_SESSION['uid'], $url, "[Unknown]", $cat_id, $auth_login, $auth_pass]); + $sth->execute([$_SESSION['uid'], $url, "[Unknown]", $cat_id, (string)$auth_login, (string)$auth_pass]); $sth = $pdo->prepare("SELECT id FROM ttrss_feeds WHERE feed_url = ? AND owner_uid = ?"); @@ -1664,7 +1619,7 @@ class Feeds extends Handler_Protected { $cat_feeds = array(); while ($line = $sth->fetch()) { - array_push($cat_feeds, "feed_id = " . $line["id"]); + array_push($cat_feeds, "feed_id = " . (int)$line["id"]); } if (count($cat_feeds) == 0) return 0; @@ -1879,8 +1834,9 @@ class Feeds extends Handler_Protected { if ($include_children) { # sub-cats $subcats = Feeds::getChildCategories($feed, $owner_uid); - array_push($subcats, $feed); + $subcats = array_map("intval", $subcats); + $query_strategy_part = "cat_id IN (". implode(",", $subcats).")"; @@ -2088,9 +2044,9 @@ class Feeds extends Handler_Protected { $sanity_interval_qpart $first_id_query_strategy_part ORDER BY $order_by LIMIT 1"; - if ($_REQUEST["debug"]) { + /*if ($_REQUEST["debug"]) { print $query; - } + }*/ $res = $pdo->query($query); @@ -2136,7 +2092,7 @@ class Feeds extends Handler_Protected { $query_strategy_part ORDER BY $order_by $limit_query_part $offset_query_part"; - if ($_REQUEST["debug"]) print $query; + //if ($_REQUEST["debug"]) print $query; $res = $pdo->query($query);