Esempio n. 1
0
function render_article($link, $id, $feed_id, $cat_id)
{
    $query = "SELECT title,link,content,feed_id,comments,int_id,\n\t\t\tmarked,unread,published,\n\t\t\t" . SUBSTRING_FOR_DATE . "(updated,1,16) as updated,\n\t\t\tauthor\n\t\t\tFROM ttrss_entries,ttrss_user_entries\n\t\t\tWHERE\tid = '{$id}' AND ref_id = id AND owner_uid = " . $_SESSION["uid"];
    $result = db_query($link, $query);
    if (db_num_rows($result) != 0) {
        $line = db_fetch_assoc($result);
        $tmp_result = db_query($link, "UPDATE ttrss_user_entries \n\t\t\t\tSET unread = false,last_read = NOW() \n\t\t\t\tWHERE ref_id = '{$id}'\n\t\t\t\tAND owner_uid = " . $_SESSION["uid"]);
        if (get_pref($link, 'HEADLINES_SMART_DATE')) {
            $updated_fmt = smart_date_time(strtotime($line["updated"]));
        } else {
            $short_date = get_pref($link, 'SHORT_DATE_FORMAT');
            $updated_fmt = date($short_date, strtotime($line["updated"]));
        }
        $title = $line["title"];
        $article_link = $line["link"];
        $feed_title = getFeedTitle($link, $feed_id, false);
        print "<div class=\"panel\" id=\"article-{$id}\" title=\"{$title}\" \n\t\t\t\tselected=\"true\"\n\t\t\t\tmyBackLabel='{$feed_title}' myBackHref='feed.php?id={$feed_id}&cat={$cat_id}'>";
        print "<h2><a target='_blank' href='{$article_link}'>{$title}</a></h2>";
        print "<fieldset>";
        /*			print "<div class=\"row\">";
        			print "<label id='title'><a target='_blank' href='$article_link'>$title</a></label>";
        			print "</div>"; */
        $is_starred = sql_bool_to_bool($line["marked"]) ? "true" : "false";
        $is_published = sql_bool_to_bool($line["published"]) ? "true" : "false";
        print "<div class=\"row\">";
        print "<label id='updated'>Updated:</label>";
        print "<input enabled='false' name='updated' disabled value='{$updated_fmt}'/>";
        print "</div>";
        print "</fieldset>";
        $content = sanitize_rss($link, $line["content"]);
        $content = preg_replace("/href=/i", "target=\"_blank\" href=", $content);
        if (!mobile_get_pref($link, "SHOW_IMAGES")) {
            $content = preg_replace('/<img[^>]+>/is', '', $content);
        }
        print "<p>{$content}</p>";
        print "<fieldset>";
        print "<div class=\"row\">\n\t                <label>Starred</label>\n\t                <div class=\"toggle\" onclick=\"toggleMarked({$id}, this)\" toggled=\"{$is_starred}\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>\n\t            </div>";
        print "<div class=\"row\">\n\t                <label>Published</label>\n\t                <div class=\"toggle\" onclick=\"togglePublished({$id}, this)\" toggled=\"{$is_published}\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>\n\t            </div>";
        print "</fieldset>";
        print "</div>";
    }
}
Esempio n. 2
0
function outputHeadlinesList($link, $feed, $subop, $view_mode, $limit, $cat_view, $next_unread_feed, $offset, $vgr_last_feed = false, $override_order = false)
{
    $disable_cache = false;
    $timing_info = getmicrotime();
    $topmost_article_ids = array();
    if (!$offset) {
        $offset = 0;
    }
    if ($subop == "undefined") {
        $subop = "";
    }
    $subop_split = split(":", $subop);
    if ($subop == "CatchupSelected") {
        $ids = split(",", db_escape_string($_REQUEST["ids"]));
        $cmode = sprintf("%d", $_REQUEST["cmode"]);
        catchupArticlesById($link, $ids, $cmode);
    }
    if ($subop == "ForceUpdate" && sprintf("%d", $feed) > 0) {
        update_generic_feed($link, $feed, $cat_view, true);
    }
    if ($subop == "MarkAllRead") {
        catchup_feed($link, $feed, $cat_view);
        if (get_pref($link, 'ON_CATCHUP_SHOW_NEXT_FEED')) {
            if ($next_unread_feed) {
                $feed = $next_unread_feed;
            }
        }
    }
    if ($subop_split[0] == "MarkAllReadGR") {
        catchup_feed($link, $subop_split[1], false);
    }
    if ($feed_id > 0) {
        $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE id = '{$feed}' LIMIT 1");
        if (db_num_rows($result) == 0) {
            print "<div align='center'>" . __('Feed not found.') . "</div>";
            return;
        }
    }
    if (preg_match("/^-?[0-9][0-9]*\$/", $feed) != false) {
        $result = db_query($link, "SELECT rtl_content FROM ttrss_feeds\n\t\t\t\tWHERE id = '{$feed}' AND owner_uid = " . $_SESSION["uid"]);
        if (db_num_rows($result) == 1) {
            $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content"));
        } else {
            $rtl_content = false;
        }
        if ($rtl_content) {
            $rtl_tag = "dir=\"RTL\"";
        } else {
            $rtl_tag = "";
        }
    } else {
        $rtl_tag = "";
        $rtl_content = false;
    }
    $script_dt_add = get_script_dt_add();
    /// START /////////////////////////////////////////////////////////////////////////////////
    $search = db_escape_string($_REQUEST["query"]);
    if ($search) {
        $disable_cache = true;
    }
    $search_mode = db_escape_string($_REQUEST["search_mode"]);
    $match_on = db_escape_string($_REQUEST["match_on"]);
    if (!$match_on) {
        $match_on = "both";
    }
    $real_offset = $offset * $limit;
    if ($_REQUEST["debug"]) {
        $timing_info = print_checkpoint("H0", $timing_info);
    }
    $qfh_ret = queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $match_on, $override_order, $real_offset);
    if ($_REQUEST["debug"]) {
        $timing_info = print_checkpoint("H1", $timing_info);
    }
    $result = $qfh_ret[0];
    $feed_title = $qfh_ret[1];
    $feed_site_url = $qfh_ret[2];
    $last_error = $qfh_ret[3];
    $vgroup_last_feed = $vgr_last_feed;
    if ($feed == -2) {
        $feed_site_url = article_publish_url($link);
    }
    /// STOP //////////////////////////////////////////////////////////////////////////////////
    if (!$offset) {
        print "<div id=\"headlinesContainer\" {$rtl_tag}>";
        if (!$result) {
            print "<div align='center'>" . __("Could not display feed (query failed). Please check label match syntax or local configuration.") . "</div>";
            return;
        }
        print_headline_subtoolbar($link, $feed_site_url, $feed_title, $feed, $cat_view, $search, $match_on, $search_mode);
        print "<div id=\"headlinesInnerContainer\" onscroll=\"headlines_scroll_handler()\">";
    }
    $headlines_count = db_num_rows($result);
    if (db_num_rows($result) > 0) {
        #			print "\{$offset}";
        if (!get_pref($link, 'COMBINED_DISPLAY_MODE') && !$offset) {
            print "<table class=\"headlinesList\" id=\"headlinesList\" \n\t\t\t\t\tcellspacing=\"0\">";
        }
        $lnum = $limit * $offset;
        error_reporting(DEFAULT_ERROR_LEVEL);
        $num_unread = 0;
        $cur_feed_title = '';
        $fresh_intl = get_pref($link, "FRESH_ARTICLE_MAX_AGE") * 60 * 60;
        while ($line = db_fetch_assoc($result)) {
            $class = $lnum % 2 ? "even" : "odd";
            $id = $line["id"];
            $feed_id = $line["feed_id"];
            $labels = get_article_labels($link, $id);
            $labels_str = "<span id=\"HLLCTR-{$id}\">";
            $labels_str .= format_article_labels($labels, $id);
            $labels_str .= "</span>";
            if (count($topmost_article_ids) < 5) {
                array_push($topmost_article_ids, $id);
            }
            if ($line["last_read"] == "" && !sql_bool_to_bool($line["unread"])) {
                $update_pic = "<img id='FUPDPIC-{$id}' src=\"" . theme_image($link, 'images/updated.png') . "\" \n\t\t\t\t\t\talt=\"Updated\">";
            } else {
                $update_pic = "<img id='FUPDPIC-{$id}' src=\"images/blank_icon.gif\" \n\t\t\t\t\t\talt=\"Updated\">";
            }
            if (sql_bool_to_bool($line["unread"]) && time() - strtotime($line["updated_noms"]) < $fresh_intl) {
                $update_pic = "<img id='FUPDPIC-{$id}' src=\"" . theme_image($link, 'images/fresh_sign.png') . "\" alt=\"Fresh\">";
            }
            if ($line["unread"] == "t" || $line["unread"] == "1") {
                $class .= "Unread";
                ++$num_unread;
                $is_unread = true;
            } else {
                $is_unread = false;
            }
            if ($line["marked"] == "t" || $line["marked"] == "1") {
                $marked_pic = "<img id=\"FMPIC-{$id}\" \n\t\t\t\t\t\tsrc=\"" . theme_image($link, 'images/mark_set.png') . "\" \n\t\t\t\t\t\tclass=\"markedPic\" alt=\"Unstar article\" \n\t\t\t\t\t\tonclick='javascript:tMark({$id})'>";
            } else {
                $marked_pic = "<img id=\"FMPIC-{$id}\" \n\t\t\t\t\t\tsrc=\"" . theme_image($link, 'images/mark_unset.png') . "\" \n\t\t\t\t\t\tclass=\"markedPic\" alt=\"Star article\" \n\t\t\t\t\t\tonclick='javascript:tMark({$id})'>";
            }
            if ($line["published"] == "t" || $line["published"] == "1") {
                $published_pic = "<img id=\"FPPIC-{$id}\" src=\"" . theme_image($link, 'images/pub_set.png') . "\" \n\t\t\t\t\t\tclass=\"markedPic\"\n\t\t\t\t\t\talt=\"Unpublish article\" onclick='javascript:tPub({$id})'>";
            } else {
                $published_pic = "<img id=\"FPPIC-{$id}\" src=\"" . theme_image($link, 'images/pub_unset.png') . "\" \n\t\t\t\t\t\tclass=\"markedPic\"\n\t\t\t\t\t\talt=\"Publish article\" onclick='javascript:tPub({$id})'>";
            }
            #				$content_link = "<a target=\"_blank\" href=\"".$line["link"]."\">" .
            #					$line["title"] . "</a>";
            #				$content_link = "<a
            #					href=\"" . htmlspecialchars($line["link"]) . "\"
            #					onclick=\"view($id,$feed_id);\">" .
            #					$line["title"] . "</a>";
            #				$content_link = "<a href=\"javascript:viewContentUrl('".$line["link"]."');\">" .
            #					$line["title"] . "</a>";
            if (get_pref($link, 'HEADLINES_SMART_DATE')) {
                $updated_fmt = smart_date_time(strtotime($line["updated_noms"]));
            } else {
                $short_date = get_pref($link, 'SHORT_DATE_FORMAT');
                $updated_fmt = date($short_date, strtotime($line["updated_noms"]));
            }
            if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
                $content_preview = truncate_string(strip_tags($line["content_preview"]), 100);
            }
            $score = $line["score"];
            $score_pic = theme_image($link, "images/" . get_score_pic($score));
            /*				$score_title = __("(Click to change)");
            				$score_pic = "<img class='hlScorePic' src=\"images/$score_pic\" 
            					onclick=\"adjustArticleScore($id, $score)\" title=\"$score $score_title\">"; */
            $score_pic = "<img class='hlScorePic' src=\"{$score_pic}\" \n\t\t\t\t\ttitle=\"{$score}\">";
            if ($score > 500) {
                $hlc_suffix = "H";
            } else {
                if ($score < -100) {
                    $hlc_suffix = "L";
                } else {
                    $hlc_suffix = "";
                }
            }
            $entry_author = $line["author"];
            if ($entry_author) {
                $entry_author = " - {$entry_author}";
            }
            $has_feed_icon = feed_has_icon($feed_id);
            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/blank_icon.gif\" alt=\"\">";
                $feed_icon_img = "";
            }
            if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
                if (get_pref($link, 'VFEED_GROUP_BY_FEED')) {
                    if ($feed_id != $vgroup_last_feed && $line["feed_title"]) {
                        $cur_feed_title = $line["feed_title"];
                        $vgroup_last_feed = $feed_id;
                        $cur_feed_title = htmlspecialchars($cur_feed_title);
                        $vf_catchup_link = "(<a onclick='javascript:catchupFeedInGroup({$feed_id});' href='#'>" . __('mark as read') . "</a>)";
                        print "<tr class='feedTitle'><td colspan='7'>" . "<div style=\"float : right\">{$feed_icon_img}</div>" . "<a href=\"javascript:viewfeed({$feed_id}, '', false)\">" . $line["feed_title"] . "</a> {$vf_catchup_link}</td></tr>";
                    }
                }
                $mouseover_attrs = "onmouseover='postMouseIn({$id})' \n\t\t\t\t\t\tonmouseout='postMouseOut({$id})'";
                print "<tr class='{$class}' id='RROW-{$id}' {$mouseover_attrs}>";
                print "<td class='hlUpdPic'>{$update_pic}</td>";
                print "<td class='hlSelectRow'>\n\t\t\t\t\t\t<input type=\"checkbox\" onclick=\"tSR(this)\"\n\t\t\t\t\t\t\tid=\"RCHK-{$id}\">\n\t\t\t\t\t\t</td>";
                print "<td class='hlMarkedPic'>{$marked_pic}</td>";
                print "<td class='hlMarkedPic'>{$published_pic}</td>";
                #					if ($line["feed_title"]) {
                #						print "<td class='hlContent'>$content_link</td>";
                #						print "<td class='hlFeed'>
                #							<a href=\"javascript:viewfeed($feed_id, '', false)\">".
                #								truncate_string($line["feed_title"],30)."</a>&nbsp;</td>";
                #					} else {
                print "<td onclick='view({$id})' class='hlContent{$hlc_suffix}' valign='middle' id='HLC-{$id}'>";
                print "<a id=\"RTITLE-{$id}\" \n\t\t\t\t\t\thref=\"" . htmlspecialchars($line["link"]) . "\"\n\t\t\t\t\t\tonclick=\"return false\">" . $line["title"];
                if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
                    if ($content_preview) {
                        print "<span class=\"contentPreview\"> - {$content_preview}</span>";
                    }
                }
                print "</a>";
                print $labels_str;
                #							<a href=\"javascript:viewfeed($feed_id, '', false)\">".
                #							$line["feed_title"]."</a>
                if (!get_pref($link, 'VFEED_GROUP_BY_FEED')) {
                    if ($line["feed_title"]) {
                        print "<span class=\"hlFeed\">\n\t\t\t\t\t\t\t\t(<a href=\"javascript:viewfeed({$feed_id}, '', false)\">" . $line["feed_title"] . "</a>)\n\t\t\t\t\t\t\t</span>";
                    }
                }
                //					print "<img id='HLL-$id' class='hlLoading'
                //						src='images/indicator_tiny.gif' style='display : none'>";
                print "</td>";
                #					}
                print "<td class=\"hlUpdated\" onclick='view({$id})'><nobr>{$updated_fmt}&nbsp;</nobr></td>";
                print "<td class='hlMarkedPic'>{$score_pic}</td>";
                if ($line["feed_title"] && !get_pref($link, 'VFEED_GROUP_BY_FEED')) {
                    print "<td onclick=\"viewfeed({$feed_id})\" class=\"hlFeedIcon\">{$feed_icon_img}</td>";
                }
                print "</tr>";
            } else {
                if (get_pref($link, 'VFEED_GROUP_BY_FEED') && $line["feed_title"]) {
                    if ($feed_id != $vgroup_last_feed) {
                        $cur_feed_title = $line["feed_title"];
                        $vgroup_last_feed = $feed_id;
                        $cur_feed_title = htmlspecialchars($cur_feed_title);
                        $vf_catchup_link = "(<a onclick='javascript:catchupFeedInGroup({$feed_id});' href='#'>" . __('mark as read') . "</a>)";
                        $has_feed_icon = feed_has_icon($feed_id);
                        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/blank_icon.gif\" alt=\"\">";
                        }
                        print "<div class='cdmFeedTitle'>" . "<div style=\"float : right\">{$feed_icon_img}</div>" . "<a href=\"javascript:viewfeed({$feed_id}, '', false)\">" . $line["feed_title"] . "</a> {$vf_catchup_link}</div>";
                    }
                }
                if ($is_unread) {
                    $add_class = "Unread";
                } else {
                    $add_class = "";
                }
                $expand_cdm = get_pref($link, 'CDM_EXPANDED');
                $show_excerpt = false;
                if ($expand_cdm && $score >= -100) {
                    $cdm_cstyle = "";
                    $show_excerpt = false;
                } else {
                    $cdm_cstyle = "style=\"display : none\"";
                    $show_excerpt = true;
                }
                $mouseover_attrs = "onmouseover='postMouseIn({$id})' \n\t\t\t\t\t\tonmouseout='postMouseOut({$id})'";
                print "<div class=\"cdmArticle{$add_class}\" \n\t\t\t\t\t\tid=\"RROW-{$id}\"\t\t\t\t\t\t\n\t\t\t\t\t\t{$mouseover_attrs}'>";
                print "<div class=\"cdmHeader\">";
                if (!get_pref($link, "VFEED_GROUP_BY_FEED") || !$line["feed_title"]) {
                    $cdm_feed_icon = "<span style=\"cursor : pointer\" onclick=\"viewfeed({$feed_id})\">{$feed_icon_img}</span>";
                }
                print "<div class=\"articleUpdated\">{$updated_fmt} {$score_pic} {$cdm_feed_icon}\n\t\t\t\t\t\t</div>";
                print "<span id=\"RTITLE-{$id}\" class=\"titleWrap{$hlc_suffix}\"><a class=\"title\" \n\t\t\t\t\t\tonclick=\"javascript:toggleUnread({$id}, 0)\"\n\t\t\t\t\t\ttarget=\"_blank\" href=\"" . $line["link"] . "\">" . $line["title"] . "</a>\n\t\t\t\t\t\t";
                print $entry_author;
                /*					if (!$expand_cdm || $score < -100) {
                						print "&nbsp;<a id=\"CICH-$id\" 
                							href=\"javascript:cdmExpandArticle($id)\">
                							(".__('Show article').")</a>";
                					} */
                print $labels_str;
                if (!get_pref($link, 'VFEED_GROUP_BY_FEED')) {
                    if ($line["feed_title"]) {
                        print "&nbsp;(<a href='javascript:viewfeed({$feed_id})'>" . $line["feed_title"] . "</a>)";
                    }
                }
                print "</span></div>";
                if ($show_excerpt) {
                    print "<div class=\"cdmExcerpt\" id=\"CEXC-{$id}\"\n\t\t\t\t\t\t\tonclick=\"cdmExpandArticle({$id})\"\n\t\t\t\t\t\t\ttitle=\"" . __('Click to expand article') . "\">";
                    $content_preview = trim(truncate_string(strip_tags($line["content_preview"]), 100));
                    if (strlen($content_preview) != 0) {
                        print $content_preview;
                    } else {
                        print __('Click to expand article');
                    }
                    print "</div>";
                }
                print "<div class=\"cdmContent\" \n\t\t\t\t\t\tonclick=\"cdmClicked({$id})\"\n\t\t\t\t\t\tid=\"CICD-{$id}\" {$cdm_cstyle}>";
                if ($line["orig_feed_id"]) {
                    $tmp_result = db_query($link, "SELECT * FROM ttrss_archived_feeds\n\t\t\t\t\t\tWHERE id = " . $line["orig_feed_id"]);
                    if (db_num_rows($tmp_result) != 0) {
                        print "<div clear='both'>";
                        print __("Originally from:");
                        print "&nbsp;";
                        $tmp_line = db_fetch_assoc($tmp_result);
                        print "<a target='_blank' \n\t\t\t\t\t\t\thref=' " . htmlspecialchars($tmp_line['site_url']) . "'>" . $tmp_line['title'] . "</a>";
                        print "&nbsp;";
                        print "<a target='_blank' href='" . htmlspecialchars($tmp_line['feed_url']) . "'>";
                        print "<img title='" . __('Feed URL') . "'class='tinyFeedIcon' src='images/pub_set.gif'></a>";
                        print "</div>";
                    }
                }
                //					print "<div class=\"cdmInnerContent\" id=\"CICD-$id\" $cdm_cstyle>";
                print "<div id=\"POSTNOTE-{$id}\">";
                if ($line['note']) {
                    print format_article_note($id, $line['note']);
                }
                print "</div>";
                print sanitize_rss($link, $line["content_preview"]);
                $article_content = $line["content_preview"];
                $e_result = db_query($link, "SELECT * FROM ttrss_enclosures WHERE\n\t\t\t\t\t\tpost_id = '{$id}' AND content_url != ''");
                if (db_num_rows($e_result) > 0) {
                    $entries_html = array();
                    $entries = array();
                    while ($e_line = db_fetch_assoc($e_result)) {
                        $url = $e_line["content_url"];
                        $ctype = $e_line["content_type"];
                        if (!$ctype) {
                            $ctype = __("unknown type");
                        }
                        $filename = substr($url, strrpos($url, "/") + 1);
                        $entry = format_inline_player($link, $url, $ctype);
                        $entry .= " <a target=\"_blank\" href=\"" . htmlspecialchars($url) . "\">" . $filename . " (" . $ctype . ")" . "</a>";
                        array_push($entries_html, $entry);
                        $entry = array();
                        $entry["type"] = $ctype;
                        $entry["filename"] = $filename;
                        $entry["url"] = $url;
                        array_push($entries, $entry);
                    }
                    $tmp_result = db_query($link, "SELECT always_display_enclosures FROM\n\t\t\t\t\tttrss_feeds WHERE id = " . $line['feed_id'] . " AND owner_uid = " . $_SESSION["uid"]);
                    $always_display_enclosures = db_fetch_result($tmp_result, 0, "always_display_enclosures");
                    if (!get_pref($link, "STRIP_IMAGES")) {
                        if ($always_display_enclosures || !preg_match("/img/i", $article_content)) {
                            foreach ($entries as $entry) {
                                if (preg_match("/image/", $entry["type"]) || preg_match("/\\.(jpg|png|gif|bmp)/i", $entry["filename"])) {
                                    print "<p><img \n\t\t\t\t\t\t\t\t\talt=\"" . htmlspecialchars($entry["filename"]) . "\"\n\t\t\t\t\t\t\t\t\tsrc=\"" . htmlspecialchars($entry["url"]) . "\"></p>";
                                }
                            }
                        }
                    }
                    print "<div class=\"cdmEnclosures\">";
                    if (db_num_rows($e_result) == 1) {
                        print __("Attachment:") . " ";
                    } else {
                        print __("Attachments:") . " ";
                    }
                    print join(", ", $entries_html);
                    print "</div>";
                }
                print "<br clear='both'>";
                //					print "</div>";
                /*					if (!$expand_cdm) {
                						print "<a id=\"CICH-$id\" 
                							href=\"javascript:cdmExpandArticle($id)\">
                							Show article</a>";
                					} */
                print "</div>";
                print "<div class=\"cdmFooter\"><span class='s0'>";
                /* print "<div class=\"markedPic\">Star it: $marked_pic</div>"; */
                print __("Select:") . " <input type=\"checkbox\" onclick=\"toggleSelectRowById(this, \n\t\t\t\t\t\t\t'RROW-{$id}')\" class=\"feedCheckBox\" id=\"RCHK-{$id}\">";
                print "</span><span class='s1'>{$marked_pic}&nbsp;";
                print "{$published_pic}&nbsp;";
                print "<img src=\"images/art-zoom.png\" class='tagsPic' \n\t\t\t\t\t\tonclick=\"zoomToArticle({$id})\"\n\t\t\t\t\t\tstyle=\"cursor : pointer\"\n\t\t\t\t\t\talt='Zoom' \n\t\t\t\t\t\ttitle='" . __('Show article summary in new window') . "'>&nbsp;";
                $note_escaped = htmlspecialchars($line['note'], ENT_QUOTES);
                print "<img src=\"images/art-pub-note.png\" class='tagsPic' \n\t\t\t\t\t\tstyle=\"cursor : pointer\" style=\"cursor : pointer\"\n\t\t\t\t\t\tonclick=\"publishWithNote({$id}, '{$note_escaped}')\"\n\t\t\t\t\t\talt='PubNote' title='" . __('Publish article with a note') . "'>";
                print "</span>";
                $tags_str = format_tags_string(get_article_tags($link, $id), $id);
                print "<span class='s1'>\n\t\t\t\t\t\t<img class='tagsPic' src='" . theme_image($link, 'images/tag.png') . "' alt='Tags' title='Tags'>\n\t\t\t\t\t\t<span id=\"ATSTR-{$id}\">{$tags_str}</span>\n\t\t\t\t\t\t<a title=\"" . __('Edit tags for this article') . "\" \n\t\t\t\t\t\thref=\"javascript:editArticleTags({$id}, {$feed_id}, true)\">(+)</a>";
                print "</span>";
                print "<span class='s2'><a class=\"cdmToggleLink\"\n\t\t\t\t\t\t\thref=\"javascript:toggleUnread({$id})\">\n\t\t\t\t\t\t\t" . __('toggle unread') . "</a></span>";
                print "</div>";
                print "</div>";
            }
            ++$lnum;
        }
        if (!get_pref($link, 'COMBINED_DISPLAY_MODE') && !$offset) {
            print "</table>";
        }
    } else {
        $message = "";
        switch ($view_mode) {
            case "unread":
                $message = __("No unread articles found to display.");
                break;
            case "updated":
                $message = __("No updated articles found to display.");
                break;
            case "marked":
                $message = __("No starred articles found to display.");
                break;
            default:
                if ($feed < -10) {
                    $message = __("No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter.");
                } else {
                    $message = __("No articles found to display.");
                }
        }
        if (!$offset) {
            print "<div class='whiteBox'>{$message}</div>";
        }
    }
    if (!$offset) {
        print "</div>";
        print "</div>";
    }
    return array($topmost_article_ids, $headlines_count, $feed, $disable_cache, $vgroup_last_feed);
}
Esempio n. 3
0
function render_article($link, $id, $feed_id, $cat_id, $is_cat)
{
    $query = "SELECT title,link,content,feed_id,comments,int_id,\n\t\t\tmarked,unread,published,\n\t\t\t" . SUBSTRING_FOR_DATE . "(updated,1,16) as updated,\n\t\t\tauthor\n\t\t\tFROM ttrss_entries,ttrss_user_entries\n\t\t\tWHERE\tid = '{$id}' AND ref_id = id AND owner_uid = " . $_SESSION["uid"];
    $result = db_query($link, $query);
    if (db_num_rows($result) != 0) {
        $line = db_fetch_assoc($result);
        $tmp_result = db_query($link, "UPDATE ttrss_user_entries\n\t\t\t\tSET unread = false,last_read = NOW()\n\t\t\t\tWHERE ref_id = '{$id}'\n\t\t\t\tAND owner_uid = " . $_SESSION["uid"]);
        $updated_fmt = make_local_datetime($link, $line['updated'], false);
        $title = $line["title"];
        $article_link = $line["link"];
        if (!$is_cat) {
            $feed_title = getFeedTitle($link, $feed_id);
        } else {
            $feed_title = getCategoryTitle($link, $feed_id);
        }
        print "<div class=\"panel\" id=\"article-{$id}\" title=\"{$title}\"\n\t\t\t\tselected=\"true\"\n\t\t\t\tmyBackLabel='{$feed_title}' myBackHref='feed.php?id={$feed_id}&cat={$cat_id}&is_cat={$is_cat}'>";
        if ($line['feed_id'] != $feed_id) {
            $real_feed_title = getFeedTitle($link, $line['feed_id']);
            $real_feed_id = $line['feed_id'];
            $feed_link = "(<a href=\"feed.php?id={$real_feed_id}\">{$real_feed_title}</a>)";
        }
        //			print "<fieldset>";
        print "<div style='float : right'>({$updated_fmt})</div>";
        print "<h2><a target='_blank' href='{$article_link}'>{$title}</a> {$feed_link}</h2>";
        print "<hr>";
        /*			print "<div class=\"row\">";
        			print "<label id='title'><a target='_blank' href='$article_link'>$title</a></label>";
        			print "</div>"; */
        $is_starred = sql_bool_to_bool($line["marked"]) ? "true" : "false";
        $is_published = sql_bool_to_bool($line["published"]) ? "true" : "false";
        //print "<div class=\"row\">";
        //print "<label id='updated'>Updated:</label>";
        //print "<input type='text' enabled='false' name='updated' disabled value='$updated_fmt'/>";
        //print "</div>";
        //			print "</fieldset>";
        $content = sanitize_rss($link, $line["content"]);
        $content = preg_replace("/href=/i", "target=\"_blank\" href=", $content);
        if (!mobile_get_pref($link, "SHOW_IMAGES")) {
            $content = preg_replace('/<img[^>]+>/is', '', $content);
        }
        print "<p>{$content}</p>";
        print "<div class='nav'>\n                    <label>Navigation</label>\n                    <div class='button left' onclick='goPrev({$id}, {$feed_id}, this)'>Prev</div>\n                    <div class='button right' onclick='goNext({$id}, {$feed_id}, this)'>Next</div>\n                  </div>";
        print "<fieldset>";
        print "<div class=\"row\">\n\t                <label>Starred</label>\n\t                <div class=\"toggle\" onclick=\"toggleMarked({$id}, this)\" toggled=\"{$is_starred}\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>\n\t            </div>";
        print "<div class=\"row\">\n\t                <label>Published</label>\n\t                <div class=\"toggle\" onclick=\"togglePublished({$id}, this)\" toggled=\"{$is_published}\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>\n\t            </div>";
        print "<div class=\"row\">\n\t                <label>Unread</label>\n\t                <div class=\"toggle\" onclick=\"toggleUnread({$id}, this)\" toggled=\"{$is_unread}\"><span class=\"thumb\"></span><span class=\"toggleOn\">ON</span><span class=\"toggleOff\">OFF</span></div>\n\t            </div>";
        print "</fieldset>";
        print "</div>";
    }
}
Esempio n. 4
0
function format_headlines_list($link, $feed, $subop, $view_mode, $limit, $cat_view, $next_unread_feed, $offset, $vgr_last_feed = false, $override_order = false)
{
    $disable_cache = false;
    $reply = array();
    $timing_info = getmicrotime();
    $topmost_article_ids = array();
    if (!$offset) {
        $offset = 0;
    }
    if ($subop == "undefined") {
        $subop = "";
    }
    $subop_split = explode(":", $subop);
    /*		if ($subop == "CatchupSelected") {
    			$ids = explode(",", db_escape_string($_REQUEST["ids"]));
    			$cmode = sprintf("%d", $_REQUEST["cmode"]);
    
    			catchupArticlesById($link, $ids, $cmode);
    		} */
    if ($subop == "ForceUpdate" && $feed && is_numeric($feed) > 0) {
        update_rss_feed($link, $feed, true);
    }
    if ($subop == "MarkAllRead") {
        catchup_feed($link, $feed, $cat_view);
        if (get_pref($link, 'ON_CATCHUP_SHOW_NEXT_FEED')) {
            if ($next_unread_feed) {
                $feed = $next_unread_feed;
            }
        }
    }
    if ($subop_split[0] == "MarkAllReadGR") {
        catchup_feed($link, $subop_split[1], false);
    }
    // FIXME: might break tag display?
    if (is_numeric($feed) && $feed > 0 && !$cat_view) {
        $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE id = '{$feed}' LIMIT 1");
        if (db_num_rows($result) == 0) {
            $reply['content'] = "<div align='center'>" . __('Feed not found.') . "</div>";
        }
    }
    if (preg_match("/^-?[0-9][0-9]*\$/", $feed) != false) {
        $result = db_query($link, "SELECT rtl_content FROM ttrss_feeds\n\t\t\t\tWHERE id = '{$feed}' AND owner_uid = " . $_SESSION["uid"]);
        if (db_num_rows($result) == 1) {
            $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content"));
        } else {
            $rtl_content = false;
        }
        if ($rtl_content) {
            $rtl_tag = "dir=\"RTL\"";
        } else {
            $rtl_tag = "";
        }
    } else {
        $rtl_tag = "";
        $rtl_content = false;
    }
    @($search = db_escape_string($_REQUEST["query"]));
    if ($search) {
        $disable_cache = true;
    }
    @($search_mode = db_escape_string($_REQUEST["search_mode"]));
    @($match_on = db_escape_string($_REQUEST["match_on"]));
    if (!$match_on) {
        $match_on = "both";
    }
    if ($_REQUEST["debug"]) {
        $timing_info = print_checkpoint("H0", $timing_info);
    }
    //		error_log("format_headlines_list: [" . $feed . "] subop [" . $subop . "]");
    if ($search_mode == '' && $subop != '') {
        $search_mode = $subop;
    }
    //		error_log("search_mode: " . $search_mode);
    $qfh_ret = queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $match_on, $override_order, $offset);
    if ($_REQUEST["debug"]) {
        $timing_info = print_checkpoint("H1", $timing_info);
    }
    $result = $qfh_ret[0];
    $feed_title = $qfh_ret[1];
    $feed_site_url = $qfh_ret[2];
    $last_error = $qfh_ret[3];
    $vgroup_last_feed = $vgr_last_feed;
    //		if (!$offset) {
    if (db_num_rows($result) > 0) {
        $reply['toolbar'] = format_headline_subtoolbar($link, $feed_site_url, $feed_title, $feed, $cat_view, $search, $match_on, $search_mode, $view_mode, $last_error);
    }
    //		}
    $headlines_count = db_num_rows($result);
    if (db_num_rows($result) > 0) {
        $lnum = $offset;
        $num_unread = 0;
        $cur_feed_title = '';
        $fresh_intl = get_pref($link, "FRESH_ARTICLE_MAX_AGE") * 60 * 60;
        if ($_REQUEST["debug"]) {
            $timing_info = print_checkpoint("PS", $timing_info);
        }
        while ($line = db_fetch_assoc($result)) {
            $class = $lnum % 2 ? "even" : "odd";
            $id = $line["id"];
            $feed_id = $line["feed_id"];
            $label_cache = $line["label_cache"];
            $labels = false;
            if ($label_cache) {
                $label_cache = json_decode($label_cache, true);
                if ($label_cache) {
                    if ($label_cache["no-labels"] == 1) {
                        $labels = array();
                    } else {
                        $labels = $label_cache;
                    }
                }
            }
            if (!is_array($labels)) {
                $labels = get_article_labels($link, $id);
            }
            $labels_str = "<span id=\"HLLCTR-{$id}\">";
            $labels_str .= format_article_labels($labels, $id);
            $labels_str .= "</span>";
            if (count($topmost_article_ids) < 3) {
                array_push($topmost_article_ids, $id);
            }
            if ($line["last_read"] == "" && !sql_bool_to_bool($line["unread"])) {
                $update_pic = "<img id='FUPDPIC-{$id}' src=\"" . theme_image($link, 'images/updated.png') . "\"\n\t\t\t\t\t\talt=\"Updated\">";
            } else {
                $update_pic = "<img id='FUPDPIC-{$id}' src=\"images/blank_icon.gif\"\n\t\t\t\t\t\talt=\"Updated\">";
            }
            if (sql_bool_to_bool($line["unread"]) && time() - strtotime($line["updated_noms"]) < $fresh_intl) {
                $update_pic = "<img id='FUPDPIC-{$id}' src=\"" . theme_image($link, 'images/fresh_sign.png') . "\" alt=\"Fresh\">";
            }
            if ($line["unread"] == "t" || $line["unread"] == "1") {
                $class .= " Unread";
                ++$num_unread;
                $is_unread = true;
            } else {
                $is_unread = false;
            }
            if ($line["marked"] == "t" || $line["marked"] == "1") {
                $marked_pic = "<img id=\"FMPIC-{$id}\"\n\t\t\t\t\t\tsrc=\"" . theme_image($link, 'images/mark_set.png') . "\"\n\t\t\t\t\t\tclass=\"markedPic\" alt=\"Unstar article\"\n\t\t\t\t\t\tonclick='javascript:tMark({$id})'>";
            } else {
                $marked_pic = "<img id=\"FMPIC-{$id}\"\n\t\t\t\t\t\tsrc=\"" . theme_image($link, 'images/mark_unset.png') . "\"\n\t\t\t\t\t\tclass=\"markedPic\" alt=\"Star article\"\n\t\t\t\t\t\tonclick='javascript:tMark({$id})'>";
            }
            if ($line["published"] == "t" || $line["published"] == "1") {
                $published_pic = "<img id=\"FPPIC-{$id}\" src=\"" . theme_image($link, 'images/pub_set.png') . "\"\n\t\t\t\t\t\tclass=\"markedPic\"\n\t\t\t\t\t\talt=\"Unpublish article\" onclick='javascript:tPub({$id})'>";
            } else {
                $published_pic = "<img id=\"FPPIC-{$id}\" src=\"" . theme_image($link, 'images/pub_unset.png') . "\"\n\t\t\t\t\t\tclass=\"markedPic\"\n\t\t\t\t\t\talt=\"Publish article\" onclick='javascript:tPub({$id})'>";
            }
            #				$content_link = "<a target=\"_blank\" href=\"".$line["link"]."\">" .
            #					$line["title"] . "</a>";
            #				$content_link = "<a
            #					href=\"" . htmlspecialchars($line["link"]) . "\"
            #					onclick=\"view($id,$feed_id);\">" .
            #					$line["title"] . "</a>";
            #				$content_link = "<a href=\"javascript:viewContentUrl('".$line["link"]."');\">" .
            #					$line["title"] . "</a>";
            $updated_fmt = make_local_datetime($link, $line["updated_noms"], false);
            if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
                $content_preview = truncate_string(strip_tags($line["content_preview"]), 100);
            }
            $score = $line["score"];
            $score_pic = theme_image($link, "images/" . get_score_pic($score));
            /*				$score_title = __("(Click to change)");
            				$score_pic = "<img class='hlScorePic' src=\"images/$score_pic\"
            					onclick=\"adjustArticleScore($id, $score)\" title=\"$score $score_title\">"; */
            $score_pic = "<img class='hlScorePic' src=\"{$score_pic}\"\n\t\t\t\t\ttitle=\"{$score}\">";
            if ($score > 500) {
                $hlc_suffix = "H";
            } else {
                if ($score < -100) {
                    $hlc_suffix = "L";
                } else {
                    $hlc_suffix = "";
                }
            }
            $entry_author = $line["author"];
            if ($entry_author) {
                $entry_author = " - {$entry_author}";
            }
            $has_feed_icon = feed_has_icon($feed_id);
            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/feed-icon-12x12.png\" alt=\"\">";
            }
            if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
                if (get_pref($link, 'VFEED_GROUP_BY_FEED')) {
                    if ($feed_id != $vgroup_last_feed && $line["feed_title"]) {
                        $cur_feed_title = $line["feed_title"];
                        $vgroup_last_feed = $feed_id;
                        $cur_feed_title = htmlspecialchars($cur_feed_title);
                        $vf_catchup_link = "(<a onclick='javascript:catchupFeedInGroup({$feed_id});' href='#'>" . __('mark as read') . "</a>)";
                        $reply['content'] .= "<div class='cdmFeedTitle'>" . "<div style=\"float : right\">{$feed_icon_img}</div>" . "<a href=\"#\" onclick=\"viewfeed({$feed_id})\">" . $line["feed_title"] . "</a> {$vf_catchup_link}</div>";
                    }
                }
                $mouseover_attrs = "onmouseover='postMouseIn({$id})'\n\t\t\t\t\t\tonmouseout='postMouseOut({$id})'";
                $reply['content'] .= "<div class='{$class}' id='RROW-{$id}' {$mouseover_attrs}>";
                $reply['content'] .= "<div class='hlUpdPic'>{$update_pic}</div>";
                $reply['content'] .= "<div class='hlLeft'>";
                $reply['content'] .= "<input type=\"checkbox\" onclick=\"tSR(this)\"\n\t\t\t\t\t\t\tid=\"RCHK-{$id}\">";
                $reply['content'] .= "{$marked_pic}";
                $reply['content'] .= "{$published_pic}";
                $reply['content'] .= "</div>";
                $reply['content'] .= "<div onclick='return hlClicked(event, {$id})'\n\t\t\t\t\t\tclass=\"hlTitle\"><span class='hlContent{$hlc_suffix}'>";
                $reply['content'] .= "<a id=\"RTITLE-{$id}\"\n\t\t\t\t\t\thref=\"" . htmlspecialchars($line["link"]) . "\"\n\t\t\t\t\t\tonclick=\"\">" . truncate_string($line["title"], 200);
                if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
                    if ($content_preview) {
                        $reply['content'] .= "<span class=\"contentPreview\"> - {$content_preview}</span>";
                    }
                }
                $reply['content'] .= "</a></span>";
                $reply['content'] .= $labels_str;
                if (!get_pref($link, 'VFEED_GROUP_BY_FEED') && defined('_SHOW_FEED_TITLE_IN_VFEEDS')) {
                    if (@$line["feed_title"]) {
                        $reply['content'] .= "<span class=\"hlFeed\">\n\t\t\t\t\t\t\t\t(<a href=\"#\" onclick=\"viewfeed({$feed_id})\">" . $line["feed_title"] . "</a>)\n\t\t\t\t\t\t\t</span>";
                    }
                }
                $reply['content'] .= "</div>";
                $reply['content'] .= "<span class=\"hlUpdated\">{$updated_fmt}</span>";
                $reply['content'] .= "<div class=\"hlRight\">";
                $reply['content'] .= $score_pic;
                if ($line["feed_title"] && !get_pref($link, 'VFEED_GROUP_BY_FEED')) {
                    $reply['content'] .= "<span onclick=\"viewfeed({$feed_id})\"\n\t\t\t\t\t\t\tstyle=\"cursor : pointer\"\n\t\t\t\t\t\t\ttitle=\"" . htmlspecialchars($line['feed_title']) . "\">\n\t\t\t\t\t\t\t{$feed_icon_img}<span>";
                }
                $reply['content'] .= "</div>";
                $reply['content'] .= "</div>";
            } else {
                if (get_pref($link, 'VFEED_GROUP_BY_FEED') && $line["feed_title"]) {
                    if ($feed_id != $vgroup_last_feed) {
                        $cur_feed_title = $line["feed_title"];
                        $vgroup_last_feed = $feed_id;
                        $cur_feed_title = htmlspecialchars($cur_feed_title);
                        $vf_catchup_link = "(<a onclick='javascript:catchupFeedInGroup({$feed_id});' href='#'>" . __('mark as read') . "</a>)";
                        $has_feed_icon = feed_has_icon($feed_id);
                        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/blank_icon.gif\" alt=\"\">";
                        }
                        $reply['content'] .= "<div class='cdmFeedTitle'>" . "<div style=\"float : right\">{$feed_icon_img}</div>" . "<a href=\"#\" onclick=\"viewfeed({$feed_id})\">" . $line["feed_title"] . "</a> {$vf_catchup_link}</div>";
                    }
                }
                $expand_cdm = get_pref($link, 'CDM_EXPANDED');
                $mouseover_attrs = "onmouseover='postMouseIn({$id})'\n\t\t\t\t\t\tonmouseout='postMouseOut({$id})'";
                $reply['content'] .= "<div class=\"{$class}\"\n\t\t\t\t\t\tid=\"RROW-{$id}\" {$mouseover_attrs}'>";
                $reply['content'] .= "<div class=\"cdmHeader\">";
                $reply['content'] .= "<div>";
                $reply['content'] .= "<input type=\"checkbox\" onclick=\"toggleSelectRowById(this,\n\t\t\t\t\t\t\t'RROW-{$id}')\" id=\"RCHK-{$id}\"/>";
                $reply['content'] .= "{$marked_pic}";
                $reply['content'] .= "{$published_pic}";
                $reply['content'] .= "</div>";
                $reply['content'] .= "<span id=\"RTITLE-{$id}\"\n\t\t\t\t\t\tonclick=\"return cdmClicked(event, {$id});\"\n\t\t\t\t\t\tclass=\"titleWrap{$hlc_suffix}\">\n\t\t\t\t\t\t<a class=\"title\"\n\t\t\t\t\t\ttitle=\"" . htmlspecialchars($line['title']) . "\"\n\t\t\t\t\t\ttarget=\"_blank\" href=\"" . htmlspecialchars($line["link"]) . "\">" . truncate_string($line["title"], 100) . " {$entry_author}</a>";
                $reply['content'] .= $labels_str;
                if (!get_pref($link, 'VFEED_GROUP_BY_FEED') && defined('_SHOW_FEED_TITLE_IN_VFEEDS')) {
                    if (@$line["feed_title"]) {
                        $reply['content'] .= "<span class=\"hlFeed\">\n\t\t\t\t\t\t\t\t(<a href=\"#\" onclick=\"viewfeed({$feed_id})\">" . $line["feed_title"] . "</a>)\n\t\t\t\t\t\t\t</span>";
                    }
                }
                if (!$expand_cdm) {
                    $content_hidden = "style=\"display : none\"";
                } else {
                    $excerpt_hidden = "style=\"display : none\"";
                }
                $reply['content'] .= "<span {$excerpt_hidden}\n\t\t\t\t\t\tid=\"CEXC-{$id}\" class=\"cdmExcerpt\"> - {$content_preview}</span>";
                $reply['content'] .= "</span>";
                $reply['content'] .= "<div>";
                $reply['content'] .= "<span class='updated'>{$updated_fmt}</span>";
                $reply['content'] .= "{$score_pic}";
                if (!get_pref($link, "VFEED_GROUP_BY_FEED") && $line["feed_title"]) {
                    $reply['content'] .= "<span style=\"cursor : pointer\"\n\t\t\t\t\t\t\ttitle=\"" . htmlspecialchars($line["feed_title"]) . "\"\n\t\t\t\t\t\t\tonclick=\"viewfeed({$feed_id})\">{$feed_icon_img}</span>";
                }
                $reply['content'] .= "<div class=\"updPic\">{$update_pic}</div>";
                $reply['content'] .= "</div>";
                $reply['content'] .= "</div>";
                $reply['content'] .= "<div class=\"cdmContent\" {$content_hidden}\n\t\t\t\t\t\tonclick=\"return cdmClicked(event, {$id});\"\n\t\t\t\t\t\tid=\"CICD-{$id}\">";
                $reply['content'] .= "<div class=\"cdmContentInner\">";
                if ($line["orig_feed_id"]) {
                    $tmp_result = db_query($link, "SELECT * FROM ttrss_archived_feeds\n\t\t\t\t\tWHERE id = " . $line["orig_feed_id"]);
                    if (db_num_rows($tmp_result) != 0) {
                        $reply['content'] .= "<div clear='both'>";
                        $reply['content'] .= __("Originally from:");
                        $reply['content'] .= "&nbsp;";
                        $tmp_line = db_fetch_assoc($tmp_result);
                        $reply['content'] .= "<a target='_blank'\n\t\t\t\t\t\t\t\thref=' " . htmlspecialchars($tmp_line['site_url']) . "'>" . $tmp_line['title'] . "</a>";
                        $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_set.gif'></a>";
                        $reply['content'] .= "</div>";
                    }
                }
                $feed_site_url = $line["site_url"];
                $article_content = sanitize_rss($link, $line["content_preview"], false, false, $feed_site_url);
                $reply['content'] .= "<div id=\"POSTNOTE-{$id}\">";
                if ($line['note']) {
                    $reply['content'] .= format_article_note($id, $line['note']);
                }
                $reply['content'] .= "</div>";
                $reply['content'] .= "<span id=\"CWRAP-{$id}\">";
                $reply['content'] .= $expand_cdm ? $article_content : '';
                $reply['content'] .= "</span>";
                /*					$tmp_result = db_query($link, "SELECT always_display_enclosures FROM
                						ttrss_feeds WHERE id = ".
                						(($line['feed_id'] == null) ? $line['orig_feed_id'] :
                							$line['feed_id'])." AND owner_uid = ".$_SESSION["uid"]);
                
                					$always_display_enclosures = sql_bool_to_bool(db_fetch_result($tmp_result,
                						0, "always_display_enclosures")); */
                $always_display_enclosures = sql_bool_to_bool($line["always_display_enclosures"]);
                $reply['content'] .= format_article_enclosures($link, $id, $always_display_enclosures, $article_content);
                $reply['content'] .= "</div>";
                $reply['content'] .= "<div class=\"cdmFooter\">";
                $tag_cache = $line["tag_cache"];
                $tags_str = format_tags_string(get_article_tags($link, $id, $_SESSION["uid"], $tag_cache), $id);
                $reply['content'] .= "<img src='" . theme_image($link, 'images/tag.png') . "' alt='Tags' title='Tags'>\n\t\t\t\t\t\t<span id=\"ATSTR-{$id}\">{$tags_str}</span>\n\t\t\t\t\t\t<a title=\"" . __('Edit tags for this article') . "\"\n\t\t\t\t\t\thref=\"#\" onclick=\"editArticleTags({$id}, {$feed_id}, true)\">(+)</a>";
                $num_comments = $line["num_comments"];
                $entry_comments = "";
                if ($num_comments > 0) {
                    if ($line["comments"]) {
                        $comments_url = $line["comments"];
                    } else {
                        $comments_url = $line["link"];
                    }
                    $entry_comments = "<a target='_blank' href=\"{$comments_url}\">{$num_comments} comments</a>";
                } else {
                    if ($line["comments"] && $line["link"] != $line["comments"]) {
                        $entry_comments = "<a target='_blank' href=\"" . $line["comments"] . "\">comments</a>";
                    }
                }
                if ($entry_comments) {
                    $reply['content'] .= "&nbsp;({$entry_comments})";
                }
                $reply['content'] .= "<div style=\"float : right\">";
                $reply['content'] .= "<img src=\"images/art-zoom.png\"\n\t\t\t\t\t\tonclick=\"zoomToArticle(event, {$id})\"\n\t\t\t\t\t\tstyle=\"cursor : pointer\"\n\t\t\t\t\t\talt='Zoom'\n\t\t\t\t\t\ttitle='" . __('Open article in new tab') . "'>";
                //$note_escaped = htmlspecialchars($line['note'], ENT_QUOTES);
                $reply['content'] .= "<img src=\"images/art-pub-note.png\"\n\t\t\t\t\t\tstyle=\"cursor : pointer\" style=\"cursor : pointer\"\n\t\t\t\t\t\tonclick=\"editArticleNote({$id})\"\n\t\t\t\t\t\talt='PubNote' title='" . __('Edit article note') . "'>";
                if (DIGEST_ENABLE) {
                    $reply['content'] .= "<img src=\"" . theme_image($link, 'images/art-email.png') . "\"\n\t\t\t\t\t\t\tstyle=\"cursor : pointer\"\n\t\t\t\t\t\t\tonclick=\"emailArticle({$id})\"\n\t\t\t\t\t\t\talt='Zoom' title='" . __('Forward by email') . "'>";
                }
                if (ENABLE_TWEET_BUTTON) {
                    $reply['content'] .= "<img src=\"" . theme_image($link, 'images/art-tweet.png') . "\"\n\t\t\t\t\t\t\tclass='tagsPic' style=\"cursor : pointer\"\n\t\t\t\t\t\t\tonclick=\"tweetArticle({$id})\"\n\t\t\t\t\t\t\talt='Zoom' title='" . __('Share on Twitter') . "'>";
                }
                $reply['content'] .= "<img src=\"images/digest_checkbox.png\"\n\t\t\t\t\t\tstyle=\"cursor : pointer\" style=\"cursor : pointer\"\n\t\t\t\t\t\tonclick=\"dismissArticle({$id})\"\n\t\t\t\t\t\talt='Dismiss' title='" . __('Dismiss article') . "'>";
                $reply['content'] .= "</div>";
                $reply['content'] .= "</div>";
                $reply['content'] .= "</div>";
                $reply['content'] .= "</div>";
            }
            ++$lnum;
        }
        if ($_REQUEST["debug"]) {
            $timing_info = print_checkpoint("PE", $timing_info);
        }
    } else {
        $message = "";
        switch ($view_mode) {
            case "unread":
                $message = __("No unread articles found to display.");
                break;
            case "updated":
                $message = __("No updated articles found to display.");
                break;
            case "marked":
                $message = __("No starred articles found to display.");
                break;
            default:
                if ($feed < -10) {
                    $message = __("No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter.");
                } else {
                    $message = __("No articles found to display.");
                }
        }
        if (!$offset && $message) {
            $reply['content'] .= "<div class='whiteBox'>{$message}";
            $reply['content'] .= "<p class=\"small\"><span class=\"insensitive\">";
            $result = db_query($link, "SELECT " . SUBSTRING_FOR_DATE . "(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds\n\t\t\t\t\tWHERE owner_uid = " . $_SESSION['uid']);
            $last_updated = db_fetch_result($result, 0, "last_updated");
            $last_updated = make_local_datetime($link, $last_updated, false);
            $reply['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
            $result = db_query($link, "SELECT COUNT(id) AS num_errors\n\t\t\t\t\tFROM ttrss_feeds WHERE last_error != '' AND owner_uid = " . $_SESSION["uid"]);
            $num_errors = db_fetch_result($result, 0, "num_errors");
            if ($num_errors > 0) {
                $reply['content'] .= "<br/>";
                $reply['content'] .= "<a class=\"insensitive\" href=\"#\" onclick=\"showFeedsWithErrors()\">" . __('Some feeds have update errors (click for details)') . "</a>";
            }
            $reply['content'] .= "</span></p></div>";
        }
    }
    if ($_REQUEST["debug"]) {
        $timing_info = print_checkpoint("H2", $timing_info);
    }
    return array($topmost_article_ids, $headlines_count, $feed, $disable_cache, $vgroup_last_feed, $reply);
}
Esempio n. 5
0
function render_article($link)
{
    $id = db_escape_string($_GET["id"]);
    $feed_id = db_escape_string($_GET["feed"]);
    $ret_feed_id = db_escape_string($_GET["ret_feed"]);
    $cat_view = db_escape_string($_GET["cat"]);
    $result = db_query($link, "SELECT rtl_content FROM ttrss_feeds\n\t\t\tWHERE id = '{$feed_id}' AND owner_uid = " . $_SESSION["uid"]);
    if (db_num_rows($result) == 1) {
        $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content"));
    } else {
        $rtl_content = false;
    }
    if ($rtl_content) {
        $rtl_tag = "dir=\"RTL\"";
        $rtl_class = "RTL";
    } else {
        $rtl_tag = "";
        $rtl_class = "";
    }
    $result = db_query($link, "UPDATE ttrss_user_entries \n\t\t\tSET unread = false,last_read = NOW() \n\t\t\tWHERE ref_id = '{$id}' AND feed_id = '{$feed_id}' AND owner_uid = " . $_SESSION["uid"]);
    $result = db_query($link, "SELECT title,link,content,feed_id,comments,int_id,\n\t\t\tmarked,published,\n\t\t\t" . SUBSTRING_FOR_DATE . "(updated,1,16) as updated,\n\t\t\t(SELECT icon_url FROM ttrss_feeds WHERE id = feed_id) as icon_url,\n\t\t\tnum_comments,\n\t\t\tauthor\n\t\t\tFROM ttrss_entries,ttrss_user_entries\n\t\t\tWHERE\tid = '{$id}' AND ref_id = id");
    if ($result) {
        $line = db_fetch_assoc($result);
        $num_comments = $line["num_comments"];
        $entry_comments = "";
        if ($num_comments > 0) {
            if ($line["comments"]) {
                $comments_url = $line["comments"];
            } else {
                $comments_url = $line["link"];
            }
            $entry_comments = "<a href=\"{$comments_url}\">{$num_comments} comments</a>";
        } else {
            if ($line["comments"] && $line["link"] != $line["comments"]) {
                $entry_comments = "<a href=\"" . $line["comments"] . "\">comments</a>";
            }
        }
        $tmp_result = db_query($link, "SELECT DISTINCT tag_name FROM\n\t\t\t\tttrss_tags WHERE post_int_id = " . $line["int_id"] . "\n\t\t\t\tORDER BY tag_name");
        $tags_str = "";
        $f_tags_str = "";
        $num_tags = 0;
        while ($tmp_line = db_fetch_assoc($tmp_result)) {
            $num_tags++;
            $tag = $tmp_line["tag_name"];
            $tag_str = "<a href=\"?go=vf&id={$tag}\">{$tag}</a>, ";
            $tags_str .= $tag_str;
        }
        $tags_str = preg_replace("/, \$/", "", $tags_str);
        $parsed_updated = date(get_pref($link, 'SHORT_DATE_FORMAT'), strtotime($line["updated"]));
        print "<div id=\"heading\">";
        #			if (file_exists("../icons/$feed_id.ico") && filesize("../icons/$feed_id.ico") > 0) {
        #				print "<img class=\"feedIcon\" src=\"../icons/$feed_id.ico\">";
        #			}
        if (!$cat_view) {
            $feed_title = getFeedTitle($link, $ret_feed_id);
        } else {
            $feed_title = getCategoryTitle($link, $ret_feed_id);
            $feed_title_native = getFeedTitle($link, $feed_id);
        }
        if ($feed_title_native) {
            $feed_link = "<a href=\"index.php?go=vf&id={$feed_id}\">{$feed_title_native}</a>";
            $feed_link .= " in <a href=\"index.php?go=vf&id={$ret_feed_id}&cat={$cat_view}\">\n\t\t\t\t\t{$feed_title}</a>";
        } else {
            $feed_link = "<a href=\"index.php?go=vf&id={$ret_feed_id}\">{$feed_title}</a>";
        }
        $feedlist = "<a href=\"index.php\">" . __('Back to feedlist') . "</a>";
        print "<a href=\"" . $line["link"] . "\">" . truncate_string($line["title"], 30) . "</a>";
        print " <span id=\"headingAddon\">{$parsed_updated} ({$feed_link}, {$feedlist})</span>";
        print "</div>";
        if ($num_tags > 0) {
            print "<div class=\"postTags\">" . __("Tags:") . " {$tags_str}</div>";
        }
        if ($line["marked"] == "t" || $line["marked"] == "1") {
            $marked_pic = "<img class='marked' src=\"../../images/mark_set.png\">";
        } else {
            $marked_pic = "<img class='marked' src=\"../../images/mark_unset.png\">";
        }
        if ($line["published"] == "t" || $line["published"] == "1") {
            $published_pic = "<img class='marked' src=\"../../images/pub_set.gif\">";
        } else {
            $published_pic = "<img class='marked' src=\"../../images/pub_unset.gif\">";
        }
        print "<div class=\"postStarOps\">";
        print "<a title=\"" . __('Toggle starred') . "\"href=\"?go=view&id={$id}&ret_feed={$ret_feed_id}&feed={$feed_id}&sop=ts\">{$marked_pic}</a>";
        print "<a title=\"" . __('Toggle published') . "\" href=\"?go=view&id={$id}&ret_feed={$ret_feed_id}&feed={$feed_id}&sop=tp\">{$published_pic}</a>";
        // Mark unread
        print "<a title=\"" . __('Mark as unread') . "\" href=\"?go=vf&id={$ret_feed_id}&feed={$feed_id}&sop=mu&aid={$id}";
        if ($cat_view) {
            print "&cat={$cat_view}";
        }
        print "\"><img class='marked' src=\"../../images/art-set-unread.png\"></a>";
        print "</div>";
        print sanitize_rss($link, $line["content"], true);
    }
    print "</body></html>";
}