$entry_title : $entry_content_unescaped
";
print_r($entry_tags);
print "
TAGS: "; print_r($entry_tags); print "
"; if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) { print_r($entry_tags); } if (count($entry_tags) > 0) { db_query($link, "BEGIN"); foreach ($entry_tags as $tag) { $tag = sanitize_tag($tag); $tag = db_escape_string($tag); if (!tag_is_valid($tag)) continue; $result = db_query($link, "SELECT id FROM ttrss_tags WHERE tag_name = '$tag' AND post_int_id = '$entry_int_id' AND owner_uid = '$owner_uid' LIMIT 1"); // print db_fetch_result($result, 0, "id"); if ($result && db_num_rows($result) == 0) { db_query($link, "INSERT INTO ttrss_tags (owner_uid,tag_name,post_int_id) VALUES ('$owner_uid','$tag', '$entry_int_id')"); } } db_query($link, "COMMIT"); } if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) { _debug("update_rss_feed: article processed"); } } db_query($link, "UPDATE ttrss_feeds SET last_updated = NOW(), last_error = '' WHERE id = '$feed'"); // db_query($link, "COMMIT"); } else { if ($use_simplepie) { $error_msg = mb_substr($rss->error(), 0, 250); } else { $error_msg = mb_substr(magpie_error(), 0, 250); } if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) { _debug("update_rss_feed: error fetching feed: $error_msg"); } $error_msg = db_escape_string($error_msg); db_query($link, "UPDATE ttrss_feeds SET last_error = '$error_msg', last_updated = NOW() WHERE id = '$feed'"); } if ($use_simplepie) { unset($rss); } if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) { _debug("update_rss_feed: done"); } } function print_select($id, $default, $values, $attributes = "") { print ""; } function print_select_hash($id, $default, $values, $attributes = "") { print ""; } function get_article_filters($filters, $title, $content, $link) { $matches = array(); if ($filters["title"]) { foreach ($filters["title"] as $filter) { $reg_exp = $filter["reg_exp"]; $inverse = $filter["inverse"]; if ((!$inverse && preg_match("/$reg_exp/i", $title)) || ($inverse && !preg_match("/$reg_exp/i", $title))) { array_push($matches, array($filter["action"], $filter["action_param"])); } } } if ($filters["content"]) { foreach ($filters["content"] as $filter) { $reg_exp = $filter["reg_exp"]; $inverse = $filter["inverse"]; if ((!$inverse && preg_match("/$reg_exp/i", $content)) || ($inverse && !preg_match("/$reg_exp/i", $content))) { array_push($matches, array($filter["action"], $filter["action_param"])); } } } if ($filters["both"]) { foreach ($filters["both"] as $filter) { $reg_exp = $filter["reg_exp"]; $inverse = $filter["inverse"]; if ($inverse) { if (!preg_match("/$reg_exp/i", $title) || !preg_match("/$reg_exp/i", $content)) { array_push($matches, array($filter["action"], $filter["action_param"])); } } else { if (preg_match("/$reg_exp/i", $title) || preg_match("/$reg_exp/i", $content)) { array_push($matches, array($filter["action"], $filter["action_param"])); } } } } if ($filters["link"]) { $reg_exp = $filter["reg_exp"]; foreach ($filters["link"] as $filter) { $reg_exp = $filter["reg_exp"]; $inverse = $filter["inverse"]; if ((!$inverse && preg_match("/$reg_exp/i", $link)) || ($inverse && !preg_match("/$reg_exp/i", $link))) { array_push($matches, array($filter["action"], $filter["action_param"])); } } } return $matches; } function find_article_filter($filters, $filter_name) { foreach ($filters as $f) { if ($f[0] == $filter_name) { return $f; }; } return false; } function calculate_article_score($filters) { $score = 0; foreach ($filters as $f) { if ($f[0] == "score") { $score += $f[1]; }; } return $score; } function printFeedEntry($feed_id, $class, $feed_title, $unread, $icon_file, $link, $rtl_content = false, $last_updated = false, $last_error = false) { if (file_exists($icon_file) && filesize($icon_file) > 0) { $feed_icon = "]+>/is', '', $res);
}
return $res;
}
/**
* Send by mail a digest of last articles.
*
* @param mixed $link The database connection.
* @param integer $limit The maximum number of articles by digest.
* @return boolean Return false if digests are not enabled.
*/
function send_headlines_digests($link, $limit = 100) {
if (!DIGEST_ENABLE) return false;
$user_limit = DIGEST_EMAIL_LIMIT;
$days = 1;
print "Sending digests, batch of max $user_limit users, days = $days, headline limit = $limit\n\n";
if (DB_TYPE == "pgsql") {
$interval_query = "last_digest_sent < NOW() - INTERVAL '$days days'";
} else if (DB_TYPE == "mysql") {
$interval_query = "last_digest_sent < DATE_SUB(NOW(), INTERVAL $days DAY)";
}
$result = db_query($link, "SELECT id,email FROM ttrss_users
WHERE email != '' AND (last_digest_sent IS NULL OR $interval_query)");
while ($line = db_fetch_assoc($result)) {
if (get_pref($link, 'DIGEST_ENABLE', $line['id'], false)) {
print "Sending digest for UID:" . $line['id'] . " - " . $line["email"] . " ... ";
$do_catchup = get_pref($link, 'DIGEST_CATCHUP', $line['id'], false);
$tuple = prepare_headlines_digest($link, $line["id"], $days, $limit);
$digest = $tuple[0];
$headlines_count = $tuple[1];
$affected_ids = $tuple[2];
$digest_text = $tuple[3];
if ($headlines_count > 0) {
$mail = new PHPMailer();
$mail->PluginDir = "phpmailer/";
$mail->SetLanguage("en", "phpmailer/language/");
$mail->CharSet = "UTF-8";
$mail->From = DIGEST_FROM_ADDRESS;
$mail->FromName = DIGEST_FROM_NAME;
$mail->AddAddress($line["email"], $line["login"]);
if (DIGEST_SMTP_HOST) {
$mail->Host = DIGEST_SMTP_HOST;
$mail->Mailer = "smtp";
$mail->Username = DIGEST_SMTP_LOGIN;
$mail->Password = DIGEST_SMTP_PASSWORD;
}
$mail->IsHTML(true);
$mail->Subject = DIGEST_SUBJECT;
$mail->Body = $digest;
$mail->AltBody = $digest_text;
$rc = $mail->Send();
if (!$rc) print "ERROR: " . $mail->ErrorInfo;
print "RC=$rc\n";
if ($rc && $do_catchup) {
print "Marking affected articles as read...\n";
catchupArticlesById($link, $affected_ids, 0, $line["id"]);
}
db_query($link, "UPDATE ttrss_users SET last_digest_sent = NOW()
WHERE id = " . $line["id"]);
} else {
print "No headlines\n";
}
}
}
print "All done.\n";
}
function prepare_headlines_digest($link, $user_id, $days = 1, $limit = 100) {
require_once "MiniTemplator.class.php";
$tpl = new MiniTemplator;
$tpl_t = new MiniTemplator;
$tpl->readTemplateFromFile("templates/digest_template_html.txt");
$tpl_t->readTemplateFromFile("templates/digest_template.txt");
$tpl->setVariable('CUR_DATE', date('Y/m/d'));
$tpl->setVariable('CUR_TIME', date('G:i'));
$tpl_t->setVariable('CUR_DATE', date('Y/m/d'));
$tpl_t->setVariable('CUR_TIME', date('G:i'));
$affected_ids = array();
if (DB_TYPE == "pgsql") {
$interval_query = "ttrss_entries.date_entered > NOW() - INTERVAL '$days days'";
} else if (DB_TYPE == "mysql") {
$interval_query = "ttrss_entries.date_entered > DATE_SUB(NOW(), INTERVAL $days DAY)";
}
$result = db_query($link, "SELECT ttrss_entries.title,
ttrss_feeds.title AS feed_title,
date_entered,
ttrss_user_entries.ref_id,
link,
SUBSTRING(content, 1, 120) AS excerpt,
".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
FROM
ttrss_user_entries,ttrss_entries,ttrss_feeds
WHERE
ref_id = ttrss_entries.id AND feed_id = ttrss_feeds.id
AND include_in_digest = true
AND $interval_query
AND hidden = false
AND ttrss_user_entries.owner_uid = $user_id
AND unread = true
ORDER BY ttrss_feeds.title, date_entered DESC
LIMIT $limit");
$cur_feed_title = "";
$headlines_count = db_num_rows($result);
$headlines = array();
while ($line = db_fetch_assoc($result)) {
array_push($headlines, $line);
}
for ($i = 0; $i < sizeof($headlines); $i++) {
$line = $headlines[$i];
array_push($affected_ids, $line["ref_id"]);
$updated = smart_date_time(strtotime($line["last_updated"]));
$tpl->setVariable('FEED_TITLE', $line["feed_title"]);
$tpl->setVariable('ARTICLE_TITLE', $line["title"]);
$tpl->setVariable('ARTICLE_LINK', $line["link"]);
$tpl->setVariable('ARTICLE_UPDATED', $updated);
$tpl->setVariable('ARTICLE_EXCERPT',
truncate_string(strip_tags($line["excerpt"]), 100));
$tpl->addBlock('article');
$tpl_t->setVariable('FEED_TITLE', $line["feed_title"]);
$tpl_t->setVariable('ARTICLE_TITLE', $line["title"]);
$tpl_t->setVariable('ARTICLE_LINK', $line["link"]);
$tpl_t->setVariable('ARTICLE_UPDATED', $updated);
// $tpl_t->setVariable('ARTICLE_EXCERPT',
// truncate_string(strip_tags($line["excerpt"]), 100));
$tpl_t->addBlock('article');
if ($headlines[$i]['feed_title'] != $headlines[$i+1]['feed_title']) {
$tpl->addBlock('feed');
$tpl_t->addBlock('feed');
}
}
$tpl->addBlock('digest');
$tpl->generateOutputToString($tmp);
$tpl_t->addBlock('digest');
$tpl_t->generateOutputToString($tmp_t);
return array($tmp, $headlines_count, $affected_ids, $tmp_t);
}
function check_for_update($link, $brief_fmt = true) {
$releases_feed = "http://tt-rss.spb.ru/releases.rss";
if (!CHECK_FOR_NEW_VERSION || $_SESSION["access_level"] < 10) {
return;
}
error_reporting(0);
if (ENABLE_SIMPLEPIE) {
$rss = new SimplePie();
$rss->set_useragent(SIMPLEPIE_USERAGENT . MAGPIE_USER_AGENT_EXT);
// $rss->set_timeout(MAGPIE_FETCH_TIME_OUT);
$rss->set_feed_url($fetch_url);
$rss->set_output_encoding('UTF-8');
$rss->init();
} else {
$rss = fetch_rss($releases_feed);
}
error_reporting (DEFAULT_ERROR_LEVEL);
if ($rss) {
if (ENABLE_SIMPLEPIE) {
$items = $rss->get_items();
} else {
$items = $rss->items;
if (!$items || !is_array($items)) $items = $rss->entries;
if (!$items || !is_array($items)) $items = $rss;
}
if (!is_array($items) || count($items) == 0) {
return;
}
$latest_item = $items[0];
if (ENABLE_SIMPLEPIE) {
$last_title = $latest_item->get_title();
} else {
$last_title = $latest_item["title"];
}
$latest_version = trim(preg_replace("/(Milestone)|(completed)/", "", $last_title));
if (ENABLE_SIMPLEPIE) {
$release_url = sanitize_rss($link, $latest_item->get_link());
$content = sanitize_rss($link, $latest_item->get_description());
} else {
$release_url = sanitize_rss($link, $latest_item["link"]);
$content = sanitize_rss($link, $latest_item["description"]);
}
if (version_compare(VERSION, $latest_version) == -1) {
if ($brief_fmt) {
return format_notice("
New version of Tiny-Tiny RSS ($latest_version) is available (click for details)
";
}
function printCategoryHeader($link, $cat_id, $hidden = false, $can_browse = true) {
$tmp_category = getCategoryTitle($link, $cat_id);
$cat_unread = getCategoryUnread($link, $cat_id);
if ($hidden) {
$holder_style = "display:none;";
$ellipsis = "…";
} else {
$holder_style = "";
$ellipsis = "";
}
$catctr_class = ($cat_unread > 0) ? "catCtrHasUnread" : "catCtrNoUnread";
if ($can_browse) {
$browse_cat_link = "onclick=\"javascript:viewCategory($cat_id)\"";
$inner_title_class = "catTitle";
} else {
$browse_cat_link = "";
$inner_title_class = "catTitleNL";
}
if ($cat_id > 0) {
$cat_class = "feedCat";
} else {
$cat_class = "virtCat";
}
print "";
if ($rtl_content) {
$rtl_cpart = "RTL";
} else {
$rtl_cpart = "";
}
$page_prev_link = "javascript:viewFeedGoPage(-1)";
$page_next_link = "javascript:viewFeedGoPage(1)";
$page_first_link = "javascript:viewFeedGoPage(0)";
$catchup_page_link = "javascript:catchupPage()";
$catchup_feed_link = "javascript:catchupCurrentFeed()";
$catchup_sel_link = "javascript:catchupSelection()";
if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
$sel_all_link = "javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, '', true)";
$sel_unread_link = "javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', true, 'Unread', true)";
$sel_none_link = "javascript:selectTableRowsByIdPrefix('headlinesList', 'RROW-', 'RCHK-', false)";
$sel_inv_link = "javascript:invertHeadlineSelection()";
$tog_unread_link = "javascript:selectionToggleUnread()";
$tog_marked_link = "javascript:selectionToggleMarked()";
$tog_published_link = "javascript:selectionTogglePublished()";
} else {
$sel_all_link = "javascript:cdmSelectArticles('all')";
$sel_unread_link = "javascript:cdmSelectArticles('unread')";
$sel_none_link = "javascript:cdmSelectArticles('none')";
$sel_inv_link = "javascript:invertHeadlineSelection()";
$tog_unread_link = "javascript:selectionToggleUnread(true)";
$tog_marked_link = "javascript:selectionToggleMarked(true)";
$tog_published_link = "javascript:selectionTogglePublished(true)";
}
if (!$dashboard_menu) {
if (strpos($_SESSION["client.userAgent"], "MSIE") === false) {
print "
";
} else {
// old style subtoolbar:
print "
";
print "
".
__('Select:')."
".__('All').",
".__('Unread').",
".__('None')."
".
__('Toggle:')." ".__('Unread').",
".__('Starred')."
".
__('Mark as read:')."
".__('Page').",
".__('Feed')."";
if ($search && $feed_id >= 0 && get_pref($link, 'ENABLE_LABELS') && GLOBAL_ENABLE_LABELS) {
print "
".__('Convert to label')."";
}
print " ";
}
} else { // dashboard menu actions
// not implemented
print "";
}
print "";
print "";
print "";
if ($feed_site_url) {
if (!$bottom) {
$target = "target=\"_blank\"";
}
print "".
truncate_string($feed_title,30)."";
} else {
print $feed_title;
}
if ($search) {
$search_q = "&q=$search&m=$match_on&smode=$search_mode";
}
if ($user_page_offset > 1) {
print " [$user_page_offset] ";
}
if (!$bottom && !$disable_feed) {
print "
";
print "
";
} else if ($feed_small_icon) {
print "
";
}
print "";
print "
$tmp_category";
print "";
print " ($cat_unread) $ellipsis";
print "";
//print "
";
}
function outputFeedList($link, $tags = false) {
print "
";
}
}
}
if (!get_pref($link, 'ENABLE_FEED_CATS')) {
print "";
$owner_uid = $_SESSION["uid"];
/* virtual feeds */
if (get_pref($link, 'ENABLE_FEED_CATS')) {
if ($_COOKIE["ttrss_vf_vclps"] == 1) {
$cat_hidden = true;
} else {
$cat_hidden = false;
}
printCategoryHeader($link, -1, $cat_hidden, false);
}
if (defined('_ENABLE_DASHBOARD')) {
printFeedEntry(-4, "virt", __("Dashboard"), 0,
"images/tag.png", $link);
}
$num_starred = getFeedUnread($link, -1);
$num_published = getFeedUnread($link, -2);
$num_fresh = getFeedUnread($link, -3);
$class = "virt";
if ($num_fresh > 0) $class .= "Unread";
printFeedEntry(-3, $class, __("Fresh articles"), $num_fresh,
"images/fresh.png", $link);
$class = "virt";
if ($num_starred > 0) $class .= "Unread";
$is_ie = (strpos($_SESSION["client.userAgent"], "MSIE") !== false);
if ($is_ie) {
$mark_img_ext = "gif";
} else {
$mark_img_ext = "png";
}
printFeedEntry(-1, $class, __("Starred articles"), $num_starred,
"images/mark_set.$mark_img_ext", $link);
$class = "virt";
if ($num_published > 0) $class .= "Unread";
printFeedEntry(-2, $class, __("Published articles"), $num_published,
"images/pub_set.gif", $link);
if (get_pref($link, 'ENABLE_FEED_CATS')) {
print "
";
}
if (!$tags) {
if (GLOBAL_ENABLE_LABELS && get_pref($link, 'ENABLE_LABELS')) {
$result = db_query($link, "SELECT id,sql_exp,description FROM
ttrss_labels WHERE owner_uid = '$owner_uid' ORDER by description");
if (db_num_rows($result) > 0) {
if (get_pref($link, 'ENABLE_FEED_CATS')) {
if ($_COOKIE["ttrss_vf_lclps"] == 1) {
$cat_hidden = true;
} else {
$cat_hidden = false;
}
printCategoryHeader($link, -2, $cat_hidden, false);
} else {
print "";
}
$age_qpart = getMaxAgeSubquery();
$result = db_query($link, "SELECT tag_name,SUM((SELECT COUNT(int_id)
FROM ttrss_user_entries,ttrss_entries WHERE int_id = post_int_id
AND ref_id = id AND $age_qpart
AND unread = true)) AS count FROM ttrss_tags
WHERE owner_uid = ".$_SESSION['uid']." GROUP BY tag_name
ORDER BY count DESC LIMIT 50");
$tags = array();
while ($line = db_fetch_assoc($result)) {
$tags[$line["tag_name"]] += $line["count"];
}
foreach (array_keys($tags) as $tag) {
$unread = $tags[$tag];
$class = "tag";
if ($unread > 0) {
$class .= "Unread";
}
printFeedEntry($tag, $class, $tag, $unread, "images/tag.png", $link);
}
if (db_num_rows($result) == 0) {
print "
";
}
}
print "";
}
function get_article_tags($link, $id, $owner_uid = 0) {
$a_id = db_escape_string($id);
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
$tmp_result = db_query($link, "SELECT DISTINCT tag_name,
owner_uid as owner FROM
ttrss_tags WHERE post_int_id = (SELECT int_id FROM ttrss_user_entries WHERE
ref_id = '$a_id' AND owner_uid = '$owner_uid' LIMIT 1) ORDER BY tag_name");
$tags = array();
while ($tmp_line = db_fetch_assoc($tmp_result)) {
array_push($tags, $tmp_line["tag_name"]);
}
return $tags;
}
function trim_value(&$value) {
$value = trim($value);
}
function trim_array($array) {
$tmp = $array;
array_walk($tmp, 'trim_value');
return $tmp;
}
function tag_is_valid($tag) {
if ($tag == '') return false;
if (preg_match("/^[0-9]*$/", $tag)) return false;
$tag = iconv("utf-8", "utf-8", $tag);
if (!$tag) return false;
return true;
}
function render_login_form($link, $mobile = false) {
if (!$mobile) {
require_once "login_form.php";
} else {
require_once "mobile/login_form.php";
}
}
// from http://developer.apple.com/internet/safari/faq.html
function no_cache_incantation() {
header("Expires: Mon, 22 Dec 1980 00:00:00 GMT"); // Happy birthday to me :)
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
}
function format_warning($msg, $id = "") {
return "$msg
$msg
$msg
";
}
$lnum = $limit*$offset;
error_reporting (DEFAULT_ERROR_LEVEL);
$num_unread = 0;
$cur_feed_title = '';
while ($line = db_fetch_assoc($result)) {
$class = ($lnum % 2) ? "even" : "odd";
$id = $line["id"];
$feed_id = $line["feed_id"];
if (count($topmost_article_ids) < 5) {
array_push($topmost_article_ids, $id);
}
if ($line["last_read"] == "" &&
($line["unread"] != "t" && $line["unread"] != "1")) {
$update_pic = "
";
}
// print_headline_subtoolbar($link,
// "javascript:catchupPage()", "Mark page as read", true, $rtl_content);
} else {
$message = "";
switch ($view_mode) {
case "unread":
$message = __("No unread articles found to display.");
break;
case "marked":
$message = __("No starred articles found to display.");
break;
default:
$message = __("No articles found to display.");
}
if (!$offset) print "";
} else {
$update_pic = "
";
}
if ($line["unread"] == "t" || $line["unread"] == "1") {
$class .= "Unread";
++$num_unread;
$is_unread = true;
} else {
$is_unread = false;
}
$is_ie = (strpos($_SESSION["client.userAgent"], "MSIE") !== false);
if ($is_ie) {
$mark_img_ext = "gif";
} else {
$mark_img_ext = "png";
}
if ($line["marked"] == "t" || $line["marked"] == "1") {
$marked_pic = "
";
} else {
$marked_pic = "
";
}
if ($line["published"] == "t" || $line["published"] == "1") {
$published_pic = "
";
} else {
$published_pic = "
";
}
# $content_link = "" .
# $line["title"] . "";
# $content_link = "" .
# $line["title"] . "";
# $content_link = "" .
# $line["title"] . "";
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 = get_score_pic($score);
$score_title = __("(Click to change)");
$score_pic = "
";
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 = is_file(ICONS_DIR . "/$feed_id.ico");
if ($has_feed_icon) {
$feed_icon_img = "
";
} else {
//$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 = "(mark as read)";
print "
";
}
}
$mouseover_attrs = "onmouseover='postMouseIn($id)'
onmouseout='postMouseOut($id)'";
print "".
" ";
print " ";
} 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 = "(mark as read)";
$has_feed_icon = is_file(ICONS_DIR . "/$feed_id.ico");
if ($has_feed_icon) {
$feed_icon_img = "$update_pic ";
print "
";
print "$marked_pic ";
print "$published_pic ";
# if ($line["feed_title"]) {
# print "$content_link ";
# print "
# ".
# truncate_string($line["feed_title"],30)." ";
# } else {
print "";
print "" .
$line["title"];
if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
if ($content_preview) {
print " - $content_preview";
}
}
print "";
# ".
# $line["feed_title"]."
if (!get_pref($link, 'VFEED_GROUP_BY_FEED')) {
if ($line["feed_title"]) {
print "
(".
$line["feed_title"].")
";
}
}
print " ";
# }
print " ";
print "$score_pic ";
if ($line["feed_title"] && !get_pref($link, 'VFEED_GROUP_BY_FEED')) {
print "$feed_icon_img ";
}
print "";
} else {
//$feed_icon_img = "
";
}
print "
";
// print "";
print "
";
}
function print_label_dlg_common_examples() {
print __("Match ") . " ";
/* print ""; */
print "";
print "";
print " ";
}
?>
";
print " $header ";
print " ";
}
function rounded_table_end($footer = " ") {
print " ";
print " $footer