]> git.wh0rd.org - tt-rss.git/blobdiff - classes/feeds.php
Merge branch 'master' of github.com:gothfox/Tiny-Tiny-RSS
[tt-rss.git] / classes / feeds.php
index 969c25db10cab40fd9d51cfb442b0be79fc9b013..c57328fe7e57ffdcb613aa87ceb67a2120158f1d 100644 (file)
@@ -11,7 +11,7 @@ class Feeds extends Handler_Protected {
 
        private function format_headline_subtoolbar($feed_site_url, $feed_title,
                        $feed_id, $is_cat, $search,
-                       $search_mode, $view_mode, $error) {
+                       $search_mode, $view_mode, $error, $feed_last_updated) {
 
                $page_prev_link = "viewFeedGoPage(-1)";
                $page_next_link = "viewFeedGoPage(1)";
@@ -53,12 +53,15 @@ class Feeds extends Handler_Protected {
                $reply .= "<span id='feed_title'>";
 
                if ($feed_site_url) {
+                       $last_updated = T_sprintf("Last updated: %s",
+                               $feed_last_updated);
+
                        $target = "target=\"_blank\"";
-                       $reply .= "<a title=\"".__("Visit the website")."\" $target href=\"$feed_site_url\">".
+                       $reply .= "<a title=\"$last_updated\" $target href=\"$feed_site_url\">".
                                truncate_string($feed_title,30)."</a>";
 
                        if ($error) {
-                               $reply .= " (<span class=\"error\" title=\"$error\">Error</span>)";
+                               $reply .= "&nbsp;<img title='$error' src='images/error.png' alt='error' class=\"noborder\" style=\"vertical-align : middle\">";
                        }
 
                } else {
@@ -71,7 +74,7 @@ class Feeds extends Handler_Protected {
                        <a href=\"#\"
                                title=\"".__("View as RSS feed")."\"
                                onclick=\"displayDlg('".__("View as RSS")."','generatedFeed', '$feed_id:$is_cat:$rss_link')\">
-                               <img class=\"noborder\" style=\"vertical-align : middle\" src=\"images/pub_set.svg\"></a>";
+                               <img class=\"noborder\" style=\"vertical-align : middle\" src=\"images/pub_set.png\"></a>";
 
                $reply .= "</span>";
 
@@ -108,14 +111,12 @@ class Feeds extends Handler_Protected {
 
                }
 
-               global $pluginhost;
-
-               if ($pluginhost->get_plugin("mail")) {
+               if (PluginHost::getInstance()->get_plugin("mail")) {
                        $reply .= "<option value=\"emailArticle(false)\">".__('Forward by email').
                                "</option>";
                }
 
-               if ($pluginhost->get_plugin("mailto")) {
+               if (PluginHost::getInstance()->get_plugin("mailto")) {
                        $reply .= "<option value=\"mailtoArticle(false)\">".__('Forward by email').
                                "</option>";
                }
@@ -132,7 +133,7 @@ class Feeds extends Handler_Protected {
 
                //$reply .= "</h2";
 
-               foreach ($pluginhost->get_hooks($pluginhost::HOOK_HEADLINE_TOOLBAR_BUTTON) as $p) {
+               foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINE_TOOLBAR_BUTTON) as $p) {
                         echo $p->hook_headline_toolbar_button($feed_id, $is_cat);
                }
 
@@ -214,9 +215,7 @@ class Feeds extends Handler_Protected {
 //             error_log("search_mode: " . $search_mode);
 
                if (!$cat_view && is_numeric($feed) && $feed < PLUGIN_FEED_BASE_INDEX && $feed > LABEL_BASE_INDEX) {
-                       global $pluginhost;
-
-                       $handler = $pluginhost->get_feed_handler(
+                       $handler = PluginHost::getInstance()->get_feed_handler(
                                PluginHost::feed_to_pfeed_id($feed));
 
                //      function queryFeedHeadlines($feed, $limit, $view_mode, $cat_view, $search, $search_mode, $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false, $ignore_vfeed_group = false) {
@@ -251,13 +250,15 @@ class Feeds extends Handler_Protected {
                $feed_title = $qfh_ret[1];
                $feed_site_url = $qfh_ret[2];
                $last_error = $qfh_ret[3];
+               $last_updated = strpos($qfh_ret[4], '1970-') === FALSE ?
+                       make_local_datetime($qfh_ret[4], false) : __("Never");
 
                $vgroup_last_feed = $vgr_last_feed;
 
                $reply['toolbar'] = $this->format_headline_subtoolbar($feed_site_url,
                        $feed_title,
                        $feed, $cat_view, $search, $search_mode, $view_mode,
-                       $last_error);
+                       $last_error, $last_updated);
 
                $headlines_count = $this->dbh->num_rows($result);
 
@@ -273,8 +274,6 @@ class Feeds extends Handler_Protected {
                        }
                } */
 
-               global $pluginhost;
-
                if ($this->dbh->num_rows($result) > 0) {
 
                        $lnum = $offset;
@@ -289,7 +288,15 @@ class Feeds extends Handler_Protected {
                        $expand_cdm = get_pref('CDM_EXPANDED');
 
                        while ($line = $this->dbh->fetch_assoc($result)) {
-                               $class = ($lnum % 2) ? "even" : "odd";
+                               $line["content_preview"] =  "&mdash; " . truncate_string(strip_tags($line["content_preview"]), 250);
+
+                               foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+                                       $line = $p->hook_query_headlines($line, 250, false);
+                               }
+
+                               if (get_pref('SHOW_CONTENT_PREVIEW')) {
+                                       $content_preview =  $line["content_preview"];
+                               }
 
                                $id = $line["id"];
                                $feed_id = $line["feed_id"];
@@ -317,6 +324,8 @@ class Feeds extends Handler_Protected {
                                        array_push($topmost_article_ids, $id);
                                }
 
+                               $class = "";
+
                                if (sql_bool_to_bool($line["unread"])) {
                                        $class .= " Unread";
                                        ++$num_unread;
@@ -324,24 +333,24 @@ class Feeds extends Handler_Protected {
 
                                if (sql_bool_to_bool($line["marked"])) {
                                        $marked_pic = "<img
-                                               src=\"images/mark_set.svg\"
+                                               src=\"images/mark_set.png\"
                                                class=\"markedPic\" alt=\"Unstar article\"
                                                onclick='toggleMark($id)'>";
                                        $class .= " marked";
                                } else {
                                        $marked_pic = "<img
-                                               src=\"images/mark_unset.svg\"
+                                               src=\"images/mark_unset.png\"
                                                class=\"markedPic\" alt=\"Star article\"
                                                onclick='toggleMark($id)'>";
                                }
 
                                if (sql_bool_to_bool($line["published"])) {
-                                       $published_pic = "<img src=\"images/pub_set.svg\"
+                                       $published_pic = "<img src=\"images/pub_set.png\"
                                                class=\"pubPic\"
                                                        alt=\"Unpublish article\" onclick='togglePub($id)'>";
                                        $class .= " published";
                                } else {
-                                       $published_pic = "<img src=\"images/pub_unset.svg\"
+                                       $published_pic = "<img src=\"images/pub_unset.png\"
                                                class=\"pubPic\"
                                                alt=\"Publish article\" onclick='togglePub($id)'>";
                                }
@@ -361,11 +370,6 @@ class Feeds extends Handler_Protected {
                                $date_entered_fmt = T_sprintf("Imported at %s",
                                        make_local_datetime($line["date_entered"], false));
 
-                               if (get_pref('SHOW_CONTENT_PREVIEW')) {
-                                       $content_preview = truncate_string(strip_tags($line["content_preview"]),
-                                               100);
-                               }
-
                                $score = $line["score"];
 
                                $score_pic = "images/" . get_score_pic($score);
@@ -378,9 +382,9 @@ class Feeds extends Handler_Protected {
                                        title=\"$score\">";
 
                                if ($score > 500) {
-                                       $hlc_suffix = "H";
+                                       $hlc_suffix = "high";
                                } else if ($score < -100) {
-                                       $hlc_suffix = "L";
+                                       $hlc_suffix = "low";
                                } else {
                                        $hlc_suffix = "";
                                }
@@ -396,7 +400,7 @@ class Feeds extends Handler_Protected {
                                if ($has_feed_icon) {
                                        $feed_icon_img = "<img class=\"tinyFeedIcon\" src=\"".ICONS_URL."/$feed_id.ico\" alt=\"\">";
                                } else {
-                                       $feed_icon_img = "<img class=\"tinyFeedIcon\" src=\"images/pub_set.svg\" alt=\"\">";
+                                       $feed_icon_img = "<img class=\"tinyFeedIcon\" src=\"images/pub_set.png\" alt=\"\">";
                                }
 
                                $entry_site_url = $line["site_url"];
@@ -406,27 +410,10 @@ class Feeds extends Handler_Protected {
 
                                require_once "colors.php";
 
-                               if ($fav_color) {
+                               if ($fav_color && $fav_color != 'fail') {
                                        if (!isset($rgba_cache[$feed_id])) {
                                                $rgba_cache[$feed_id] = join(",", _color_unpack($fav_color));
                                        }
-
-                                       $rgba = $rgba_cache[$feed_id];
-
-                                       if (sql_bool_to_bool($line["unread"]))
-                                               $endalpha = '0.3';
-                                       else
-                                               $endalpha = '0.1';
-
-                                       // W3C definition seems to work in FF and Chrome
-                                       $row_background = "background-image : linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba($rgba, $endalpha) 100%);";
-
-                                       /* $row_background = "background-image : -moz-linear-gradient(left, rgba(255, 255, 255, 0) 50%, rgba($rgba, 0.2) 100%);".
-                                               "background-image : linear-gradient(to right, rgba(255, 255, 255, 0) 50%, rgba($rgba, 0.2) 100%);";
-                                               "background-image : -webkit-gradient(linear, left top, right top, color-stop(50%, rgba(255,255,255,0)),
-                                                       color-stop(100%, rgba($rgba, 0.2)));"; */
-                               } else {
-                                       $row_background = "";
                                }
 
                                if (!get_pref('COMBINED_DISPLAY_MODE')) {
@@ -452,7 +439,7 @@ class Feeds extends Handler_Protected {
                                        $mouseover_attrs = "onmouseover='postMouseIn(event, $id)'
                                                onmouseout='postMouseOut($id)'";
 
-                                       $reply['content'] .= "<div class='hl $class' id='RROW-$id' $mouseover_attrs style='$row_background'>";
+                                       $reply['content'] .= "<div class='hl $class' id='RROW-$id' $mouseover_attrs>";
 
                                        $reply['content'] .= "<div class='hlLeft'>";
 
@@ -466,16 +453,14 @@ class Feeds extends Handler_Protected {
                                        $reply['content'] .= "</div>";
 
                                        $reply['content'] .= "<div onclick='return hlClicked(event, $id)'
-                                               class=\"hlTitle\"><span class='hlContent$hlc_suffix'>";
-                                       $reply['content'] .= "<a id=\"RTITLE-$id\" class=\"title\"
+                                               class=\"hlTitle\"><span class='hlContent $hlc_suffix'>";
+                                       $reply['content'] .= "<a id=\"RTITLE-$id\" class=\"title $hlc_suffix\"
                                                href=\"" . htmlspecialchars($line["link"]) . "\"
                                                onclick=\"\">" .
                                                truncate_string($line["title"], 200);
 
                                        if (get_pref('SHOW_CONTENT_PREVIEW')) {
-                                               if ($content_preview) {
-                                                       $reply['content'] .= "<span class=\"contentPreview\"> - $content_preview</span>";
-                                               }
+                                                       $reply['content'] .= "<span class=\"contentPreview\">" . $line["content_preview"] . "</span>";
                                        }
 
                                        $reply['content'] .= "</a></span>";
@@ -488,14 +473,14 @@ class Feeds extends Handler_Protected {
 
                                        if (!get_pref('VFEED_GROUP_BY_FEED')) {
                                                if (@$line["feed_title"]) {
-                                                       $reply['content'] .= "<div class=\"hlFeed\">
-                                                               <a href=\"#\" onclick=\"viewfeed($feed_id)\">".
-                                                               truncate_string($line["feed_title"],30)."</a>
-                                                       </div>";
+                                                       $rgba = @$rgba_cache[$feed_id];
+
+                                                       $reply['content'] .= "<a class=\"hlFeed\" style=\"background : rgba($rgba, 0.3)\" href=\"#\" onclick=\"viewfeed($feed_id)\">".
+                                                               truncate_string($line["feed_title"],30)."</a>";
                                                }
                                        }
 
-                                       $reply['content'] .= "<span title='$date_entered_fmt'>$updated_fmt</span>
+                                       $reply['content'] .= "<div title='$date_entered_fmt'>$updated_fmt</div>
                                                </span>";
 
                                        $reply['content'] .= "<div class=\"hlRight\">";
@@ -515,13 +500,15 @@ class Feeds extends Handler_Protected {
 
                                } else {
 
-                                       $line["tags"] = get_article_tags($id, $_SESSION["uid"], $line["tag_cache"]);
-                                       unset($line["tag_cache"]);
+                                       if ($line["tag_cache"])
+                                               $tags = explode(",", $line["tag_cache"]);
+                                       else
+                                               $tags = false;
 
-                                       $line["content"] = sanitize($line["content_preview"],
+                                       $line["content"] = sanitize($line["content"],
                                                        sql_bool_to_bool($line['hide_images']), false, $entry_site_url);
 
-                                       foreach ($pluginhost->get_hooks($pluginhost::HOOK_RENDER_ARTICLE_CDM) as $p) {
+                                       foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_CDM) as $p) {
                                                $line = $p->hook_render_article_cdm($line);
                                        }
 
@@ -555,8 +542,8 @@ class Feeds extends Handler_Protected {
 
                                        $expanded_class = $expand_cdm ? "expanded" : "expandable";
 
-                                       $reply['content'] .= "<div class=\"cdm $expanded_class $class\"
-                                               id=\"RROW-$id\" $mouseover_attrs'>";
+                                       $reply['content'] .= "<div class=\"cdm $hlc_suffix $expanded_class $class\"
+                                               id=\"RROW-$id\" $mouseover_attrs>";
 
                                        $reply['content'] .= "<div class=\"cdmHeader\" style=\"$row_background\">";
                                        $reply['content'] .= "<div style=\"vertical-align : middle\">";
@@ -572,12 +559,12 @@ class Feeds extends Handler_Protected {
 
                                        $reply['content'] .= "<span id=\"RTITLE-$id\"
                                                onclick=\"return cdmClicked(event, $id);\"
-                                               class=\"titleWrap$hlc_suffix\">
-                                               <a class=\"title\"
+                                               class=\"titleWrap $hlc_suffix\">
+                                               <a class=\"title $hlc_suffix\"
                                                target=\"_blank\" href=\"".
                                                htmlspecialchars($line["link"])."\">".
                                                $line["title"] .
-                                               " <span class=\"author\">$entry_author</span></a>";
+                                               "</a> <span class=\"author\">$entry_author</span>";
 
                                        $reply['content'] .= $labels_str;
 
@@ -590,14 +577,17 @@ class Feeds extends Handler_Protected {
                                        else
                                                $excerpt_hidden = "style=\"display : none\"";
 
-                                       $reply['content'] .= "<span $excerpt_hidden
-                                               id=\"CEXC-$id\" class=\"cdmExcerpt\"> - $content_preview</span>";
+                                       $reply['content'] .= "<span $excerpt_hidden id=\"CEXC-$id\" class=\"cdmExcerpt\">" . $line["content_preview"] . "</span>";
+
                                        $reply['content'] .= "</span>";
 
                                        if (!get_pref('VFEED_GROUP_BY_FEED')) {
                                                if (@$line["feed_title"]) {
+                                                       $rgba = @$rgba_cache[$feed_id];
+
                                                        $reply['content'] .= "<div class=\"hlFeed\">
-                                                               <a href=\"#\" onclick=\"viewfeed($feed_id)\">".
+                                                               <a href=\"#\" style=\"background-color: rgba($rgba,0.3)\"
+                                                               onclick=\"viewfeed($feed_id)\">".
                                                                truncate_string($line["feed_title"],30)."</a>
                                                        </div>";
                                                }
@@ -606,7 +596,7 @@ class Feeds extends Handler_Protected {
                                        $reply['content'] .= "<span class='updated' title='$date_entered_fmt'>
                                                $updated_fmt</span>";
 
-                                       $reply['content'] .= "<div style=\"vertical-align : middle\">";
+                                       $reply['content'] .= "<div class='scoreWrap' style=\"vertical-align : middle\">";
                                        $reply['content'] .= "$score_pic";
 
                                        if (!get_pref("VFEED_GROUP_BY_FEED") && $line["feed_title"]) {
@@ -628,7 +618,6 @@ class Feeds extends Handler_Protected {
                                        }
                                        $reply['content'] .= "</div>";
 
-
                                        $reply['content'] .= "<div class=\"cdmContentInner\">";
 
                        if ($line["orig_feed_id"]) {
@@ -652,7 +641,7 @@ class Feeds extends Handler_Protected {
                                                        $reply['content'] .= "&nbsp;";
 
                                                        $reply['content'] .= "<a target='_blank' href='" . htmlspecialchars($tmp_line['feed_url']) . "'>";
-                                                       $reply['content'] .= "<img title='".__('Feed URL')."'class='tinyFeedIcon' src='images/pub_unset.svg'></a>";
+                                                       $reply['content'] .= "<img title='".__('Feed URL')."'class='tinyFeedIcon' src='images/pub_unset.png'></a>";
 
                                                        $reply['content'] .= "</div>";
                                                }
@@ -679,16 +668,16 @@ class Feeds extends Handler_Protected {
 
                                        $reply['content'] .= "<div class=\"cdmFooter\">";
 
-                                       foreach ($pluginhost->get_hooks($pluginhost::HOOK_ARTICLE_LEFT_BUTTON) as $p) {
+                                       foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_LEFT_BUTTON) as $p) {
                                                $reply['content'] .= $p->hook_article_left_button($line);
                                        }
 
-                                       $tags_str = format_tags_string($line["tags"], $id);
+                                       $tags_str = format_tags_string($tags, $id);
 
                                        $reply['content'] .= "<img src='images/tag.png' alt='Tags' title='Tags'>
                                                <span id=\"ATSTR-$id\">$tags_str</span>
                                                <a title=\"".__('Edit tags for this article')."\"
-                                               href=\"#\" onclick=\"editArticleTags($id, $feed_id, true)\">(+)</a>";
+                                               href=\"#\" onclick=\"editArticleTags($id)\">(+)</a>";
 
                                        $num_comments = $line["num_comments"];
                                        $entry_comments = "";
@@ -713,14 +702,14 @@ class Feeds extends Handler_Protected {
 //                                     $reply['content'] .= "$marked_pic";
 //                                     $reply['content'] .= "$published_pic";
 
-                                       foreach ($pluginhost->get_hooks($pluginhost::HOOK_ARTICLE_BUTTON) as $p) {
+                                       foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_ARTICLE_BUTTON) as $p) {
                                                $reply['content'] .= $p->hook_article_button($line);
                                        }
 
                                        $reply['content'] .= "</div>";
                                        $reply['content'] .= "</div>";
 
-                                       $reply['content'] .= "</div>";
+                                       $reply['content'] .= "</div><hr/>";
 
                                        $reply['content'] .= "</div>";
 
@@ -877,7 +866,7 @@ class Feeds extends Handler_Protected {
                        $override_order = "ttrss_entries.title";
                        break;
                case "date_reverse":
-                       $override_order = "date_entered, updated";
+                       $override_order = "score DESC, date_entered, updated";
                        break;
                case "feed_dates":
                        $override_order = "updated DESC";