param = db_escape_string($_REQUEST["param"]);
print "";
return true;
}
return false;
}
function after() {
print " ";
}
function importOpml() {
header("Content-Type: text/html"); # required for iframe
print "
";
$owner_uid = $_SESSION["uid"];
db_query($this->link, "BEGIN");
/* create Imported feeds category just in case */
$result = db_query($this->link, "SELECT id FROM
ttrss_feed_categories WHERE title = 'Imported feeds' AND
owner_uid = '$owner_uid' LIMIT 1");
if (db_num_rows($result) == 0) {
db_query($this->link, "INSERT INTO ttrss_feed_categories
(title,owner_uid)
VALUES ('Imported feeds', '$owner_uid')");
}
db_query($this->link, "COMMIT");
/* Handle OPML import by DOMXML/DOMDocument */
if (function_exists('domxml_open_file')) {
print "
";
print "".__("Importing using DOMXML.")." ";
require_once "opml_domxml.php";
opml_import_domxml($this->link, $owner_uid);
print " ";
} else if (PHP_VERSION >= 5) {
print "
";
print "".__("Importing using DOMDocument.")." ";
require_once "opml_domdoc.php";
opml_import_domdoc($this->link, $owner_uid);
print " ";
} else {
print_error(__("DOMXML extension is not found. It is required for PHP versions below 5."));
}
print "
";
print "";
print "".
__('Close this window')." ";
print "
";
print "";
//return;
}
function editPrefProfiles() {
print "";
print "
".
__('Create profile')."
";
$result = db_query($this->link, "SELECT title,id FROM ttrss_settings_profiles
WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
print "";
print "";
}
function pubOPMLUrl() {
print "".__('Public OPML URL')." ";
print "link);
print __("Your Public OPML URL is:");
print "";
print "";
print "".
__('Generate new URL')." ";
print "".
__('Close this window')." ";
print "
";
print "]]> ";
//return;
}
function explainError() {
print "".__('Notice')." ";
print "";
if ($this->param == 1) {
print __("Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner.");
$stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp");
print "" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
}
if ($this->param == 3) {
print __("Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner.");
$stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp");
print "
" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
}
print "";
print "
";
print "".
__('Close this window')." ";
print "
";
print "]]> ";
//return;
}
function quickAddFeed() {
print " ";
print " ";
print "".__("Feed")."
";
print "";
print " ";
print "
";
if (get_pref($this->link, 'ENABLE_FEED_CATS')) {
print __('Place in category:') . " ";
print_feed_cat_select($this->link, "cat", false, 'dojoType="dijit.form.Select"');
}
print "";
print '
' . __('Available feeds') . '
'.
'
'.
'
';
print "";
print "
".
__('This feed requires authentication.')."
";
print "";
print "
".__('Subscribe')."
".__('More feeds')."
".__('Cancel')."
";
//return;
}
function feedBrowser() {
$browser_search = db_escape_string($_REQUEST["search"]);
print " ";
print " ";
print "
";
print "
" . __('Popular feeds') . "
" . __('Feed archive') . "
";
print __("limit:");
print "
";
foreach (array(25, 50, 100, 200) as $l) {
$issel = ($l == $limit) ? "selected=\"1\"" : "";
print "$l ";
}
print " ";
print "
";
$owner_uid = $_SESSION["uid"];
print "";
print make_feed_browser($this->link, $search, 25);
print " ";
print "
".__('Subscribe')."
".__('Remove')."
".__('Cancel')."
";
}
function search() {
$this->params = explode(":", db_escape_string($_REQUEST["param"]), 2);
$active_feed_id = sprintf("%d", $this->params[0]);
$is_cat = $this->params[1] != "false";
print "".__('Look for')."
";
print "";
if (!SPHINX_ENABLED) {
print " ";
print " " . __('match on')." ";
$search_fields = array(
"title" => __("Title"),
"content" => __("Content"),
"both" => __("Title or content"));
print_select_hash("match_on", 3, $search_fields,
'dojoType="dijit.form.Select"');
} else {
print " ";
}
print "
".__('Limit search to:')." ";
print "
".__('All feeds')." ";
$feed_title = getFeedTitle($this->link, $active_feed_id);
if (!$is_cat) {
$feed_cat_title = getFeedCatTitle($this->link, $active_feed_id);
} else {
$feed_cat_title = getCategoryTitle($this->link, $active_feed_id);
}
if ($active_feed_id && !$is_cat) {
print "$feed_title ";
} else {
print "".__('This feed')." ";
}
if ($is_cat) {
$cat_preselected = "selected=\"1\"";
}
if (get_pref($this->link, 'ENABLE_FEED_CATS') && ($active_feed_id > 0 || $is_cat)) {
print "$feed_cat_title ";
} else {
//print "".__('This category')." ";
}
print " ";
print "";
print "";
}
function quickAddFilter() {
$active_feed_id = db_escape_string($_REQUEST["param"]);
print " ";
print " ";
print " ";
$result = db_query($this->link, "SELECT id,description
FROM ttrss_filter_types ORDER BY description");
$filter_types = array();
while ($line = db_fetch_assoc($result)) {
//array_push($filter_types, $line["description"]);
$filter_types[$line["id"]] = __($line["description"]);
}
print "".__("Match")."
";
print "";
print "";
$filter_params = array(
"before" => __("before"),
"after" => __("after"));
print_select_hash("filter_date_modifier", "before",
$filter_params, 'dojoType="dijit.form.Select"');
print " ";
print " ";
print "";
print " ".
__('Check it')." ";
print " ";
print "
" . __("on field") . " ";
print_select_hash("filter_type", 1, $filter_types,
'onchange="filterDlgCheckType(this)" dojoType="dijit.form.Select"');
print " ";
print __("in") . " ";
print_feed_select($this->link, "feed_id", $active_feed_id,
'dojoType="dijit.form.FilteringSelect"');
print "";
print "".__("Perform Action")."
";
print "";
print "";
$result = db_query($this->link, "SELECT id,description FROM ttrss_filter_actions
ORDER BY name");
while ($line = db_fetch_assoc($result)) {
printf("%s ", $line["id"], __($line["description"]));
}
print " ";
print "";
print " " . __("with parameters:") . " ";
print " ";
print_label_select($this->link, "action_param_label", $action_param,
'id="filterDlg_actionParamLabel" dojoType="dijit.form.Select"');
print " ";
print " "; // tiny layout hack
print "
";
print "".__("Options")."
";
print "";
print "
".__('Enabled')."
";
print "
".__('Inverse match')." ";
print "";
print "";
print "".
__('Test')." ";
print "".
__('Create')." ";
print "".
__('Cancel')." ";
print "
";
}
function inactiveFeeds() {
if (DB_TYPE == "pgsql") {
$interval_qpart = "NOW() - INTERVAL '3 months'";
} else {
$interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)";
}
$result = db_query($this->link, "SELECT ttrss_feeds.title, ttrss_feeds.site_url,
ttrss_feeds.feed_url, ttrss_feeds.id, MAX(updated) AS last_article
FROM ttrss_feeds, ttrss_entries, ttrss_user_entries WHERE
(SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE
ttrss_entries.id = ref_id AND
ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart
AND ttrss_feeds.owner_uid = ".$_SESSION["uid"]." AND
ttrss_user_entries.feed_id = ttrss_feeds.id AND
ttrss_entries.id = ref_id
GROUP BY ttrss_feeds.title, ttrss_feeds.id, ttrss_feeds.site_url, ttrss_feeds.feed_url
ORDER BY last_article");
print __("These feeds have not been updated with new content for 3 months (oldest first):");
print "";
print "";
}
function feedsWithErrors() {
print __("These feeds have not been updated because of errors:");
$result = db_query($this->link, "SELECT id,title,feed_url,last_error,site_url
FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
print "";
print "";
}
function editArticleTags() {
print __("Tags for this article (separated by commas):")." ";
$tags = get_article_tags($this->link, $this->param);
$tags_str = join(", ", $tags);
print " param\">";
print " ";
print " ";
print "";
print "";
print "".__('Save')." ";
print "".__('Cancel')." ";
print "
";
}
function printTagCloud() {
print "".__('Tag Cloud')." ";
print "";
printTagCloud($this->link);
print "";
print "";
print "".
__('Close this window')." ";
print "
";
print "]]> ";
}
function printTagSelect() {
print "" . __('Select item(s) by tags') . " ";
print " Any ";
print " All ";
print " tags.";
print "";
$result = db_query($this->link, "SELECT DISTINCT tag_name FROM ttrss_tags WHERE owner_uid = ".$_SESSION['uid']."
AND LENGTH(tag_name) <= 30 ORDER BY tag_name ASC");
while ($row = db_fetch_assoc($result)) {
$tmp = htmlspecialchars($row["tag_name"]);
print "$tmp ";
}
print " ";
print "";
print "" . __('Display entries') . " ";
print " ";
print "" .
__('Close this window') . " ";
print "
";
print "]]> ";
}
function emailArticle() {
$secretkey = sha1(uniqid(rand(), true));
$_SESSION['email_secretkey'] = $secretkey;
print " ";
print " ";
print " ";
$result = db_query($this->link, "SELECT email, full_name FROM ttrss_users WHERE
id = " . $_SESSION["uid"]);
$user_email = htmlspecialchars(db_fetch_result($result, 0, "email"));
$user_name = htmlspecialchars(db_fetch_result($result, 0, "full_name"));
if (!$user_name) $user_name = $_SESSION['name'];
$_SESSION['email_replyto'] = $user_email;
$_SESSION['email_fromname'] = $user_name;
require_once "lib/MiniTemplator.class.php";
$tpl = new MiniTemplator;
$tpl_t = new MiniTemplator;
$tpl->readTemplateFromFile("templates/email_article_template.txt");
$tpl->setVariable('USER_NAME', $_SESSION["name"]);
$tpl->setVariable('USER_EMAIL', $user_email);
$tpl->setVariable('TTRSS_HOST', $_SERVER["HTTP_HOST"]);
$result = db_query($this->link, "SELECT link, content, title
FROM ttrss_user_entries, ttrss_entries WHERE id = ref_id AND
id IN ($this->param) AND owner_uid = " . $_SESSION["uid"]);
if (db_num_rows($result) > 1) {
$subject = __("[Forwarded]") . " " . __("Multiple articles");
}
while ($line = db_fetch_assoc($result)) {
if (!$subject)
$subject = __("[Forwarded]") . " " . htmlspecialchars($line["title"]);
$tpl->setVariable('ARTICLE_TITLE', strip_tags($line["title"]));
$tpl->setVariable('ARTICLE_URL', strip_tags($line["link"]));
$tpl->addBlock('article');
}
$tpl->addBlock('email');
$content = "";
$tpl->generateOutputToString($content);
print "";
print "";
print "".__('Send e-mail')." ";
print "".__('Cancel')." ";
print "
";
//return;
}
function generatedFeed() {
print "".__('View as RSS')." ";
print "params = explode(":", $this->param, 3);
$feed_id = db_escape_string($this->params[0]);
$is_cat = (bool) $this->params[1];
$key = get_feed_access_key($this->link, $feed_id, $is_cat);
$url_path = htmlspecialchars($this->params[2]) . "&key=" . $key;
print __("You can view this feed as RSS using the following URL:");
print "";
print "";
print "".
__('Generate new URL')." ";
print "".
__('Close this window')." ";
print "
";
print "]]> ";
//return;
}
function newVersion() {
$version_data = check_for_update($this->link);
$version = $version_data['version'];
$id = $version_data['version_id'];
print "";
print T_sprintf("New version of Tiny Tiny RSS is available (%s).",
"$version ");
print "
";
$details = "http://tt-rss.org/redmine/versions/show/$id";
$download = "http://tt-rss.org/#Download";
print "";
print "".__("Details")." ";
print "".__("Download")." ";
print "".
__('Close this window')." ";
print "
";
}
function customizeCSS() {
$value = get_pref($this->link, "USER_STYLESHEET");
$value = str_replace(" ", "\n", $value);
print T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline.", "tt-rss.css");
print " ";
print " ";
print " ";
print "";
print "";
print "".__('Save')." ";
print "".__('Cancel')." ";
print "
";
}
function editArticleNote() {
$result = db_query($this->link, "SELECT note FROM ttrss_user_entries WHERE
ref_id = '$this->param' AND owner_uid = " . $_SESSION['uid']);
$note = db_fetch_result($result, 0, "note");
print " param\">";
print " ";
print " ";
print "";
print "";
print "".__('Save')." ";
print "".__('Cancel')." ";
print "
";
}
function about() {
print "";
print " ";
print " ";
print "";
print "Tiny Riny RSS
Version ".VERSION."
Copyright © 2005-".date('Y')."
Andrew Dolgov
and other contributors.
Licensed under GNU GPL version 2.
";
print "
Official site —
Support the project.
";
print " ";
print "
";
print "";
print "".
__('Close this window')." ";
print "
";
}
function addInstance() {
print " ";
print " ";
print "".__("Instance")."
";
print "";
print "";
return;
}
function shareArticle() {
$result = db_query($this->link, "SELECT uuid, ref_id FROM ttrss_user_entries WHERE int_id = '$this->param'
AND owner_uid = " . $_SESSION['uid']);
if (db_num_rows($result) == 0) {
print "Article not found.";
} else {
$uuid = db_fetch_result($result, 0, "uuid");
$ref_id = db_fetch_result($result, 0, "ref_id");
if (!$uuid) {
$uuid = db_escape_string(sha1(uniqid(rand(), true)));
db_query($this->link, "UPDATE ttrss_user_entries SET uuid = '$uuid' WHERE int_id = '$this->param'
AND owner_uid = " . $_SESSION['uid']);
}
print __("You can share this article by the following unique URL:");
$url_path = get_self_url_prefix();
$url_path .= "/public.php?op=share&key=$uuid";
print "";
/* if (!label_find_id($this->link, __('Shared'), $_SESSION["uid"]))
label_create($this->link, __('Shared'), $_SESSION["uid"]);
label_add_article($this->link, $ref_id, __('Shared'), $_SESSION['uid']); */
}
print "";
print "".
__('Close this window')." ";
print "
";
}
}
?>