summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/backend-rpc.php911
-rw-r--r--modules/help.php27
-rw-r--r--modules/opml_domdoc.php166
-rw-r--r--modules/popup-dialog.php1122
-rw-r--r--modules/pref-feeds.php1685
-rw-r--r--modules/pref-filters.php579
-rw-r--r--modules/pref-instances.php204
-rw-r--r--modules/pref-labels.php321
-rw-r--r--modules/pref-prefs.php512
-rw-r--r--modules/pref-users.php501
10 files changed, 0 insertions, 6028 deletions
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
deleted file mode 100644
index 34adc8f91..000000000
--- a/modules/backend-rpc.php
+++ /dev/null
@@ -1,911 +0,0 @@
-<?php
- function handle_rpc_request($link) {
-
- $subop = $_REQUEST["subop"];
- $seq = (int) $_REQUEST["seq"];
-
- // Silent
- if ($subop == "setprofile") {
- $id = db_escape_string($_REQUEST["id"]);
-
- $_SESSION["profile"] = $id;
- $_SESSION["prefs_cache"] = array();
- return;
- }
-
- // Silent
- if ($subop == "remprofiles") {
- $ids = explode(",", db_escape_string(trim($_REQUEST["ids"])));
-
- foreach ($ids as $id) {
- if ($_SESSION["profile"] != $id) {
- db_query($link, "DELETE FROM ttrss_settings_profiles WHERE id = '$id' AND
- owner_uid = " . $_SESSION["uid"]);
- }
- }
- return;
- }
-
- // Silent
- if ($subop == "addprofile") {
- $title = db_escape_string(trim($_REQUEST["title"]));
- if ($title) {
- db_query($link, "BEGIN");
-
- $result = db_query($link, "SELECT id FROM ttrss_settings_profiles
- WHERE title = '$title' AND owner_uid = " . $_SESSION["uid"]);
-
- if (db_num_rows($result) == 0) {
-
- db_query($link, "INSERT INTO ttrss_settings_profiles (title, owner_uid)
- VALUES ('$title', ".$_SESSION["uid"] .")");
-
- $result = db_query($link, "SELECT id FROM ttrss_settings_profiles WHERE
- title = '$title'");
-
- if (db_num_rows($result) != 0) {
- $profile_id = db_fetch_result($result, 0, "id");
-
- if ($profile_id) {
- initialize_user_prefs($link, $_SESSION["uid"], $profile_id);
- }
- }
- }
-
- db_query($link, "COMMIT");
- }
- return;
- }
-
- // Silent
- if ($subop == "saveprofile") {
- $id = db_escape_string($_REQUEST["id"]);
- $title = db_escape_string(trim($_REQUEST["value"]));
-
- if ($id == 0) {
- print __("Default profile");
- return;
- }
-
- if ($title) {
- db_query($link, "BEGIN");
-
- $result = db_query($link, "SELECT id FROM ttrss_settings_profiles
- WHERE title = '$title' AND owner_uid =" . $_SESSION["uid"]);
-
- if (db_num_rows($result) == 0) {
- db_query($link, "UPDATE ttrss_settings_profiles
- SET title = '$title' WHERE id = '$id' AND
- owner_uid = " . $_SESSION["uid"]);
- print $title;
- } else {
- $result = db_query($link, "SELECT title FROM ttrss_settings_profiles
- WHERE id = '$id' AND owner_uid =" . $_SESSION["uid"]);
- print db_fetch_result($result, 0, "title");
- }
-
- db_query($link, "COMMIT");
- }
- return;
- }
-
- // Silent
- if ($subop == "remarchive") {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- $result = db_query($link, "DELETE FROM ttrss_archived_feeds WHERE
- (SELECT COUNT(*) FROM ttrss_user_entries
- WHERE orig_feed_id = '$id') = 0 AND
- id = '$id' AND owner_uid = ".$_SESSION["uid"]);
-
- $rc = db_affected_rows($link, $result);
- }
- return;
- }
-
- if ($subop == "addfeed") {
- $feed = db_escape_string($_REQUEST['feed']);
- $cat = db_escape_string($_REQUEST['cat']);
- $login = db_escape_string($_REQUEST['login']);
- $pass = db_escape_string($_REQUEST['pass']);
-
- $rc = subscribe_to_feed($link, $feed, $cat, $login, $pass);
-
- print json_encode(array("result" => $rc));
-
- return;
-
- }
-
- if ($subop == "extractfeedurls") {
-
- $urls = get_feeds_from_html($_REQUEST['url']);
-
- print json_encode(array("urls" => $urls));
- return;
- }
-
- if ($subop == "togglepref") {
- $key = db_escape_string($_REQUEST["key"]);
- set_pref($link, $key, !get_pref($link, $key));
- $value = get_pref($link, $key);
-
- print json_encode(array("param" =>$key, "value" => $value));
- return;
- }
-
- if ($subop == "setpref") {
- $value = str_replace("\n", "<br/>", $_REQUEST['value']);
-
- $key = db_escape_string($_REQUEST["key"]);
- $value = db_escape_string($value);
-
- set_pref($link, $key, $value);
-
- print json_encode(array("param" =>$key, "value" => $value));
- return;
- }
-
- if ($subop == "mark") {
- $mark = $_REQUEST["mark"];
- $id = db_escape_string($_REQUEST["id"]);
-
- if ($mark == "1") {
- $mark = "true";
- } else {
- $mark = "false";
- }
-
- $result = db_query($link, "UPDATE ttrss_user_entries SET marked = $mark
- WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "delete") {
- $ids = db_escape_string($_REQUEST["ids"]);
-
- $result = db_query($link, "DELETE FROM ttrss_user_entries
- WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "unarchive") {
- $ids = db_escape_string($_REQUEST["ids"]);
-
- $result = db_query($link, "UPDATE ttrss_user_entries
- SET feed_id = orig_feed_id, orig_feed_id = NULL
- WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "archive") {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- archive_article($link, $id, $_SESSION["uid"]);
- }
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "publ") {
- $pub = $_REQUEST["pub"];
- $id = db_escape_string($_REQUEST["id"]);
- $note = trim(strip_tags(db_escape_string($_REQUEST["note"])));
-
- if ($pub == "1") {
- $pub = "true";
- } else {
- $pub = "false";
- }
-
- $result = db_query($link, "UPDATE ttrss_user_entries SET
- published = $pub
- WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
-
- $pubsub_result = false;
-
- if (PUBSUBHUBBUB_HUB) {
- $rss_link = get_self_url_prefix() .
- "/public.php?op=rss&id=-2&key=" .
- get_feed_access_key($link, -2, false);
-
- $p = new Publisher(PUBSUBHUBBUB_HUB);
-
- $pubsub_result = $p->publish_update($rss_link);
- }
-
- print json_encode(array("message" => "UPDATE_COUNTERS",
- "pubsub_result" => $pubsub_result));
- return;
- }
-
- // Silent
- /* if ($subop == "update") {
- $feed_id = db_escape_string($_REQUEST["feed"]);
- update_rss_feed($link, $feed_id);
- return;
- } */
-
- if ($subop == "updateAllFeeds" || $subop == "getAllCounters") {
- $last_article_id = (int) $_REQUEST["last_article_id"];
-
- $reply = array();
-
- if ($seq) $reply['seq'] = $seq;
-
- if ($last_article_id != getLastArticleId($link)) {
- $omode = $_REQUEST["omode"];
-
- if ($omode != "T")
- $reply['counters'] = getAllCounters($link, $omode);
- else
- $reply['counters'] = getGlobalCounters($link);
- }
-
- $reply['runtime-info'] = make_runtime_info($link);
-
-
- print json_encode($reply);
- return;
- }
-
- /* GET["cmode"] = 0 - mark as read, 1 - as unread, 2 - toggle */
- if ($subop == "catchupSelected") {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $cmode = sprintf("%d", $_REQUEST["cmode"]);
-
- catchupArticlesById($link, $ids, $cmode);
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "markSelected") {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $cmode = sprintf("%d", $_REQUEST["cmode"]);
-
- markArticlesById($link, $ids, $cmode);
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "publishSelected") {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $cmode = sprintf("%d", $_REQUEST["cmode"]);
-
- publishArticlesById($link, $ids, $cmode);
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "sanityCheck") {
- $_SESSION["hasAudio"] = $_REQUEST["hasAudio"] === "true";
-
- $reply = array();
-
- $reply['error'] = sanity_check($link);
-
- if ($reply['error']['code'] == 0) {
- $reply['init-params'] = make_init_params($link);
- $reply['runtime-info'] = make_runtime_info($link);
- }
-
- print json_encode($reply);
- return;
- }
-
- if ($subop == "setArticleTags") {
- global $memcache;
-
- $id = db_escape_string($_REQUEST["id"]);
-
- $tags_str = db_escape_string($_REQUEST["tags_str"]);
- $tags = array_unique(trim_array(explode(",", $tags_str)));
-
- db_query($link, "BEGIN");
-
- $result = db_query($link, "SELECT int_id FROM ttrss_user_entries WHERE
- ref_id = '$id' AND owner_uid = '".$_SESSION["uid"]."' LIMIT 1");
-
- if (db_num_rows($result) == 1) {
-
- $tags_to_cache = array();
-
- $int_id = db_fetch_result($result, 0, "int_id");
-
- db_query($link, "DELETE FROM ttrss_tags WHERE
- post_int_id = $int_id AND owner_uid = '".$_SESSION["uid"]."'");
-
- foreach ($tags as $tag) {
- $tag = sanitize_tag($tag);
-
- if (!tag_is_valid($tag)) {
- continue;
- }
-
- if (preg_match("/^[0-9]*$/", $tag)) {
- continue;
- }
-
-// print "<!-- $id : $int_id : $tag -->";
-
- if ($tag != '') {
- db_query($link, "INSERT INTO ttrss_tags
- (post_int_id, owner_uid, tag_name) VALUES ('$int_id', '".$_SESSION["uid"]."', '$tag')");
- }
-
- array_push($tags_to_cache, $tag);
- }
-
- /* update tag cache */
-
- sort($tags_to_cache);
- $tags_str = join(",", $tags_to_cache);
-
- db_query($link, "UPDATE ttrss_user_entries
- SET tag_cache = '$tags_str' WHERE ref_id = '$id'
- AND owner_uid = " . $_SESSION["uid"]);
- }
-
- db_query($link, "COMMIT");
-
- if ($memcache) {
- $obj_id = md5("TAGS:".$_SESSION["uid"].":$id");
- $memcache->delete($obj_id);
- }
-
- $tags = get_article_tags($link, $id);
- $tags_str = format_tags_string($tags, $id);
- $tags_str_full = join(", ", $tags);
-
- if (!$tags_str_full) $tags_str_full = __("no tags");
-
- print json_encode(array("tags_str" => array("id" => $id,
- "content" => $tags_str, "content_full" => $tags_str_full)));
-
- return;
- }
-
- if ($subop == "regenOPMLKey") {
- update_feed_access_key($link, 'OPML:Publish',
- false, $_SESSION["uid"]);
-
- $new_link = opml_publish_url($link);
-
- print json_encode(array("link" => $new_link));
- return;
- }
-
- if ($subop == "completeTags") {
- $search = db_escape_string($_REQUEST["search"]);
-
- $result = db_query($link, "SELECT DISTINCT tag_name FROM ttrss_tags
- WHERE owner_uid = '".$_SESSION["uid"]."' AND
- tag_name LIKE '$search%' ORDER BY tag_name
- LIMIT 10");
-
- print "<ul>";
- while ($line = db_fetch_assoc($result)) {
- print "<li>" . $line["tag_name"] . "</li>";
- }
- print "</ul>";
-
- return;
- }
-
- if ($subop == "purge") {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $days = sprintf("%d", $_REQUEST["days"]);
-
- foreach ($ids as $id) {
-
- $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
- id = '$id' AND owner_uid = ".$_SESSION["uid"]);
-
- if (db_num_rows($result) == 1) {
- purge_feed($link, $id, $days);
- }
- }
-
- return;
- }
-
-/* if ($subop == "setScore") {
- $id = db_escape_string($_REQUEST["id"]);
- $score = sprintf("%d", $_REQUEST["score"]);
-
- $result = db_query($link, "UPDATE ttrss_user_entries SET score = '$score'
- WHERE ref_id = '$id' AND owner_uid = ".$_SESSION["uid"]);
-
- print "<rpc-reply><message>Acknowledged.</message></rpc-reply>";
-
- return;
-
- } */
-
- if ($subop == "getArticles") {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $articles = array();
-
- foreach ($ids as $id) {
- if ($id) {
- array_push($articles, format_article($link, $id, 0, false));
- }
- }
-
- print json_encode($articles);
- return;
- }
-
- if ($subop == "checkDate") {
- $date = db_escape_string($_REQUEST["date"]);
- $date_parsed = strtotime($date);
-
- print json_encode(array("result" => (bool)$date_parsed,
- "date" => date("c", $date_parsed)));
- return;
- }
-
- if ($subop == "assignToLabel" || $subop == "removeFromLabel") {
- $reply = array();
-
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $label_id = db_escape_string($_REQUEST["lid"]);
-
- $label = db_escape_string(label_find_caption($link, $label_id,
- $_SESSION["uid"]));
-
- $reply["info-for-headlines"] = array();
-
- if ($label) {
-
- foreach ($ids as $id) {
-
- if ($subop == "assignToLabel")
- label_add_article($link, $id, $label, $_SESSION["uid"]);
- else
- label_remove_article($link, $id, $label, $_SESSION["uid"]);
-
- $labels = get_article_labels($link, $id, $_SESSION["uid"]);
-
- array_push($reply["info-for-headlines"],
- array("id" => $id, "labels" => format_article_labels($labels, $id)));
-
- }
- }
-
- $reply["message"] = "UPDATE_COUNTERS";
-
- print json_encode($reply);
-
- return;
- }
-
- if ($subop == "updateFeedBrowser") {
- $search = db_escape_string($_REQUEST["search"]);
- $limit = db_escape_string($_REQUEST["limit"]);
- $mode = (int) db_escape_string($_REQUEST["mode"]);
-
- print json_encode(array("content" =>
- make_feed_browser($link, $search, $limit, $mode),
- "mode" => $mode));
- return;
- }
-
- // Silent
- if ($subop == "massSubscribe") {
-
- $payload = json_decode($_REQUEST["payload"], false);
- $mode = $_REQUEST["mode"];
-
- if (!$payload || !is_array($payload)) return;
-
- if ($mode == 1) {
- foreach ($payload as $feed) {
-
- $title = db_escape_string($feed[0]);
- $feed_url = db_escape_string($feed[1]);
-
- $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
- feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
-
- if (db_num_rows($result) == 0) {
- $result = db_query($link, "INSERT INTO ttrss_feeds
- (owner_uid,feed_url,title,cat_id,site_url)
- VALUES ('".$_SESSION["uid"]."',
- '$feed_url', '$title', NULL, '')");
- }
- }
- } else if ($mode == 2) {
- // feed archive
- foreach ($payload as $id) {
- $result = db_query($link, "SELECT * FROM ttrss_archived_feeds
- WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]);
-
- if (db_num_rows($result) != 0) {
- $site_url = db_escape_string(db_fetch_result($result, 0, "site_url"));
- $feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url"));
- $title = db_escape_string(db_fetch_result($result, 0, "title"));
-
- $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
- feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
-
- if (db_num_rows($result) == 0) {
- $result = db_query($link, "INSERT INTO ttrss_feeds
- (owner_uid,feed_url,title,cat_id,site_url)
- VALUES ('$id','".$_SESSION["uid"]."',
- '$feed_url', '$title', NULL, '$site_url')");
- }
- }
- }
- }
-
-/* $ids = explode(",", db_escape_string($_REQUEST["ids"]));
-
- $subscribed = array();
-
- foreach ($ids as $id) {
-
- if ($mode == 1) {
- $result = db_query($link, "SELECT feed_url,title FROM ttrss_feeds
- WHERE id = '$id'");
- } else if ($mode == 2) {
- $result = db_query($link, "SELECT * FROM ttrss_archived_feeds
- WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]);
- $orig_id = db_escape_string(db_fetch_result($result, 0, "id"));
- $site_url = db_escape_string(db_fetch_result($result, 0, "site_url"));
- }
-
- $feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url"));
- $title = db_escape_string(db_fetch_result($result, 0, "title"));
-
- $title_orig = db_fetch_result($result, 0, "title");
-
- $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
- feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
-
- if (db_num_rows($result) == 0) {
- if ($mode == 1) {
- $result = db_query($link,
- "INSERT INTO ttrss_feeds (owner_uid,feed_url,title,cat_id)
- VALUES ('".$_SESSION["uid"]."', '$feed_url', '$title', NULL)");
- } else if ($mode == 2) {
- $result = db_query($link,
- "INSERT INTO ttrss_feeds (id,owner_uid,feed_url,title,cat_id,site_url)
- VALUES ('$orig_id','".$_SESSION["uid"]."', '$feed_url', '$title', NULL, '$site_url')");
- }
- array_push($subscribed, $title_orig);
- }
- } */
-
- return;
- }
-
- if ($subop == "digest-get-contents") {
- $article_id = db_escape_string($_REQUEST['article_id']);
-
- $result = db_query($link, "SELECT content,title,link,marked,published
- FROM ttrss_entries, ttrss_user_entries
- WHERE id = '$article_id' AND ref_id = id AND owner_uid = ".$_SESSION['uid']);
-
- $content = sanitize_rss($link, db_fetch_result($result, 0, "content"));
- $title = strip_tags(db_fetch_result($result, 0, "title"));
- $article_url = htmlspecialchars(db_fetch_result($result, 0, "link"));
- $marked = sql_bool_to_bool(db_fetch_result($result, 0, "marked"));
- $published = sql_bool_to_bool(db_fetch_result($result, 0, "published"));
-
-
- print json_encode(array("article" =>
- array("id" => $article_id, "url" => $article_url,
- "tags" => get_article_tags($link, $article_id),
- "marked" => $marked, "published" => $published,
- "title" => $title, "content" => $content)));
- return;
- }
-
- if ($subop == "digest-update") {
- $feed_id = db_escape_string($_REQUEST['feed_id']);
- $offset = db_escape_string($_REQUEST['offset']);
- $seq = db_escape_string($_REQUEST['seq']);
-
- if (!$feed_id) $feed_id = -4;
- if (!$offset) $offset = 0;
-
- $reply = array();
-
- $reply['seq'] = $seq;
-
- $headlines = api_get_headlines($link, $feed_id, 30, $offset,
- '', ($feed_id == -4), true, false, "unread", "updated DESC", 0, 0);
-
- //function api_get_headlines($link, $feed_id, $limit, $offset,
- // $filter, $is_cat, $show_excerpt, $show_content, $view_mode) {
-
- $reply['headlines'] = array();
- $reply['headlines']['title'] = getFeedTitle($link, $feed_id);
- $reply['headlines']['content'] = $headlines;
-
- print json_encode($reply);
- return;
- }
-
- if ($subop == "digest-init") {
- $tmp_feeds = api_get_feeds($link, -4, true, false, 0);
-
- $feeds = array();
-
- foreach ($tmp_feeds as $f) {
- if ($f['id'] > 0 || $f['id'] == -4) array_push($feeds, $f);
- }
-
- print json_encode(array("feeds" => $feeds));
-
- return;
- }
-
- if ($subop == "catchupFeed") {
- $feed_id = db_escape_string($_REQUEST['feed_id']);
- $is_cat = db_escape_string($_REQUEST['is_cat']) == "true";
-
- catchup_feed($link, $feed_id, $is_cat);
-
- print json_encode(array("message" => "UPDATE_COUNTERS"));
- return;
- }
-
- if ($subop == "sendEmail") {
- $secretkey = $_REQUEST['secretkey'];
-
- require_once 'lib/phpmailer/class.phpmailer.php';
-
- $reply = array();
-
- if (DIGEST_ENABLE && $_SESSION['email_secretkey'] &&
- $secretkey == $_SESSION['email_secretkey']) {
-
- $_SESSION['email_secretkey'] = '';
-
- $destination = $_REQUEST['destination'];
- $subject = $_REQUEST['subject'];
- $content = $_REQUEST['content'];
-
- $replyto = strip_tags($_SESSION['email_replyto']);
- $fromname = strip_tags($_SESSION['email_fromname']);
-
- $mail = new PHPMailer();
-
- $mail->PluginDir = "lib/phpmailer/";
- $mail->SetLanguage("en", "lib/phpmailer/language/");
-
- $mail->CharSet = "UTF-8";
-
- $mail->From = $replyto;
- $mail->FromName = $fromname;
- $mail->AddAddress($destination);
-
- if (DIGEST_SMTP_HOST) {
- $mail->Host = DIGEST_SMTP_HOST;
- $mail->Mailer = "smtp";
- $mail->SMTPAuth = DIGEST_SMTP_LOGIN != '';
- $mail->Username = DIGEST_SMTP_LOGIN;
- $mail->Password = DIGEST_SMTP_PASSWORD;
- }
-
- $mail->IsHTML(false);
- $mail->Subject = $subject;
- $mail->Body = $content;
-
- $rc = $mail->Send();
-
- if (!$rc) {
- $reply['error'] = $mail->ErrorInfo;
- } else {
- save_email_address($link, db_escape_string($destination));
- $reply['message'] = "UPDATE_COUNTERS";
- }
-
- } else {
- $reply['error'] = "Not authorized.";
- }
-
- print json_encode($reply);
- return;
- }
-
- if ($subop == "completeEmails") {
- $search = db_escape_string($_REQUEST["search"]);
-
- print "<ul>";
-
- foreach ($_SESSION['stored_emails'] as $email) {
- if (strpos($email, $search) !== false) {
- print "<li>$email</li>";
- }
- }
-
- print "</ul>";
-
- return;
- }
-
- if ($subop == "quickAddCat") {
- $cat = db_escape_string($_REQUEST["cat"]);
-
- add_feed_category($link, $cat);
-
- $result = db_query($link, "SELECT id FROM ttrss_feed_categories WHERE
- title = '$cat' AND owner_uid = " . $_SESSION["uid"]);
-
- if (db_num_rows($result) == 1) {
- $id = db_fetch_result($result, 0, "id");
- } else {
- $id = 0;
- }
-
- print_feed_cat_select($link, "cat_id", $id);
-
- return;
- }
-
- if ($subop == "regenFeedKey") {
- $feed_id = db_escape_string($_REQUEST['id']);
- $is_cat = db_escape_string($_REQUEST['is_cat']) == "true";
-
- $new_key = update_feed_access_key($link, $feed_id, $is_cat);
-
- print json_encode(array("link" => $new_key));
- return;
- }
-
- // Silent
- if ($subop == "clearKeys") {
- db_query($link, "DELETE FROM ttrss_access_keys WHERE
- owner_uid = " . $_SESSION["uid"]);
-
- return;
- }
-
- // Silent
- if ($subop == "clearArticleKeys") {
- db_query($link, "UPDATE ttrss_user_entries SET uuid = '' WHERE
- owner_uid = " . $_SESSION["uid"]);
-
- return;
- }
-
-
- if ($subop == "verifyRegexp") {
- $reg_exp = $_REQUEST["reg_exp"];
-
- $status = @preg_match("/$reg_exp/i", "TEST") !== false;
-
- print json_encode(array("status" => $status));
- return;
- }
-
- // TODO: unify with digest-get-contents?
- if ($subop == "cdmGetArticle") {
- $ids = array(db_escape_string($_REQUEST["id"]));
- $cids = explode(",", $_REQUEST["cids"]);
-
- $ids = array_merge($ids, $cids);
-
- $rv = array();
-
- foreach ($ids as $id) {
- $id = (int)$id;
-
- $result = db_query($link, "SELECT content,
- ttrss_feeds.site_url AS site_url FROM ttrss_user_entries, ttrss_feeds,
- ttrss_entries
- WHERE feed_id = ttrss_feeds.id AND ref_id = '$id' AND
- ttrss_entries.id = ref_id AND
- ttrss_user_entries.owner_uid = ".$_SESSION["uid"]);
-
- if (db_num_rows($result) != 0) {
- $line = db_fetch_assoc($result);
-
- $article_content = sanitize_rss($link, $line["content"],
- false, false, $line['site_url']);
-
- array_push($rv,
- array("id" => $id, "content" => $article_content));
- }
- }
-
- print json_encode($rv);
-
- return;
- }
-
- if ($subop == "scheduleFeedUpdate") {
- $feed_id = db_escape_string($_REQUEST["id"]);
- $is_cat = db_escape_string($_REQUEST['is_cat']) == 'true';
-
- $message = __("Your request could not be completed.");
-
- if ($feed_id >= 0) {
- if (!$is_cat) {
- $message = __("Feed update has been scheduled.");
-
- db_query($link, "UPDATE ttrss_feeds SET
- last_update_started = '1970-01-01',
- last_updated = '1970-01-01' WHERE id = '$feed_id' AND
- owner_uid = ".$_SESSION["uid"]);
-
- } else {
- $message = __("Category update has been scheduled.");
-
- if ($feed_id)
- $cat_query = "cat_id = '$feed_id'";
- else
- $cat_query = "cat_id IS NULL";
-
- db_query($link, "UPDATE ttrss_feeds SET
- last_update_started = '1970-01-01',
- last_updated = '1970-01-01' WHERE $cat_query AND
- owner_uid = ".$_SESSION["uid"]);
- }
- } else {
- $message = __("Can't update this kind of feed.");
- }
-
- print json_encode(array("message" => $message));
- return;
- }
-
- if ($subop == "getTweetInfo") {
- $id = db_escape_string($_REQUEST['id']);
-
- $result = db_query($link, "SELECT title, link
- FROM ttrss_entries, ttrss_user_entries
- WHERE id = '$id' AND ref_id = id AND owner_uid = " .$_SESSION['uid']);
-
- if (db_num_rows($result) != 0) {
- $title = truncate_string(strip_tags(db_fetch_result($result, 0, 'title')),
- 100, '...');
- $article_link = db_fetch_result($result, 0, 'link');
- }
-
- print json_encode(array("title" => $title, "link" => $article_link,
- "id" => $id));
-
- return;
- }
-
- if ($subop == "setNote") {
- $id = db_escape_string($_REQUEST["id"]);
- $note = trim(strip_tags(db_escape_string($_REQUEST["note"])));
-
- db_query($link, "UPDATE ttrss_user_entries SET note = '$note'
- WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
-
- $formatted_note = format_article_note($id, $note);
-
- print json_encode(array("note" => $formatted_note,
- "raw_length" => mb_strlen($note)));
- return;
- }
-
- if ($subop == "genHash") {
- $hash = sha1(uniqid(rand(), true));
-
- print json_encode(array("hash" => $hash));
- return;
- }
-
- print json_encode(array("error" => array("code" => 7,
- "message" => "Unknown method: $subop")));
- }
-?>
diff --git a/modules/help.php b/modules/help.php
deleted file mode 100644
index 716a756dc..000000000
--- a/modules/help.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
- function module_help($link) {
-
- if (!$_REQUEST["noheaders"]) {
- print "<html><head>
- <title>".__('Help')."</title>
- <link rel=\"stylesheet\" href=\"utility.css\" type=\"text/css\">
- <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
- </head><body>";
- }
-
- $tid = sprintf("%d", $_REQUEST["tid"]);
-
- if (file_exists("help/$tid.php")) {
- include("help/$tid.php");
- } else {
- print "<p>".__("Help topic not found.")."</p>";
- }
- print "<div align='center'>
- <button onclick=\"javascript:window.close()\">".
- __('Close this window')."</button></div>";
-
- if (!$_REQUEST["noheaders"]) {
- print "</body></html>";
- }
- }
-?>
diff --git a/modules/opml_domdoc.php b/modules/opml_domdoc.php
deleted file mode 100644
index 08715093a..000000000
--- a/modules/opml_domdoc.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
- function opml_import_domdoc($link, $owner_uid) {
-
- if (is_file($_FILES['opml_file']['tmp_name'])) {
- $doc = DOMDocument::load($_FILES['opml_file']['tmp_name']);
-
- $result = db_query($link, "SELECT id FROM
- ttrss_feed_categories WHERE title = 'Imported feeds' AND
- owner_uid = '$owner_uid' LIMIT 1");
-
- if (db_num_rows($result) == 1) {
- $default_cat_id = db_fetch_result($result, 0, "id");
- } else {
- $default_cat_id = 0;
- }
-
- if ($doc) {
- $body = $doc->getElementsByTagName('body');
-
- $xpath = new DOMXpath($doc);
- $query = "/opml/body//outline";
-
- $outlines = $xpath->query($query);
-
- foreach ($outlines as $outline) {
-
- $feed_title = db_escape_string($outline->attributes->getNamedItem('text')->nodeValue);
-
- if (!$feed_title) {
- $feed_title = db_escape_string($outline->attributes->getNamedItem('title')->nodeValue);
- }
-
- $cat_title = db_escape_string($outline->attributes->getNamedItem('title')->nodeValue);
-
- if (!$cat_title) {
- $cat_title = db_escape_string($outline->attributes->getNamedItem('text')->nodeValue);
- }
-
- $feed_url = db_escape_string($outline->attributes->getNamedItem('xmlUrl')->nodeValue);
-
- if (!$feed_url)
- $feed_url = db_escape_string($outline->attributes->getNamedItem('xmlURL')->nodeValue);
-
- $site_url = db_escape_string($outline->attributes->getNamedItem('htmlUrl')->nodeValue);
-
- $pref_name = db_escape_string($outline->attributes->getNamedItem('pref-name')->nodeValue);
-
- if ($cat_title && !$feed_url) {
-
- if ($cat_title != "tt-rss-prefs") {
-
- db_query($link, "BEGIN");
-
- $result = db_query($link, "SELECT id FROM
- ttrss_feed_categories WHERE title = '$cat_title' AND
- owner_uid = '$owner_uid' LIMIT 1");
-
- if (db_num_rows($result) == 0) {
-
- printf(__("<li>Adding category <b>%s</b>.</li>"), $cat_title);
-
- db_query($link, "INSERT INTO ttrss_feed_categories
- (title,owner_uid)
- VALUES ('$cat_title', '$owner_uid')");
- }
-
- db_query($link, "COMMIT");
- }
- }
-
- // print "$active_category : $feed_title : $feed_url<br>";
-
- if ($pref_name) {
- $parent_node = $outline->parentNode;
-
- if ($parent_node && $parent_node->nodeName == "outline") {
- $cat_check = $parent_node->attributes->getNamedItem('title')->nodeValue;
- if ($cat_check == "tt-rss-prefs") {
- $pref_value = db_escape_string($outline->attributes->getNamedItem('value')->nodeValue);
-
- printf("<li>".
- __("Setting preference key %s to %s")."</li>",
- $pref_name, $pref_value);
-
- set_pref($link, $pref_name, $pref_value);
-
- }
- }
- }
-
- if (!$feed_title || !$feed_url) continue;
-
- db_query($link, "BEGIN");
-
- $cat_id = null;
-
- $parent_node = $outline->parentNode;
-
- if ($parent_node && $parent_node->nodeName == "outline") {
- $element_category = $parent_node->attributes->getNamedItem('title')->nodeValue;
- if (!$element_category) $element_category = $parent_node->attributes->getNamedItem('text')->nodeValue;
-
- } else {
- $element_category = '';
- }
-
- if ($element_category) {
-
- $element_category = db_escape_string($element_category);
-
- $result = db_query($link, "SELECT id FROM
- ttrss_feed_categories WHERE title = '$element_category' AND
- owner_uid = '$owner_uid' LIMIT 1");
-
- if (db_num_rows($result) == 1) {
- $cat_id = db_fetch_result($result, 0, "id");
- }
- }
-
- $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
- feed_url = '$feed_url'
- AND owner_uid = '$owner_uid'");
-
- print "<li><a target='_blank' href='$site_url'><b>$feed_title</b></a></b>
- (<a target='_blank' href=\"$feed_url\">rss</a>)&nbsp;";
-
- if (db_num_rows($result) > 0) {
- print __('is already imported.');
- } else {
-
- if ($cat_id) {
- $add_query = "INSERT INTO ttrss_feeds
- (title, feed_url, owner_uid, cat_id, site_url) VALUES
- ('$feed_title', '$feed_url', '$owner_uid',
- '$cat_id', '$site_url')";
-
- } else {
- $add_query = "INSERT INTO ttrss_feeds
- (title, feed_url, owner_uid, cat_id, site_url) VALUES
- ('$feed_title', '$feed_url', '$owner_uid', '$default_cat_id',
- '$site_url')";
-
- }
-
- //print $add_query;
- db_query($link, $add_query);
-
- print __('OK');
- }
-
- print "</li>";
-
- db_query($link, "COMMIT");
- }
-
- } else {
- print_error(__('Error while parsing document.'));
- }
-
- } else {
- print_error(__('Error: please upload OPML file.'));
- }
-
-
- }
-?>
diff --git a/modules/popup-dialog.php b/modules/popup-dialog.php
deleted file mode 100644
index 26b2e7cf6..000000000
--- a/modules/popup-dialog.php
+++ /dev/null
@@ -1,1122 +0,0 @@
-<?php
- function module_popup_dialog($link) {
- $id = $_REQUEST["id"];
- $param = db_escape_string($_REQUEST["param"]);
-
- print "<dlg id=\"$id\">";
-
- if ($id == "importOpml") {
- print "<div class=\"prefFeedOPMLHolder\">";
- header("Content-Type: text/html"); # required for iframe
-
- $owner_uid = $_SESSION["uid"];
-
- db_query($link, "BEGIN");
-
- /* create Imported feeds category just in case */
-
- $result = db_query($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($link, "INSERT INTO ttrss_feed_categories
- (title,owner_uid)
- VALUES ('Imported feeds', '$owner_uid')");
- }
-
- db_query($link, "COMMIT");
-
- /* Handle OPML import by DOMXML/DOMDocument */
-
- if (function_exists('domxml_open_file')) {
- print "<ul class='nomarks'>";
- print "<li>".__("Importing using DOMXML.")."</li>";
- require_once "opml_domxml.php";
- opml_import_domxml($link, $owner_uid);
- print "</ul>";
- } else if (PHP_VERSION >= 5) {
- print "<ul class='nomarks'>";
- print "<li>".__("Importing using DOMDocument.")."</li>";
- require_once "opml_domdoc.php";
- opml_import_domdoc($link, $owner_uid);
- print "</ul>";
- } else {
- print_error(__("DOMXML extension is not found. It is required for PHP versions below 5."));
- }
-
- print "</div>";
-
- print "<div align='center'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('opmlImportDlg').hide()\">".
- __('Close this window')."</button>";
- print "</div>";
-
- print "</div>";
-
- //return;
- }
-
- if ($id == "editPrefProfiles") {
-
- print "<div dojoType=\"dijit.Toolbar\">";
-
-# TODO: depends on selectTableRows() being broken for this list
-# print "<div dojoType=\"dijit.form.DropDownButton\">".
-# "<span>" . __('Select')."</span>";
-# print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
-# print "<div onclick=\"selectTableRows('prefFeedProfileList', 'all')\"
-# dojoType=\"dijit.MenuItem\">".__('All')."</div>";
-# print "<div onclick=\"selectTableRows('prefFeedProfileList', 'none')\"
-# dojoType=\"dijit.MenuItem\">".__('None')."</div>";
-# print "</div></div>";
-
-# print "<div style='float : right'>";
- print "<input name=\"newprofile\" dojoType=\"dijit.form.ValidationTextBox\"
- required=\"1\">
- <button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('profileEditDlg').addProfile()\">".
- __('Create profile')."</button></div>";
-
-# print "</div>";
-
-
- $result = db_query($link, "SELECT title,id FROM ttrss_settings_profiles
- WHERE owner_uid = ".$_SESSION["uid"]." ORDER BY title");
-
- print "<div class=\"prefFeedCatHolder\">";
-
- print "<form id=\"profile_edit_form\" onsubmit=\"return false\">";
-
- print "<table width=\"100%\" class=\"prefFeedProfileList\"
- cellspacing=\"0\" id=\"prefFeedProfileList\">";
-
- print "<tr class=\"\" id=\"FCATR-0\">"; #odd
-
- print "<td width='5%' align='center'><input
- onclick='toggleSelectRow2(this);'
- dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\"></td>";
-
- if (!$_SESSION["profile"]) {
- $is_active = __("(active)");
- } else {
- $is_active = "";
- }
-
- print "<td><span>" .
- __("Default profile") . " $is_active</span></td>";
-
- print "</tr>";
-
- $lnum = 1;
-
- while ($line = db_fetch_assoc($result)) {
-
- $class = ($lnum % 2) ? "even" : "odd";
-
- $profile_id = $line["id"];
- $this_row_id = "id=\"FCATR-$profile_id\"";
-
- print "<tr class=\"\" $this_row_id>";
-
- $edit_title = htmlspecialchars($line["title"]);
-
- print "<td width='5%' align='center'><input
- onclick='toggleSelectRow2(this);'
- dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\"></td>";
-
- if ($_SESSION["profile"] == $line["id"]) {
- $is_active = __("(active)");
- } else {
- $is_active = "";
- }
-
- print "<td><span dojoType=\"dijit.InlineEditBox\"
- width=\"300px\" autoSave=\"false\"
- profile-id=\"$profile_id\">" . $edit_title .
- "<script type=\"dojo/method\" event=\"onChange\" args=\"item\">
- var elem = this;
- dojo.xhrPost({
- url: 'backend.php',
- content: {op: 'rpc', subop: 'saveprofile',
- value: this.value,
- id: this.srcNodeRef.getAttribute('profile-id')},
- load: function(response) {
- elem.attr('value', response);
- }
- });
- </script>
- </span> $is_active</td>";
-
- print "</tr>";
-
- ++$lnum;
- }
-
- print "</table>";
- print "</form>";
- print "</div>";
-
- print "<div class='dlgButtons'>
- <div style='float : left'>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').removeSelected()\">".
- __('Remove selected profiles')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').activateProfile()\">".
- __('Activate profile')."</button>
- </div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('profileEditDlg').hide()\">".
- __('Close this window')."</button>";
- print "</div>";
-
- }
-
- if ($id == "pubOPMLUrl") {
-
- print "<title>".__('Public OPML URL')."</title>";
- print "<content><![CDATA[";
-
- $url_path = opml_publish_url($link);
-
- print __("Your Public OPML URL is:");
-
- print "<div class=\"tagCloudContainer\">";
- print "<a id='pub_opml_url' href='$url_path' target='_blank'>$url_path</a>";
- print "</div>";
-
- print "<div align='center'>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return opmlRegenKey()\">".
- __('Generate new URL')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return closeInfoBox()\">".
- __('Close this window')."</button>";
-
- print "</div>";
- print "]]></content>";
-
- //return;
- }
-
- if ($id == "explainError") {
-
- print "<title>".__('Notice')."</title>";
- print "<content><![CDATA[";
-
- print "<div class=\"errorExplained\">";
-
- if ($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 "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
-
- }
-
- if ($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 "<p>" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
-
- }
-
- print "</div>";
-
- print "<div align='center'>";
-
- print "<button onclick=\"return closeInfoBox()\">".
- __('Close this window')."</button>";
-
- print "</div>";
- print "]]></content>";
-
- //return;
- }
-
- if ($id == "quickAddFeed") {
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"addfeed\">";
-
- print "<div class=\"dlgSec\">".__("Feed")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print "<input style=\"font-size : 16px; width : 20em;\"
- placeHolder=\"".__("Feed URL")."\"
- dojoType=\"dijit.form.ValidationTextBox\" required=\"1\" name=\"feed\" id=\"feedDlg_feedUrl\">";
-
- print "<hr/>";
-
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- print __('Place in category:') . " ";
- print_feed_cat_select($link, "cat", false, 'dojoType="dijit.form.Select"');
- }
-
- print "</div>";
-
- print '<div id="feedDlg_feedsContainer" style="display : none">
-
- <div class="dlgSec">' . __('Available feeds') . '</div>
- <div class="dlgSecCont">'.
- '<select id="feedDlg_feedContainerSelect"
- dojoType="dijit.form.Select" size="3">
- <script type="dojo/method" event="onChange" args="value">
- dijit.byId("feedDlg_feedUrl").attr("value", value);
- </script>
- </select>'.
- '</div></div>';
-
- print "<div id='feedDlg_loginContainer' style='display : none'>
-
- <div class=\"dlgSec\">".__("Authentication")."</div>
- <div class=\"dlgSecCont\">".
-
- " <input dojoType=\"dijit.form.TextBox\" name='login'\"
- placeHolder=\"".__("Login")."\"
- style=\"width : 10em;\"> ".
- " <input
- placeHolder=\"".__("Password")."\"
- dojoType=\"dijit.form.TextBox\" type='password'
- style=\"width : 10em;\" name='pass'\">
- </div></div>";
-
-
- print "<div style=\"clear : both\">
- <input type=\"checkbox\" dojoType=\"dijit.form.CheckBox\" id=\"feedDlg_loginCheck\"
- onclick='checkboxToggleElement(this, \"feedDlg_loginContainer\")'>
- <label for=\"feedDlg_loginCheck\">".
- __('This feed requires authentication.')."</div>";
-
- print "</form>";
-
- print "<div class=\"dlgButtons\">
- <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedAddDlg').execute()\">".__('Subscribe')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"return feedBrowser()\">".__('More feeds')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedAddDlg').hide()\">".__('Cancel')."</button>
- </div>";
-
- //return;
- }
-
- if ($id == "feedBrowser") {
-
- $browser_search = db_escape_string($_REQUEST["search"]);
-
-# print "<form onsubmit='return false;' display='inline'
-# name='feed_browser' id='feed_browser'>";
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"updateFeedBrowser\">";
-
- print "<div dojoType=\"dijit.Toolbar\">
- <div style='float : right'>
- <img style='display : none'
- id='feed_browser_spinner' src='".
- theme_image($link, 'images/indicator_white.gif')."'>
- <input name=\"search\" dojoType=\"dijit.form.TextBox\" size=\"20\" type=\"search\"
- onchange=\"dijit.byId('feedBrowserDlg').update()\" value=\"$browser_search\">
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').update()\">".__('Search')."</button>
- </div>";
-
- print " <select name=\"mode\" dojoType=\"dijit.form.Select\" onchange=\"dijit.byId('feedBrowserDlg').update()\">
- <option value='1'>" . __('Popular feeds') . "</option>
- <option value='2'>" . __('Feed archive') . "</option>
- </select> ";
-
- print __("limit:");
-
- print " <select dojoType=\"dijit.form.Select\" name=\"limit\" onchange=\"dijit.byId('feedBrowserDlg').update()\">";
-
- foreach (array(25, 50, 100, 200) as $l) {
- $issel = ($l == $limit) ? "selected=\"1\"" : "";
- print "<option $issel value=\"$l\">$l</option>";
- }
-
- print "</select> ";
-
- print "</div>";
-
- $owner_uid = $_SESSION["uid"];
-
- print "<ul class='browseFeedList' id='browseFeedList'>";
- print make_feed_browser($link, $search, 25);
- print "</ul>";
-
- print "<div align='center'>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').execute()\">".__('Subscribe')."</button>
- <button dojoType=\"dijit.form.Button\" style='display : none' id='feed_archive_remove' onclick=\"dijit.byId('feedBrowserDlg').removeFromArchive()\">".__('Remove')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedBrowserDlg').hide()\" >".__('Cancel')."</button></div>";
-
- }
-
- if ($id == "search") {
-
- $params = explode(":", db_escape_string($_REQUEST["param"]), 2);
-
- $active_feed_id = sprintf("%d", $params[0]);
- $is_cat = $params[1] != "false";
-
- print "<div class=\"dlgSec\">".__('Look for')."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- if (!SPHINX_ENABLED) {
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\"
- style=\"font-size : 16px; width : 12em;\"
- required=\"1\" name=\"query\" type=\"search\" value=''>";
-
- 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 "<input dojoType=\"dijit.form.ValidationTextBox\"
- style=\"font-size : 16px; width : 20em;\"
- required=\"1\" name=\"query\" type=\"search\" value=''>";
- }
-
-
- print "<hr/>".__('Limit search to:')." ";
-
- print "<select name=\"search_mode\" dojoType=\"dijit.form.Select\">
- <option value=\"all_feeds\">".__('All feeds')."</option>";
-
- $feed_title = getFeedTitle($link, $active_feed_id);
-
- if (!$is_cat) {
- $feed_cat_title = getFeedCatTitle($link, $active_feed_id);
- } else {
- $feed_cat_title = getCategoryTitle($link, $active_feed_id);
- }
-
- if ($active_feed_id && !$is_cat) {
- print "<option selected=\"1\" value=\"this_feed\">$feed_title</option>";
- } else {
- print "<option disabled=\"1\" value=\"false\">".__('This feed')."</option>";
- }
-
- if ($is_cat) {
- $cat_preselected = "selected=\"1\"";
- }
-
- if (get_pref($link, 'ENABLE_FEED_CATS') && ($active_feed_id > 0 || $is_cat)) {
- print "<option $cat_preselected value=\"this_cat\">$feed_cat_title</option>";
- } else {
- //print "<option disabled>".__('This category')."</option>";
- }
-
- print "</select>";
-
- print "</div>";
-
- print "<div class=\"dlgButtons\">";
-
- if (!SPHINX_ENABLED) {
- print "<div style=\"float : left\">
- <a class=\"visibleLink\" target=\"_blank\" href=\"http://tt-rss.org/redmine/wiki/tt-rss/SearchSyntax\">Search syntax</a>
- </div>";
- }
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('searchDlg').execute()\">".__('Search')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('searchDlg').hide()\">".__('Cancel')."</button>
- </div>";
- }
-
- if ($id == "quickAddFilter") {
-
- $active_feed_id = db_escape_string($_REQUEST["param"]);
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-filters\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"quiet\" value=\"1\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"add\">";
-
- $result = db_query($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 "<div class=\"dlgSec\">".__("Match")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- print "<span id=\"filterDlg_dateModBox\" style=\"display : none\">";
-
- $filter_params = array(
- "before" => __("before"),
- "after" => __("after"));
-
- print_select_hash("filter_date_modifier", "before",
- $filter_params, 'dojoType="dijit.form.Select"');
-
- print "&nbsp;</span>";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\"
- required=\"true\" id=\"filterDlg_regExp\"
- style=\"font-size : 16px\"
- name=\"reg_exp\" value=\"$reg_exp\"/>";
-
- print "<span id=\"filterDlg_dateChkBox\" style=\"display : none\">";
- print "&nbsp;<button dojoType=\"dijit.form.Button\"
- onclick=\"return filterDlgCheckDate()\">".
- __('Check it')."</button>";
- print "</span>";
-
- print "<hr/>" . __("on field") . " ";
- print_select_hash("filter_type", 1, $filter_types,
- 'onchange="filterDlgCheckType(this)" dojoType="dijit.form.Select"');
-
- print "<hr/>";
-
- print __("in") . " ";
- print_feed_select($link, "feed_id", $active_feed_id,
- 'dojoType="dijit.form.FilteringSelect"');
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Perform Action")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- print "<select name=\"action_id\" dojoType=\"dijit.form.Select\"
- onchange=\"filterDlgCheckAction(this)\">";
-
- $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
- ORDER BY name");
-
- while ($line = db_fetch_assoc($result)) {
- printf("<option value='%d'>%s</option>", $line["id"], __($line["description"]));
- }
-
- print "</select>";
-
- print "<span id=\"filterDlg_paramBox\" style=\"display : none\">";
- print " " . __("with parameters:") . " ";
- print "<input dojoType=\"dijit.form.TextBox\"
- id=\"filterDlg_actionParam\"
- name=\"action_param\">";
-
- print_label_select($link, "action_param_label", $action_param,
- 'id="filterDlg_actionParamLabel" dojoType="dijit.form.Select"');
-
- print "</span>";
-
- print "&nbsp;"; // tiny layout hack
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Options")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"enabled\" id=\"enabled\" checked=\"1\">
- <label for=\"enabled\">".__('Enabled')."</label><hr/>";
-
- print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"inverse\" id=\"inverse\">
- <label for=\"inverse\">".__('Inverse match')."</label>";
-
- print "</div>";
-
- print "<div class=\"dlgButtons\">";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('filterEditDlg').test()\">".
- __('Test')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('filterEditDlg').execute()\">".
- __('Create')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('filterEditDlg').hide()\">".
- __('Cancel')."</button>";
-
- print "</div>";
-
- //return;
- }
-
- if ($id == "inactiveFeeds") {
-
- if (DB_TYPE == "pgsql") {
- $interval_qpart = "NOW() - INTERVAL '3 months'";
- } else {
- $interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)";
- }
-
- $result = db_query($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 "<div class=\"inactiveFeedHolder\">";
-
- print "<table width=\"100%\" cellspacing=\"0\" id=\"prefInactiveFeedList\">";
-
- $lnum = 1;
-
- while ($line = db_fetch_assoc($result)) {
-
- $class = ($lnum % 2) ? "even" : "odd";
- $feed_id = $line["id"];
- $this_row_id = "id=\"FUPDD-$feed_id\"";
-
- print "<tr class=\"\" $this_row_id>";
-
- $edit_title = htmlspecialchars($line["title"]);
-
- print "<td width='5%' align='center'><input
- onclick='toggleSelectRow2(this);' dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\"></td>";
- print "<td>";
-
- print "<a class=\"visibleLink\" href=\"#\" ".
- "title=\"".__("Click to edit feed")."\" ".
- "onclick=\"editFeed(".$line["id"].")\">".
- htmlspecialchars($line["title"])."</a>";
-
- print "</td><td class=\"insensitive\" align='right'>";
- print make_local_datetime($link, $line['last_article'], false);
- print "</td>";
- print "</tr>";
-
- ++$lnum;
- }
-
- print "</table>";
- print "</div>";
-
- print "<div class='dlgButtons'>";
- print "<div style='float : left'>";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('inactiveFeedsDlg').removeSelected()\">"
- .__('Unsubscribe from selected feeds')."</button> ";
- print "</div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('inactiveFeedsDlg').hide()\">".
- __('Close this window')."</button>";
-
- print "</div>";
-
- }
-
- if ($id == "feedsWithErrors") {
-
-# print "<title>".__('Feeds with update errors')."</title>";
-# print "<content><![CDATA[";
-
- print __("These feeds have not been updated because of errors:");
-
- $result = db_query($link, "SELECT id,title,feed_url,last_error,site_url
- FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
-
- print "<div class=\"inactiveFeedHolder\">";
-
- print "<table width=\"100%\" cellspacing=\"0\" id=\"prefErrorFeedList\">";
-
- $lnum = 1;
-
- while ($line = db_fetch_assoc($result)) {
-
- $class = ($lnum % 2) ? "even" : "odd";
- $feed_id = $line["id"];
- $this_row_id = "id=\"FUPDD-$feed_id\"";
-
- print "<tr class=\"\" $this_row_id>";
-
- $edit_title = htmlspecialchars($line["title"]);
-
- print "<td width='5%' align='center'><input
- onclick='toggleSelectRow2(this);' dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\"></td>";
- print "<td>";
-
- print "<a class=\"visibleLink\" href=\"#\" ".
- "title=\"".__("Click to edit feed")."\" ".
- "onclick=\"editFeed(".$line["id"].")\">".
- htmlspecialchars($line["title"])."</a>: ";
-
- print "<span class=\"insensitive\">";
- print htmlspecialchars($line["last_error"]);
- print "</span>";
-
- print "</td>";
- print "</tr>";
-
- ++$lnum;
- }
-
- print "</table>";
- print "</div>";
-
- print "<div class='dlgButtons'>";
- print "<div style='float : left'>";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('errorFeedsDlg').removeSelected()\">"
- .__('Unsubscribe from selected feeds')."</button> ";
- print "</div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('errorFeedsDlg').hide()\">".
- __('Close this window')."</button>";
-
- print "</div>";
- }
-
- if ($id == "editArticleTags") {
-
-# print "<form id=\"tag_edit_form\" onsubmit='return false'>";
-
- print __("Tags for this article (separated by commas):")."<br>";
-
- $tags = get_article_tags($link, $param);
-
- $tags_str = join(", ", $tags);
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$param\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"setArticleTags\">";
-
- print "<table width='100%'><tr><td>";
-
- print "<textarea dojoType=\"dijit.form.SimpleTextarea\" rows='4'
- style='font-size : 12px; width : 100%' id=\"tags_str\"
- name='tags_str'>$tags_str</textarea>
- <div class=\"autocomplete\" id=\"tags_choices\"
- style=\"display:none\"></div>";
-
- print "</td></tr></table>";
-
-# print "</form>";
-
- print "<div class='dlgButtons'>";
-
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('editTagsDlg').execute()\">".__('Save')."</button> ";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('editTagsDlg').hide()\">".__('Cancel')."</button>";
- print "</div>";
-
- }
-
- if ($id == "printTagCloud") {
- print "<title>".__('Tag Cloud')."</title>";
- print "<content><![CDATA[";
-
-# print __("Showing most popular tags ")." (<a
-# href='javascript:toggleTags(true)'>".__('more tags')."</a>):<br/>";
-
- print "<div class=\"tagCloudContainer\">";
-
- printTagCloud($link);
-
- print "</div>";
-
- print "<div align='center'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return closeInfoBox()\">".
- __('Close this window')."</button>";
- print "</div>";
-
- print "]]></content>";
- }
-
- if ($id == 'printTagSelect') {
- print "<title>" . __('Select item(s) by tags') . "</title>";
- print "<content><![CDATA[";
-
- print __("Match:"). "&nbsp;" .
- "<input class=\"noborder\" dojoType=\"dijit.form.RadioButton\" type=\"radio\" checked value=\"any\" name=\"tag_mode\">&nbsp;Any&nbsp;";
- print "<input class=\"noborder\" dojoType=\"dijit.form.RadioButton\" type=\"radio\" value=\"all\" name=\"tag_mode\">&nbsp;All&nbsp;";
- print "&nbsp;tags.";
-
- print "<select id=\"all_tags\" name=\"all_tags\" title=\"" . __('Which Tags?') . "\" multiple=\"multiple\" size=\"10\" style=\"width : 100%\">";
- $result = db_query($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 "<option value=\"" . str_replace(" ", "%20", $tmp) . "\">$tmp</option>";
- }
-
- print "</select>";
-
- print "<div align='right'>";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"viewfeed(get_all_tags($('all_tags')),
- get_radio_checked($('tag_mode')));\">" . __('Display entries') . "</button>";
- print "&nbsp;";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return closeInfoBox()\">" .
- __('Close this window') . "</button>";
- print "</div>";
-
- print "]]></content>";
- }
-
- if ($id == "emailArticle") {
-
- $secretkey = sha1(uniqid(rand(), true));
-
- $_SESSION['email_secretkey'] = $secretkey;
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"secretkey\" value=\"$secretkey\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"sendEmail\">";
-
- $result = db_query($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"]);
-
-// $tpl->addBlock('header');
-
- $result = db_query($link, "SELECT link, content, title
- FROM ttrss_user_entries, ttrss_entries WHERE id = ref_id AND
- id IN ($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 "<table width='100%'><tr><td>";
-
- print __('From:');
-
- print "</td><td>";
-
- print "<input dojoType=\"dijit.form.TextBox\" disabled=\"1\" style=\"width : 30em;\"
- value=\"$user_name <$user_email>\">";
-
- print "</td></tr><tr><td>";
-
- print __('To:');
-
- print "</td><td>";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"true\"
- style=\"width : 30em;\"
- name=\"destination\" id=\"emailArticleDlg_destination\">";
-
- print "<div class=\"autocomplete\" id=\"emailArticleDlg_dst_choices\"
- style=\"z-index: 30; display : none\"></div>";
-
- print "</td></tr><tr><td>";
-
- print __('Subject:');
-
- print "</td><td>";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"true\"
- style=\"width : 30em;\"
- name=\"subject\" value=\"$subject\" id=\"subject\">";
-
- print "</td></tr>";
-
- print "<tr><td colspan='2'><textarea dojoType=\"dijit.form.SimpleTextarea\" style='font-size : 12px; width : 100%' rows=\"20\"
- name='content'>$content</textarea>";
-
- print "</td></tr></table>";
-
- print "<div class='dlgButtons'>";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('emailArticleDlg').execute()\">".__('Send e-mail')."</button> ";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('emailArticleDlg').hide()\">".__('Cancel')."</button>";
- print "</div>";
-
- //return;
- }
-
- if ($id == "generatedFeed") {
-
- print "<title>".__('View as RSS')."</title>";
- print "<content><![CDATA[";
-
- $params = explode(":", $param, 3);
- $feed_id = db_escape_string($params[0]);
- $is_cat = (bool) $params[1];
-
- $key = get_feed_access_key($link, $feed_id, $is_cat);
-
- $url_path = htmlspecialchars($params[2]) . "&key=" . $key;
-
- print __("You can view this feed as RSS using the following URL:");
-
- print "<div class=\"tagCloudContainer\">";
- print "<a id='gen_feed_url' href='$url_path' target='_blank'>$url_path</a>";
- print "</div>";
-
- print "<div align='center'>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return genUrlChangeKey('$feed_id', '$is_cat')\">".
- __('Generate new URL')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return closeInfoBox()\">".
- __('Close this window')."</button>";
-
- print "</div>";
- print "]]></content>";
-
- //return;
- }
-
- if ($id == "newVersion") {
- $version_data = check_for_update($link);
- $version = $version_data['version'];
- $id = $version_data['version_id'];
-
- print "<div class='tagCloudContainer'>";
-
- print T_sprintf("New version of Tiny Tiny RSS is available (%s).",
- "<b>$version</b>");
-
- print "</div>";
-
- $details = "http://tt-rss.org/redmine/versions/show/$id";
- $download = "http://tt-rss.org/#Download";
-
- print "<div style='text-align : center'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return window.open('$details')\">".__("Details")."</button>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return window.open('$download')\">".__("Download")."</button>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('newVersionDlg').hide()\">".
- __('Close this window')."</button>";
- print "</div>";
-
- }
-
- if ($id == "customizeCSS") {
-
- $value = get_pref($link, "USER_STYLESHEET");
-
- $value = str_replace("<br/>", "\n", $value);
-
- print T_sprintf("You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink\" href=\"%s\">This file</a> can be used as a baseline.", "tt-rss.css");
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"setpref\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"key\" value=\"USER_STYLESHEET\">";
-
- print "<table width='100%'><tr><td>";
- print "<textarea dojoType=\"dijit.form.SimpleTextarea\"
- style='font-size : 12px; width : 100%; height: 200px;'
- placeHolder='body#ttrssMain { font-size : 14px; };'
- name='value'>$value</textarea>";
- print "</td></tr></table>";
-
- print "<div class='dlgButtons'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('cssEditDlg').execute()\">".__('Save')."</button> ";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('cssEditDlg').hide()\">".__('Cancel')."</button>";
- print "</div>";
-
- }
-
- if ($id == "editArticleNote") {
-
- $result = db_query($link, "SELECT note FROM ttrss_user_entries WHERE
- ref_id = '$param' AND owner_uid = " . $_SESSION['uid']);
-
- $note = db_fetch_result($result, 0, "note");
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$param\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"setNote\">";
-
- print "<table width='100%'><tr><td>";
- print "<textarea dojoType=\"dijit.form.SimpleTextarea\"
- style='font-size : 12px; width : 100%; height: 100px;'
- placeHolder='body#ttrssMain { font-size : 14px; };'
- name='note'>$note</textarea>";
- print "</td></tr></table>";
-
- print "<div class='dlgButtons'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('editNoteDlg').execute()\">".__('Save')."</button> ";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"dijit.byId('editNoteDlg').hide()\">".__('Cancel')."</button>";
- print "</div>";
-
- }
-
- if ($id == "about") {
- print "<table width='100%'><tr><td align='center'>";
- print "<img src=\"images/logo_big.png\">";
- print "</td>";
- print "<td width='70%'>";
-
- print "<h1>Tiny Riny RSS</h1>
- <strong>Version ".VERSION."</strong>
- <p>Copyright &copy; 2005-".date('Y')."
- <a target=\"_blank\" class=\"visibleLink\"
- href=\"http://fakecake.org/\">Andrew Dolgov</a>
- and other contributors.</p>
- <p class=\"insensitive\">Licensed under GNU GPL version 2.</p>";
-
- print "<p class=\"insensitive\">
- <a class=\"visibleLink\" target=\"_blank\"
- href=\"http://tt-rss.org/\">Official site</a> &mdash;
- <a href=\"http://tt-rss.org/redmine/wiki/tt-rss/Donate\"
- target=\"_blank\" class=\"visibleLink\">
- Support the project.</a></p>";
-
- print "</td></tr>";
- print "</table>";
-
- print "<div align='center'>";
- print "<button dojoType=\"dijit.form.Button\"
- type=\"submit\">".
- __('Close this window')."</button>";
- print "</div>";
- }
-
- if ($id == "addInstance") {
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-instances\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"add\">";
-
- print "<div class=\"dlgSec\">".__("Instance")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- /* URL */
-
- print __("URL:") . " ";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Instance URL")."\"
- regExp='^(http|https)://.*'
- style=\"font-size : 16px; width: 20em\" name=\"access_url\">";
-
- print "<hr/>";
-
- $access_key = sha1(uniqid(rand(), true));
-
- /* Access key */
-
- print __("Access key:") . " ";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Access key")."\" regExp='\w{40}'
- style=\"width: 20em\" name=\"access_key\" id=\"instance_add_key\"
- value=\"$access_key\">";
-
- print "<p class='insensitive'>" . __("Use one access key for both linked instances.");
-
- print "</div>";
-
- print "<div class=\"dlgButtons\">
- <div style='float : left'>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceAddDlg').regenKey()\">".
- __('Generate new key')."</button>
- </div>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceAddDlg').execute()\">".
- __('Create link')."</button>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceAddDlg').hide()\"\">".
- __('Cancel')."</button></div>";
-
- return;
- }
-
- if ($id == "shareArticle") {
-
- $result = db_query($link, "SELECT uuid, ref_id FROM ttrss_user_entries WHERE int_id = '$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($link, "UPDATE ttrss_user_entries SET uuid = '$uuid' WHERE int_id = '$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 "<div class=\"tagCloudContainer\">";
- print "<a id='pub_opml_url' href='$url_path' target='_blank'>$url_path</a>";
- print "</div>";
-
- /* if (!label_find_id($link, __('Shared'), $_SESSION["uid"]))
- label_create($link, __('Shared'), $_SESSION["uid"]);
-
- label_add_article($link, $ref_id, __('Shared'), $_SESSION['uid']); */
- }
-
- print "<div align='center'>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('shareArticleDlg').hide()\">".
- __('Close this window')."</button>";
-
- print "</div>";
-
- return;
- }
-
- print "</dlg>";
-
- }
-?>
diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php
deleted file mode 100644
index bbae468bf..000000000
--- a/modules/pref-feeds.php
+++ /dev/null
@@ -1,1685 +0,0 @@
-<?php
-
- function batch_edit_cbox($elem, $label = false) {
- print "<input type=\"checkbox\" title=\"".__("Check to enable field")."\"
- onchange=\"dijit.byId('feedEditDlg').toggleField(this, '$elem', '$label')\">";
- }
-
- function module_pref_feeds($link) {
-
- global $update_intervals;
- global $purge_intervals;
- global $update_methods;
-
- $subop = $_REQUEST["subop"];
- $quiet = $_REQUEST["quiet"];
- $mode = $_REQUEST["mode"];
-
- if ($subop == "renamecat") {
- $title = db_escape_string($_REQUEST['title']);
- $id = db_escape_string($_REQUEST['id']);
-
- if ($title) {
- db_query($link, "UPDATE ttrss_feed_categories SET
- title = '$title' WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]);
- }
- return;
- }
-
- if ($subop == "remtwitterinfo") {
-
- db_query($link, "UPDATE ttrss_users SET twitter_oauth = NULL
- WHERE id = " . $_SESSION['uid']);
-
- return;
- }
-
- if ($subop == "getfeedtree") {
-
- $search = $_SESSION["prefs_feed_search"];
-
- if ($search) $search_qpart = " AND LOWER(title) LIKE LOWER('%$search%')";
-
- $root = array();
- $root['id'] = 'root';
- $root['name'] = __('Feeds');
- $root['items'] = array();
- $root['type'] = 'category';
-
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
-
- $result = db_query($link, "SELECT id, title FROM ttrss_feed_categories
- WHERE owner_uid = " . $_SESSION["uid"] . " ORDER BY order_id, title");
-
- while ($line = db_fetch_assoc($result)) {
- $cat = array();
- $cat['id'] = 'CAT:' . $line['id'];
- $cat['bare_id'] = $feed_id;
- $cat['name'] = $line['title'];
- $cat['items'] = array();
- $cat['checkbox'] = false;
- $cat['type'] = 'category';
-
- $feed_result = db_query($link, "SELECT id, title, last_error,
- ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
- FROM ttrss_feeds
- WHERE cat_id = '".$line['id']."' AND owner_uid = ".$_SESSION["uid"].
- "$search_qpart ORDER BY order_id, title");
-
- while ($feed_line = db_fetch_assoc($feed_result)) {
- $feed = array();
- $feed['id'] = 'FEED:' . $feed_line['id'];
- $feed['bare_id'] = $feed_line['id'];
- $feed['name'] = $feed_line['title'];
- $feed['checkbox'] = false;
- $feed['error'] = $feed_line['last_error'];
- $feed['icon'] = getFeedIcon($feed_line['id']);
- $feed['param'] = make_local_datetime($link,
- $feed_line['last_updated'], true);
-
- array_push($cat['items'], $feed);
- }
-
- $cat['param'] = T_sprintf('(%d feeds)', count($cat['items']));
-
- if (count($cat['items']) > 0)
- array_push($root['items'], $cat);
-
- $root['param'] += count($cat['items']);
- }
-
- /* Uncategorized is a special case */
-
- $cat = array();
- $cat['id'] = 'CAT:0';
- $cat['bare_id'] = 0;
- $cat['name'] = __("Uncategorized");
- $cat['items'] = array();
- $cat['type'] = 'category';
- $cat['checkbox'] = false;
-
- $feed_result = db_query($link, "SELECT id, title,last_error,
- ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
- FROM ttrss_feeds
- WHERE cat_id IS NULL AND owner_uid = ".$_SESSION["uid"].
- "$search_qpart ORDER BY order_id, title");
-
- while ($feed_line = db_fetch_assoc($feed_result)) {
- $feed = array();
- $feed['id'] = 'FEED:' . $feed_line['id'];
- $feed['bare_id'] = $feed_line['id'];
- $feed['name'] = $feed_line['title'];
- $feed['checkbox'] = false;
- $feed['error'] = $feed_line['last_error'];
- $feed['icon'] = getFeedIcon($feed_line['id']);
- $feed['param'] = make_local_datetime($link,
- $feed_line['last_updated'], true);
-
- array_push($cat['items'], $feed);
- }
-
- $cat['param'] = T_sprintf('(%d feeds)', count($cat['items']));
-
- if (count($cat['items']) > 0)
- array_push($root['items'], $cat);
-
- $root['param'] += count($cat['items']);
- $root['param'] = T_sprintf('(%d feeds)', $root['param']);
-
- } else {
- $feed_result = db_query($link, "SELECT id, title, last_error,
- ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
- FROM ttrss_feeds
- WHERE owner_uid = ".$_SESSION["uid"].
- "$search_qpart ORDER BY order_id, title");
-
- while ($feed_line = db_fetch_assoc($feed_result)) {
- $feed = array();
- $feed['id'] = 'FEED:' . $feed_line['id'];
- $feed['bare_id'] = $feed_line['id'];
- $feed['name'] = $feed_line['title'];
- $feed['checkbox'] = false;
- $feed['error'] = $feed_line['last_error'];
- $feed['icon'] = getFeedIcon($feed_line['id']);
- $feed['param'] = make_local_datetime($link,
- $feed_line['last_updated'], true);
-
- array_push($root['items'], $feed);
- }
-
- $root['param'] = T_sprintf('(%d feeds)', count($root['items']));
-
- }
-
- $fl = array();
- $fl['identifier'] = 'id';
- $fl['label'] = 'name';
- $fl['items'] = array($root);
-
- print json_encode($fl);
- return;
- }
-
- if ($subop == "catsortreset") {
- db_query($link, "UPDATE ttrss_feed_categories
- SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"]);
- return;
- }
-
- if ($subop == "feedsortreset") {
- db_query($link, "UPDATE ttrss_feeds
- SET order_id = 0 WHERE owner_uid = " . $_SESSION["uid"]);
- return;
- }
-
- if ($subop == "savefeedorder") {
-# if ($_POST['payload']) {
-# file_put_contents("/tmp/blahblah.txt", $_POST['payload']);
-# $data = json_decode($_POST['payload'], true);
-# } else {
-# $data = json_decode(file_get_contents("/tmp/blahblah.txt"), true);
-# }
-
- $data = json_decode($_POST['payload'], true);
-
- if (is_array($data) && is_array($data['items'])) {
- $cat_order_id = 0;
-
- $data_map = array();
-
- foreach ($data['items'] as $item) {
-
- if ($item['id'] != 'root') {
- if (is_array($item['items'])) {
- if (isset($item['items']['_reference'])) {
- $data_map[$item['id']] = array($item['items']);
- } else {
- $data_map[$item['id']] =& $item['items'];
- }
- }
- }
- }
-
- foreach ($data['items'][0]['items'] as $item) {
- $id = $item['_reference'];
- $bare_id = substr($id, strpos($id, ':')+1);
-
- ++$cat_order_id;
-
- if ($bare_id > 0) {
- db_query($link, "UPDATE ttrss_feed_categories
- SET order_id = '$cat_order_id' WHERE id = '$bare_id' AND
- owner_uid = " . $_SESSION["uid"]);
- }
-
- $feed_order_id = 0;
-
- if (is_array($data_map[$id])) {
- foreach ($data_map[$id] as $feed) {
- $id = $feed['_reference'];
- $feed_id = substr($id, strpos($id, ':')+1);
-
- if ($bare_id != 0)
- $cat_query = "cat_id = '$bare_id'";
- else
- $cat_query = "cat_id = NULL";
-
- db_query($link, "UPDATE ttrss_feeds
- SET order_id = '$feed_order_id',
- $cat_query
- WHERE id = '$feed_id' AND
- owner_uid = " . $_SESSION["uid"]);
-
- ++$feed_order_id;
- }
- }
- }
- }
-
- return;
- }
-
- if ($subop == "removeicon") {
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
-
- $result = db_query($link, "SELECT id FROM ttrss_feeds
- WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]);
-
- if (db_num_rows($result) != 0) {
- unlink(ICONS_DIR . "/$feed_id.ico");
- }
-
- return;
- }
-
- if ($subop == "uploadicon") {
- $icon_file = $_FILES['icon_file']['tmp_name'];
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
-
- if (is_file($icon_file) && $feed_id) {
- if (filesize($icon_file) < 20000) {
-
- $result = db_query($link, "SELECT id FROM ttrss_feeds
- WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]);
-
- if (db_num_rows($result) != 0) {
- unlink(ICONS_DIR . "/$feed_id.ico");
- move_uploaded_file($icon_file, ICONS_DIR . "/$feed_id.ico");
- $rc = 0;
- } else {
- $rc = 2;
- }
- } else {
- $rc = 1;
- }
- } else {
- $rc = 2;
- }
-
- print "<script type=\"text/javascript\">";
- print "parent.uploadIconHandler($rc);";
- print "</script>";
- return;
- }
-
- if ($subop == "editfeed") {
-
- $feed_id = db_escape_string($_REQUEST["id"]);
-
- $result = db_query($link,
- "SELECT * FROM ttrss_feeds WHERE id = '$feed_id' AND
- owner_uid = " . $_SESSION["uid"]);
-
- $title = htmlspecialchars(db_fetch_result($result,
- 0, "title"));
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$feed_id\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-feeds\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"editSave\">";
-
- print "<div class=\"dlgSec\">".__("Feed")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- /* Title */
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Feed Title")."\"
- style=\"font-size : 16px; width: 20em\" name=\"title\" value=\"$title\">";
-
- /* Feed URL */
-
- $feed_url = db_fetch_result($result, 0, "feed_url");
- $feed_url = htmlspecialchars(db_fetch_result($result,
- 0, "feed_url"));
-
- print "<hr/>";
-
- print __('URL:') . " ";
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Feed URL")."\"
- regExp='^(http|https)://.*' style=\"width : 20em\"
- name=\"feed_url\" value=\"$feed_url\">";
-
- $last_error = db_fetch_result($result, 0, "last_error");
-
- if ($last_error) {
- print "&nbsp;<span title=\"".htmlspecialchars($last_error)."\"
- class=\"feed_error\">(error)</span>";
-
- }
-
- /* Category */
-
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
-
- $cat_id = db_fetch_result($result, 0, "cat_id");
-
- print "<hr/>";
-
- print __('Place in category:') . " ";
-
- print_feed_cat_select($link, "cat_id", $cat_id,
- 'dojoType="dijit.form.Select"');
- }
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Update")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- /* Update Interval */
-
- $update_interval = db_fetch_result($result, 0, "update_interval");
-
- print_select_hash("update_interval", $update_interval, $update_intervals,
- 'dojoType="dijit.form.Select"');
-
- /* Update method */
-
- $update_method = db_fetch_result($result, 0, "update_method",
- 'dojoType="dijit.form.Select"');
-
- print " " . __('using') . " ";
- print_select_hash("update_method", $update_method, $update_methods,
- 'dojoType="dijit.form.Select"');
-
- $purge_interval = db_fetch_result($result, 0, "purge_interval");
-
-
- /* Purge intl */
-
- print "<hr/>";
- print __('Article purging:') . " ";
-
- print_select_hash("purge_interval", $purge_interval, $purge_intervals,
- 'dojoType="dijit.form.Select" ' .
- ((FORCE_ARTICLE_PURGE == 0) ? "" : 'disabled="1"'));
-
- print "</div>";
- print "<div class=\"dlgSec\">".__("Authentication")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- $auth_login = htmlspecialchars(db_fetch_result($result, 0, "auth_login"));
-
-# print "<table>";
-
-# print "<tr><td>" . __('Login:') . "</td><td>";
-
- print "<input dojoType=\"dijit.form.TextBox\" id=\"feedEditDlg_login\"
- placeHolder=\"".__("Login")."\"
- name=\"auth_login\" value=\"$auth_login\"><hr/>";
-
-# print "</tr><tr><td>" . __("Password:") . "</td><td>";
-
- $auth_pass = htmlspecialchars(db_fetch_result($result, 0, "auth_pass"));
-
- print "<input dojoType=\"dijit.form.TextBox\" type=\"password\" name=\"auth_pass\"
- placeHolder=\"".__("Password")."\"
- value=\"$auth_pass\">";
-
- print "<div dojoType=\"dijit.Tooltip\" connectId=\"feedEditDlg_login\" position=\"below\">
- ".__('<b>Hint:</b> you need to fill in your login information if your feed requires authentication, except for Twitter feeds.')."
- </div>";
-
-# print "</td></tr></table>";
-
- print "</div>";
- print "<div class=\"dlgSec\">".__("Options")."</div>";
- print "<div class=\"dlgSecCont\">";
-
-# print "<div style=\"line-height : 100%\">";
-
- $private = sql_bool_to_bool(db_fetch_result($result, 0, "private"));
-
- if ($private) {
- $checked = "checked=\"1\"";
- } else {
- $checked = "";
- }
-
- print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"private\" id=\"private\"
- $checked>&nbsp;<label for=\"private\">".__('Hide from Popular feeds')."</label>";
-
- $rtl_content = sql_bool_to_bool(db_fetch_result($result, 0, "rtl_content"));
-
- if ($rtl_content) {
- $checked = "checked=\"1\"";
- } else {
- $checked = "";
- }
-
- print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"rtl_content\" name=\"rtl_content\"
- $checked>&nbsp;<label for=\"rtl_content\">".__('Right-to-left content')."</label>";
-
- $include_in_digest = sql_bool_to_bool(db_fetch_result($result, 0, "include_in_digest"));
-
- if ($include_in_digest) {
- $checked = "checked=\"1\"";
- } else {
- $checked = "";
- }
-
- print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"include_in_digest\"
- name=\"include_in_digest\"
- $checked>&nbsp;<label for=\"include_in_digest\">".__('Include in e-mail digest')."</label>";
-
-
- $always_display_enclosures = sql_bool_to_bool(db_fetch_result($result, 0, "always_display_enclosures"));
-
- if ($always_display_enclosures) {
- $checked = "checked";
- } else {
- $checked = "";
- }
-
- print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"always_display_enclosures\"
- name=\"always_display_enclosures\"
- $checked>&nbsp;<label for=\"always_display_enclosures\">".__('Always display image attachments')."</label>";
-
-
- $cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images"));
-
- if ($cache_images) {
- $checked = "checked=\"1\"";
- } else {
- $checked = "";
- }
-
- if (SIMPLEPIE_CACHE_IMAGES) {
- print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"cache_images\"
- name=\"cache_images\"
- $checked>&nbsp;<label for=\"cache_images\">".
- __('Cache images locally (SimplePie only)')."</label>";
- }
-
- $mark_unread_on_update = sql_bool_to_bool(db_fetch_result($result, 0, "mark_unread_on_update"));
-
- if ($mark_unread_on_update) {
- $checked = "checked";
- } else {
- $checked = "";
- }
-
- print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"mark_unread_on_update\"
- name=\"mark_unread_on_update\"
- $checked>&nbsp;<label for=\"mark_unread_on_update\">".__('Mark updated articles as unread')."</label>";
-
- $update_on_checksum_change = sql_bool_to_bool(db_fetch_result($result, 0, "update_on_checksum_change"));
-
- if ($update_on_checksum_change) {
- $checked = "checked";
- } else {
- $checked = "";
- }
-
- print "<hr/><input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" id=\"update_on_checksum_change\"
- name=\"update_on_checksum_change\"
- $checked>&nbsp;<label for=\"update_on_checksum_change\">".__('Mark posts as updated on content change')."</label>";
-
-# print "</div>";
- print "</div>";
-
- /* Icon */
-
- print "<div class=\"dlgSec\">".__("Icon")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print "<iframe name=\"icon_upload_iframe\"
- style=\"width: 400px; height: 100px; display: none;\"></iframe>";
-
- print "<form style='display : block' target=\"icon_upload_iframe\"
- enctype=\"multipart/form-data\" method=\"POST\"
- action=\"backend.php\">
- <input id=\"icon_file\" size=\"10\" name=\"icon_file\" type=\"file\">
- <input type=\"hidden\" name=\"op\" value=\"pref-feeds\">
- <input type=\"hidden\" name=\"feed_id\" value=\"$feed_id\">
- <input type=\"hidden\" name=\"subop\" value=\"uploadicon\">
- <button dojoType=\"dijit.form.Button\" onclick=\"return uploadFeedIcon();\"
- type=\"submit\">".__('Replace')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"return removeFeedIcon($feed_id);\"
- type=\"submit\">".__('Remove')."</button>
- </form>";
-
- print "</div>";
-
- $title = htmlspecialchars($title, ENT_QUOTES);
-
- print "<div class='dlgButtons'>
- <div style=\"float : left\">
- <button dojoType=\"dijit.form.Button\" onclick='return unsubscribeFeed($feed_id, \"$title\")'>".
- __('Unsubscribe')."</button>";
-
- if (PUBSUBHUBBUB_ENABLED) {
- $pubsub_state = db_fetch_result($result, 0, "pubsub_state");
- $pubsub_btn_disabled = ($pubsub_state == 2) ? "" : "disabled=\"1\"";
-
- print "<button dojoType=\"dijit.form.Button\" id=\"pubsubReset_Btn\" $pubsub_btn_disabled
- onclick='return resetPubSub($feed_id, \"$title\")'>".__('Resubscribe to push updates').
- "</button>";
- }
-
- print "</div>";
-
- print "<div dojoType=\"dijit.Tooltip\" connectId=\"pubsubReset_Btn\" position=\"below\">".
- __('Resets PubSubHubbub subscription status for push-enabled feeds.')."</div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').execute()\">".__('Save')."</button>
- <button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('feedEditDlg').hide()\">".__('Cancel')."</button>
- </div>";
-
- return;
- }
-
- if ($subop == "editfeeds") {
-
- $feed_ids = db_escape_string($_REQUEST["ids"]);
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"ids\" value=\"$feed_ids\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-feeds\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"batchEditSave\">";
-
- print "<div class=\"dlgSec\">".__("Feed")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- /* Title */
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\"
- disabled=\"1\" style=\"font-size : 16px; width : 20em;\" required=\"1\"
- name=\"title\" value=\"$title\">";
-
- batch_edit_cbox("title");
-
- /* Feed URL */
-
- print "<br/>";
-
- print __('URL:') . " ";
- print "<input dojoType=\"dijit.form.ValidationTextBox\" disabled=\"1\"
- required=\"1\" regExp='^(http|https)://.*' style=\"width : 20em\"
- name=\"feed_url\" value=\"$feed_url\">";
-
- batch_edit_cbox("feed_url");
-
- /* Category */
-
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
-
- print "<br/>";
-
- print __('Place in category:') . " ";
-
- print_feed_cat_select($link, "cat_id", $cat_id,
- 'disabled="1" dojoType="dijit.form.Select"');
-
- batch_edit_cbox("cat_id");
-
- }
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Update")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- /* Update Interval */
-
- print_select_hash("update_interval", $update_interval, $update_intervals,
- 'disabled="1" dojoType="dijit.form.Select"');
-
- batch_edit_cbox("update_interval");
-
- /* Update method */
-
- print " " . __('using') . " ";
- print_select_hash("update_method", $update_method, $update_methods,
- 'disabled="1" dojoType="dijit.form.Select"');
- batch_edit_cbox("update_method");
-
- /* Purge intl */
-
- if (FORCE_ARTICLE_PURGE == 0) {
-
- print "<br/>";
-
- print __('Article purging:') . " ";
-
- print_select_hash("purge_interval", $purge_interval, $purge_intervals,
- 'disabled="1" dojoType="dijit.form.Select"');
-
- batch_edit_cbox("purge_interval");
- }
-
- print "</div>";
- print "<div class=\"dlgSec\">".__("Authentication")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print "<input dojoType=\"dijit.form.TextBox\"
- placeHolder=\"".__("Login")."\" disabled=\"1\"
- name=\"auth_login\" value=\"$auth_login\">";
-
- batch_edit_cbox("auth_login");
-
- print "<br/><input dojoType=\"dijit.form.TextBox\" type=\"password\" name=\"auth_pass\"
- placeHolder=\"".__("Password")."\" disabled=\"1\"
- value=\"$auth_pass\">";
-
- batch_edit_cbox("auth_pass");
-
- print "</div>";
- print "<div class=\"dlgSec\">".__("Options")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print "<input disabled=\"1\" type=\"checkbox\" name=\"private\" id=\"private\"
- dojoType=\"dijit.form.CheckBox\">&nbsp;<label id=\"private_l\" class='insensitive' for=\"private\">".__('Hide from Popular feeds')."</label>";
-
- print "&nbsp;"; batch_edit_cbox("private", "private_l");
-
- print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"rtl_content\" name=\"rtl_content\"
- dojoType=\"dijit.form.CheckBox\">&nbsp;<label class='insensitive' id=\"rtl_content_l\" for=\"rtl_content\">".__('Right-to-left content')."</label>";
-
- print "&nbsp;"; batch_edit_cbox("rtl_content", "rtl_content_l");
-
- print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"include_in_digest\"
- name=\"include_in_digest\"
- dojoType=\"dijit.form.CheckBox\">&nbsp;<label id=\"include_in_digest_l\" class='insensitive' for=\"include_in_digest\">".__('Include in e-mail digest')."</label>";
-
- print "&nbsp;"; batch_edit_cbox("include_in_digest", "include_in_digest_l");
-
- print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"always_display_enclosures\"
- name=\"always_display_enclosures\"
- dojoType=\"dijit.form.CheckBox\">&nbsp;<label id=\"always_display_enclosures_l\" class='insensitive' for=\"always_display_enclosures\">".__('Always display image attachments')."</label>";
-
- print "&nbsp;"; batch_edit_cbox("always_display_enclosures", "always_display_enclosures_l");
-
- if (SIMPLEPIE_CACHE_IMAGES) {
- print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"cache_images\"
- name=\"cache_images\"
- dojoType=\"dijit.form.CheckBox\">&nbsp;<label class='insensitive' id=\"cache_images_l\"
- for=\"cache_images\">".
- __('Cache images locally')."</label>";
-
-
- print "&nbsp;"; batch_edit_cbox("cache_images", "cache_images_l");
- }
-
- print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"mark_unread_on_update\"
- name=\"mark_unread_on_update\"
- dojoType=\"dijit.form.CheckBox\">&nbsp;<label id=\"mark_unread_on_update_l\" class='insensitive' for=\"mark_unread_on_update\">".__('Mark updated articles as unread')."</label>";
-
- print "&nbsp;"; batch_edit_cbox("mark_unread_on_update", "mark_unread_on_update_l");
-
- print "<br/><input disabled=\"1\" type=\"checkbox\" id=\"update_on_checksum_change\"
- name=\"update_on_checksum_change\"
- dojoType=\"dijit.form.CheckBox\">&nbsp;<label id=\"update_on_checksum_change_l\" class='insensitive' for=\"update_on_checksum_change\">".__('Mark posts as updated on content change')."</label>";
-
- print "&nbsp;"; batch_edit_cbox("update_on_checksum_change", "update_on_checksum_change_l");
-
- print "</div>";
-
- print "<div class='dlgButtons'>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('feedEditDlg').execute()\">".
- __('Save')."</button>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('feedEditDlg').hide()\">".
- __('Cancel')."</button>
- </div>";
-
- return;
- }
-
- if ($subop == "editSave" || $subop == "batchEditSave") {
-
- $feed_title = db_escape_string(trim($_POST["title"]));
- $feed_link = db_escape_string(trim($_POST["feed_url"]));
- $upd_intl = (int) db_escape_string($_POST["update_interval"]);
- $purge_intl = (int) db_escape_string($_POST["purge_interval"]);
- $feed_id = (int) db_escape_string($_POST["id"]); /* editSave */
- $feed_ids = db_escape_string($_POST["ids"]); /* batchEditSave */
- $cat_id = (int) db_escape_string($_POST["cat_id"]);
- $auth_login = db_escape_string(trim($_POST["auth_login"]));
- $auth_pass = db_escape_string(trim($_POST["auth_pass"]));
- $private = checkbox_to_sql_bool(db_escape_string($_POST["private"]));
- $rtl_content = checkbox_to_sql_bool(db_escape_string($_POST["rtl_content"]));
- $include_in_digest = checkbox_to_sql_bool(
- db_escape_string($_POST["include_in_digest"]));
- $cache_images = checkbox_to_sql_bool(
- db_escape_string($_POST["cache_images"]));
- $update_method = (int) db_escape_string($_POST["update_method"]);
-
- $always_display_enclosures = checkbox_to_sql_bool(
- db_escape_string($_POST["always_display_enclosures"]));
-
- $mark_unread_on_update = checkbox_to_sql_bool(
- db_escape_string($_POST["mark_unread_on_update"]));
-
- $update_on_checksum_change = checkbox_to_sql_bool(
- db_escape_string($_POST["update_on_checksum_change"]));
-
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- if ($cat_id && $cat_id != 0) {
- $category_qpart = "cat_id = '$cat_id',";
- $category_qpart_nocomma = "cat_id = '$cat_id'";
- } else {
- $category_qpart = 'cat_id = NULL,';
- $category_qpart_nocomma = 'cat_id = NULL';
- }
- } else {
- $category_qpart = "";
- $category_qpart_nocomma = "";
- }
-
- if (SIMPLEPIE_CACHE_IMAGES) {
- $cache_images_qpart = "cache_images = $cache_images,";
- } else {
- $cache_images_qpart = "";
- }
-
- if ($subop == "editSave") {
-
- $result = db_query($link, "UPDATE ttrss_feeds SET
- $category_qpart
- title = '$feed_title', feed_url = '$feed_link',
- update_interval = '$upd_intl',
- purge_interval = '$purge_intl',
- auth_login = '$auth_login',
- auth_pass = '$auth_pass',
- private = $private,
- rtl_content = $rtl_content,
- $cache_images_qpart
- include_in_digest = $include_in_digest,
- always_display_enclosures = $always_display_enclosures,
- mark_unread_on_update = $mark_unread_on_update,
- update_on_checksum_change = $update_on_checksum_change,
- update_method = '$update_method'
- WHERE id = '$feed_id' AND owner_uid = " . $_SESSION["uid"]);
-
- } else if ($subop == "batchEditSave") {
- $feed_data = array();
-
- foreach (array_keys($_POST) as $k) {
- if ($k != "op" && $k != "subop" && $k != "ids") {
- $feed_data[$k] = $_POST[$k];
- }
- }
-
- db_query($link, "BEGIN");
-
- foreach (array_keys($feed_data) as $k) {
-
- $qpart = "";
-
- switch ($k) {
- case "title":
- $qpart = "title = '$feed_title'";
- break;
-
- case "feed_url":
- $qpart = "feed_url = '$feed_link'";
- break;
-
- case "update_interval":
- $qpart = "update_interval = '$upd_intl'";
- break;
-
- case "purge_interval":
- $qpart = "purge_interval = '$purge_intl'";
- break;
-
- case "auth_login":
- $qpart = "auth_login = '$auth_login'";
- break;
-
- case "auth_pass":
- $qpart = "auth_pass = '$auth_pass'";
- break;
-
- case "private":
- $qpart = "private = '$private'";
- break;
-
- case "include_in_digest":
- $qpart = "include_in_digest = '$include_in_digest'";
- break;
-
- case "always_display_enclosures":
- $qpart = "always_display_enclosures = '$always_display_enclosures'";
- break;
-
- case "mark_unread_on_update":
- $qpart = "mark_unread_on_update = '$mark_unread_on_update'";
- break;
-
- case "update_on_checksum_change":
- $qpart = "update_on_checksum_change = '$update_on_checksum_change'";
- break;
-
- case "cache_images":
- $qpart = "cache_images = '$cache_images'";
- break;
-
- case "rtl_content":
- $qpart = "rtl_content = '$rtl_content'";
- break;
-
- case "update_method":
- $qpart = "update_method = '$update_method'";
- break;
-
- case "cat_id":
- $qpart = $category_qpart_nocomma;
- break;
-
- }
-
- if ($qpart) {
- db_query($link,
- "UPDATE ttrss_feeds SET $qpart WHERE id IN ($feed_ids)
- AND owner_uid = " . $_SESSION["uid"]);
- print "<br/>";
- }
- }
-
- db_query($link, "COMMIT");
- }
- return;
- }
-
- if ($subop == "resetPubSub") {
-
- $ids = db_escape_string($_REQUEST["ids"]);
-
- db_query($link, "UPDATE ttrss_feeds SET pubsub_state = 0 WHERE id IN ($ids)
- AND owner_uid = " . $_SESSION["uid"]);
-
- return;
- }
-
- if ($subop == "remove") {
-
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- remove_feed($link, $id, $_SESSION["uid"]);
- }
-
- return;
- }
-
- if ($subop == "clear") {
- $id = db_escape_string($_REQUEST["id"]);
- clear_feed_articles($link, $id);
- }
-
- if ($subop == "rescore") {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
-
- $filters = load_filters($link, $id, $_SESSION["uid"], 6);
-
- $result = db_query($link, "SELECT
- title, content, link, ref_id, author,".
- SUBSTRING_FOR_DATE."(updated, 1, 19) AS updated
- FROM
- ttrss_user_entries, ttrss_entries
- WHERE ref_id = id AND feed_id = '$id' AND
- owner_uid = " .$_SESSION['uid']."
- ");
-
- $scores = array();
-
- while ($line = db_fetch_assoc($result)) {
-
- $tags = get_article_tags($link, $line["ref_id"]);
-
- $article_filters = get_article_filters($filters, $line['title'],
- $line['content'], $line['link'], strtotime($line['updated']),
- $line['author'], $tags);
-
- $new_score = calculate_article_score($article_filters);
-
- if (!$scores[$new_score]) $scores[$new_score] = array();
-
- array_push($scores[$new_score], $line['ref_id']);
- }
-
- foreach (array_keys($scores) as $s) {
- if ($s > 1000) {
- db_query($link, "UPDATE ttrss_user_entries SET score = '$s',
- marked = true WHERE
- ref_id IN (" . join(',', $scores[$s]) . ")");
- } else if ($s < -500) {
- db_query($link, "UPDATE ttrss_user_entries SET score = '$s',
- unread = false WHERE
- ref_id IN (" . join(',', $scores[$s]) . ")");
- } else {
- db_query($link, "UPDATE ttrss_user_entries SET score = '$s' WHERE
- ref_id IN (" . join(',', $scores[$s]) . ")");
- }
- }
- }
-
- print __("All done.");
-
- }
-
- if ($subop == "rescoreAll") {
-
- $result = db_query($link,
- "SELECT id FROM ttrss_feeds WHERE owner_uid = " . $_SESSION['uid']);
-
- while ($feed_line = db_fetch_assoc($result)) {
-
- $id = $feed_line["id"];
-
- $filters = load_filters($link, $id, $_SESSION["uid"], 6);
-
- $tmp_result = db_query($link, "SELECT
- title, content, link, ref_id, author,".
- SUBSTRING_FOR_DATE."(updated, 1, 19) AS updated
- FROM
- ttrss_user_entries, ttrss_entries
- WHERE ref_id = id AND feed_id = '$id' AND
- owner_uid = " .$_SESSION['uid']."
- ");
-
- $scores = array();
-
- while ($line = db_fetch_assoc($tmp_result)) {
-
- $tags = get_article_tags($link, $line["ref_id"]);
-
- $article_filters = get_article_filters($filters, $line['title'],
- $line['content'], $line['link'], strtotime($line['updated']),
- $line['author'], $tags);
-
- $new_score = calculate_article_score($article_filters);
-
- if (!$scores[$new_score]) $scores[$new_score] = array();
-
- array_push($scores[$new_score], $line['ref_id']);
- }
-
- foreach (array_keys($scores) as $s) {
- if ($s > 1000) {
- db_query($link, "UPDATE ttrss_user_entries SET score = '$s',
- marked = true WHERE
- ref_id IN (" . join(',', $scores[$s]) . ")");
- } else {
- db_query($link, "UPDATE ttrss_user_entries SET score = '$s' WHERE
- ref_id IN (" . join(',', $scores[$s]) . ")");
- }
- }
- }
-
- print __("All done.");
-
- }
-
- if ($subop == "add") {
-
- $feed_url = db_escape_string(trim($_REQUEST["feed_url"]));
- $cat_id = db_escape_string($_REQUEST["cat_id"]);
- $p_from = db_escape_string($_REQUEST["from"]);
-
- /* only read authentication information from POST */
-
- $auth_login = db_escape_string(trim($_POST["auth_login"]));
- $auth_pass = db_escape_string(trim($_POST["auth_pass"]));
-
- if ($p_from != 'tt-rss') {
- header("Content-Type: text/html");
- print "<html>
- <head>
- <title>Tiny Tiny RSS</title>
- <link rel=\"stylesheet\" type=\"text/css\" href=\"utility.css\">
- </head>
- <body>
- <img class=\"floatingLogo\" src=\"images/ttrss_logo.png\"
- alt=\"Tiny Tiny RSS\"/>
- <h1>Subscribe to feed...</h1>";
- }
-
- $rc = subscribe_to_feed($link, $feed_url, $cat_id, $auth_login, $auth_pass);
-
- switch ($rc) {
- case 1:
- print_notice(T_sprintf("Subscribed to <b>%s</b>.", $feed_url));
- break;
- case 2:
- print_error(T_sprintf("Could not subscribe to <b>%s</b>.", $feed_url));
- break;
- case 3:
- print_error(T_sprintf("No feeds found in <b>%s</b>.", $feed_url));
- break;
- case 0:
- print_warning(T_sprintf("Already subscribed to <b>%s</b>.", $feed_url));
- break;
- case 4:
- print_notice("Multiple feed URLs found.");
-
- $feed_urls = get_feeds_from_html($feed_url);
- break;
- case 5:
- print_error(T_sprintf("Could not subscribe to <b>%s</b>.<br>Can't download the Feed URL.", $feed_url));
- break;
- }
-
- if ($p_from != 'tt-rss') {
-
- if ($feed_urls) {
-
- print "<form action=\"backend.php\">";
- print "<input type=\"hidden\" name=\"op\" value=\"pref-feeds\">";
- print "<input type=\"hidden\" name=\"quiet\" value=\"1\">";
- print "<input type=\"hidden\" name=\"subop\" value=\"add\">";
-
- print "<select name=\"feed_url\">";
-
- foreach ($feed_urls as $url => $name) {
- $url = htmlspecialchars($url);
- $name = htmlspecialchars($name);
-
- print "<option value=\"$url\">$name</option>";
- }
-
- print "<input type=\"submit\" value=\"".__("Subscribe to selected feed").
- "\">";
-
- print "</form>";
- }
-
- $tp_uri = get_self_url_prefix() . "/prefs.php";
- $tt_uri = get_self_url_prefix();
-
- if ($rc <= 2){
- $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE
- feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
-
- $feed_id = db_fetch_result($result, 0, "id");
- } else {
- $feed_id = 0;
- }
- print "<p>";
-
- if ($feed_id) {
- print "<form method=\"GET\" style='display: inline'
- action=\"$tp_uri\">
- <input type=\"hidden\" name=\"tab\" value=\"feedConfig\">
- <input type=\"hidden\" name=\"subop\" value=\"editFeed\">
- <input type=\"hidden\" name=\"subopparam\" value=\"$feed_id\">
- <input type=\"submit\" value=\"".__("Edit subscription options")."\">
- </form>";
- }
-
- print "<form style='display: inline' method=\"GET\" action=\"$tt_uri\">
- <input type=\"submit\" value=\"".__("Return to Tiny Tiny RSS")."\">
- </form></p>";
-
- print "</body></html>";
- return;
- }
- }
-
- if ($subop == "categorize") {
-
-
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
-
- $cat_id = db_escape_string($_REQUEST["cat_id"]);
-
- if ($cat_id == 0) {
- $cat_id_qpart = 'NULL';
- } else {
- $cat_id_qpart = "'$cat_id'";
- }
-
- db_query($link, "BEGIN");
-
- foreach ($ids as $id) {
-
- db_query($link, "UPDATE ttrss_feeds SET cat_id = $cat_id_qpart
- WHERE id = '$id'
- AND owner_uid = " . $_SESSION["uid"]);
-
- }
-
- db_query($link, "COMMIT");
-
- }
-
- if ($subop == "editCats") {
-
- $action = $_REQUEST["action"];
-
- if ($action == "save") {
-
- $cat_title = db_escape_string(trim($_REQUEST["value"]));
- $cat_id = db_escape_string($_REQUEST["cid"]);
-
- db_query($link, "BEGIN");
-
- $result = db_query($link, "SELECT title FROM ttrss_feed_categories
- WHERE id = '$cat_id' AND owner_uid = ".$_SESSION["uid"]);
-
- if (db_num_rows($result) == 1) {
-
- $old_title = db_fetch_result($result, 0, "title");
-
- if ($cat_title != "") {
- $result = db_query($link, "UPDATE ttrss_feed_categories SET
- title = '$cat_title' WHERE id = '$cat_id' AND
- owner_uid = ".$_SESSION["uid"]);
-
- print $cat_title;
- } else {
- print $old_title;
- }
- } else {
- print $_REQUEST["value"];
- }
-
- db_query($link, "COMMIT");
-
- return;
-
- }
-
- if ($action == "add") {
-
- $feed_cat = db_escape_string(trim($_REQUEST["cat"]));
-
- if (!add_feed_category($link, $feed_cat))
- print_warning(T_sprintf("Category <b>$%s</b> already exists in the database.", $feed_cat));
-
- }
-
- if ($action == "remove") {
-
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- remove_feed_category($link, $id, $_SESSION["uid"]);
- }
- }
-
- print "<div dojoType=\"dijit.Toolbar\">
- <input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\" name=\"newcat\">
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedCatEditDlg').addCategory()\">".
- __('Create category')."</button></div>";
-
- $result = db_query($link, "SELECT title,id FROM ttrss_feed_categories
- WHERE owner_uid = ".$_SESSION["uid"]."
- ORDER BY title");
-
-# print "<p>";
-
- if (db_num_rows($result) != 0) {
-
- print "<div class=\"prefFeedCatHolder\">";
-
-# print "<form id=\"feed_cat_edit_form\" onsubmit=\"return false\">";
-
- print "<table width=\"100%\" class=\"prefFeedCatList\"
- cellspacing=\"0\" id=\"prefFeedCatList\">";
-
- $lnum = 0;
-
- while ($line = db_fetch_assoc($result)) {
-
- $class = ($lnum % 2) ? "even" : "odd";
-
- $cat_id = $line["id"];
- $this_row_id = "id=\"FCATR-$cat_id\"";
-
- print "<tr class=\"\" $this_row_id>";
-
- $edit_title = htmlspecialchars($line["title"]);
-
- print "<td width='5%' align='center'><input
- onclick='toggleSelectRow2(this);' dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\"></td>";
-
- print "<td>";
-
-# print "<span id=\"FCATT-$cat_id\">" .
-# $edit_title . "</span>";
-
- print "<span dojoType=\"dijit.InlineEditBox\"
- width=\"300px\" autoSave=\"false\"
- cat-id=\"$cat_id\">" . $edit_title .
- "<script type=\"dojo/method\" event=\"onChange\" args=\"item\">
- var elem = this;
- dojo.xhrPost({
- url: 'backend.php',
- content: {op: 'pref-feeds', subop: 'editCats',
- action: 'save',
- value: this.value,
- cid: this.srcNodeRef.getAttribute('cat-id')},
- load: function(response) {
- elem.attr('value', response);
- updateFeedList();
- }
- });
- </script>
- </span>";
-
- print "</td></tr>";
-
- ++$lnum;
- }
-
- print "</table>";
-
-# print "</form>";
-
- print "</div>";
-
- } else {
- print "<p>".__('No feed categories defined.')."</p>";
- }
-
- print "<div class='dlgButtons'>
- <div style='float : left'>
- <button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedCatEditDlg').removeSelected()\">".
- __('Remove selected categories')."</button>
- </div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('feedCatEditDlg').hide()\">".
- __('Close this window')."</button></div>";
-
- return;
-
- }
-
- if ($quiet) return;
-
- print "<div dojoType=\"dijit.layout.AccordionContainer\" region=\"center\">";
- print "<div id=\"pref-feeds-feeds\" dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Feeds')."\">";
-
- /* print "<div dojoType=\"dijit.layout.BorderContainer\">";
- print "<
- print "</div>"; */
-
- $result = db_query($link, "SELECT COUNT(id) AS num_errors
- FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
-
- $num_errors = db_fetch_result($result, 0, "num_errors");
-
- if ($num_errors > 0) {
-
- $error_button = "<button dojoType=\"dijit.form.Button\"
- onclick=\"showFeedsWithErrors()\" id=\"errorButton\">" .
- __("Feeds with errors") . "</button>";
-
-// print format_notice("<a href=\"javascript:showFeedsWithErrors()\">".
-// __('Some feeds have update errors (click for details)')."</a>");
- }
-
- if (DB_TYPE == "pgsql") {
- $interval_qpart = "NOW() - INTERVAL '3 months'";
- } else {
- $interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)";
- }
-
- $result = db_query($link, "SELECT COUNT(*) AS num_inactive FROM ttrss_feeds 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"]);
-
- $num_inactive = db_fetch_result($result, 0, "num_inactive");
-
- if ($num_inactive > 0) {
- $inactive_button = "<button dojoType=\"dijit.form.Button\"
- onclick=\"showInactiveFeeds()\">" .
- __("Inactive feeds") . "</button>";
- }
-
- $feed_search = db_escape_string($_REQUEST["search"]);
-
- if (array_key_exists("search", $_REQUEST)) {
- $_SESSION["prefs_feed_search"] = $feed_search;
- } else {
- $feed_search = $_SESSION["prefs_feed_search"];
- }
-
- print '<div dojoType="dijit.layout.BorderContainer" gutters="false">';
-
- print "<div region='top' dojoType=\"dijit.Toolbar\">"; #toolbar
-
- print "<div style='float : right; padding-right : 4px;'>
- <input dojoType=\"dijit.form.TextBox\" id=\"feed_search\" size=\"20\" type=\"search\"
- value=\"$feed_search\">
- <button dojoType=\"dijit.form.Button\" onclick=\"updateFeedList()\">".
- __('Search')."</button>
- </div>";
-
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Select')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"dijit.byId('feedTree').model.setAllChecked(true)\"
- dojoType=\"dijit.MenuItem\">".__('All')."</div>";
- print "<div onclick=\"dijit.byId('feedTree').model.setAllChecked(false)\"
- dojoType=\"dijit.MenuItem\">".__('None')."</div>";
- print "</div></div>";
-
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Feeds')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"quickAddFeed()\"
- dojoType=\"dijit.MenuItem\">".__('Subscribe to feed')."</div>";
- print "<div onclick=\"editSelectedFeed()\"
- dojoType=\"dijit.MenuItem\">".__('Edit selected feeds')."</div>";
- print "<div onclick=\"resetFeedOrder()\"
- dojoType=\"dijit.MenuItem\">".__('Reset sort order')."</div>";
- print "</div></div>";
-
- if (get_pref($link, 'ENABLE_FEED_CATS')) {
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Categories')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"editFeedCats()\"
- dojoType=\"dijit.MenuItem\">".__('Edit categories')."</div>";
- print "<div onclick=\"resetCatOrder()\"
- dojoType=\"dijit.MenuItem\">".__('Reset sort order')."</div>";
- print "</div></div>";
-
- }
-
- print $error_button;
- print $inactive_button;
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"removeSelectedFeeds()\">"
- .__('Unsubscribe')."</button dojoType=\"dijit.form.Button\"> ";
-
- if (defined('_ENABLE_FEED_DEBUGGING')) {
-
- print "<select id=\"feedActionChooser\" onchange=\"feedActionChange()\">
- <option value=\"facDefault\" selected>".__('More actions...')."</option>";
-
- if (FORCE_ARTICLE_PURGE == 0) {
- print
- "<option value=\"facPurge\">".__('Manual purge')."</option>";
- }
-
- print "
- <option value=\"facClear\">".__('Clear feed data')."</option>
- <option value=\"facRescore\">".__('Rescore articles')."</option>";
-
- print "</select>";
-
- }
-
- print "</div>"; # toolbar
-
- //print '</div>';
- print '<div dojoType="dijit.layout.ContentPane" region="center">';
-
- print "<div id=\"feedlistLoading\">
- <img src='images/indicator_tiny.gif'>".
- __("Loading, please wait...")."</div>";
-
- print "<div dojoType=\"fox.PrefFeedStore\" jsId=\"feedStore\"
- url=\"backend.php?op=pref-feeds&subop=getfeedtree\">
- </div>
- <div dojoType=\"lib.CheckBoxStoreModel\" jsId=\"feedModel\" store=\"feedStore\"
- query=\"{id:'root'}\" rootId=\"root\" rootLabel=\"Feeds\"
- childrenAttrs=\"items\" checkboxStrict=\"false\" checkboxAll=\"false\">
- </div>
- <div dojoType=\"fox.PrefFeedTree\" id=\"feedTree\"
- dndController=\"dijit.tree.dndSource\"
- betweenThreshold=\"5\"
- model=\"feedModel\" openOnClick=\"false\">
- <script type=\"dojo/method\" event=\"onClick\" args=\"item\">
- var id = String(item.id);
- var bare_id = id.substr(id.indexOf(':')+1);
-
- if (id.match('FEED:')) {
- editFeed(bare_id);
- } else if (id.match('CAT:')) {
- editCat(bare_id, item);
- }
- </script>
- <script type=\"dojo/method\" event=\"onLoad\" args=\"item\">
- Element.hide(\"feedlistLoading\");
- </script>
- </div>";
-
- print "<div dojoType=\"dijit.Tooltip\" connectId=\"feedTree\" position=\"below\">
- ".__('<b>Hint:</b> you can drag feeds and categories around.')."
- </div>";
-
- print '</div>';
- print '</div>';
-
- print "</div>"; # feeds pane
-
- print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('OPML')."\">";
-
- print "<p>" . __("Using OPML you can export and import your feeds and Tiny Tiny RSS settings.") . " ";
-
- print "<span class=\"insensitive\">" . __("Note: Only main settings profile can be migrated using OPML.") . "</span>";
-
- print "</p>";
-
- print "<h3>" . __("Import") . "</h3>";
-
- print "<br/><iframe id=\"upload_iframe\"
- name=\"upload_iframe\" onload=\"opmlImportComplete(this)\"
- style=\"width: 400px; height: 100px; display: none;\"></iframe>";
-
- print "<form name=\"opml_form\" style='display : block' target=\"upload_iframe\"
- enctype=\"multipart/form-data\" method=\"POST\"
- action=\"backend.php\">
- <input id=\"opml_file\" name=\"opml_file\" type=\"file\">&nbsp;
- <input type=\"hidden\" name=\"op\" value=\"dlg\">
- <input type=\"hidden\" name=\"id\" value=\"importOpml\">
- <button dojoType=\"dijit.form.Button\" onclick=\"return opmlImport();\" type=\"submit\">" .
- __('Import') . "</button>";
-
- print "<h3>" . __("Export") . "</h3>";
-
- print "<p>" . __('Filename:') .
- " <input type=\"text\" id=\"filename\" value=\"TinyTinyRSS.opml\" />&nbsp;" .
- __('Include settings') . "<input type=\"checkbox\" id=\"settings\" CHECKED />" .
-
- "<button dojoType=\"dijit.form.Button\"
- onclick=\"gotoExportOpml(document.opml_form.filename.value, document.opml_form.settings.checked)\" >" .
- __('Export') . "</button></p></form>";
-
- print "<h3>" . __("Publish") . "</h3>";
-
- print "<p>".__('Your OPML can be published publicly and can be subscribed by anyone who knows the URL below.') . " ";
-
- print "<span class=\"insensitive\">" . __("Note: Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds.") . "</span>" . "</p>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return displayDlg('pubOPMLUrl')\">".
- __('Display URL')."</button> ";
-
-
- print "</div>"; # pane
-
- if (strpos($_SERVER['HTTP_USER_AGENT'], "Firefox") !== false) {
-
- print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Firefox integration')."\">";
-
- print "<p>" . __('This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below.') . "</p>";
-
- print "<p>";
-
- print "<button onclick='window.navigator.registerContentHandler(" .
- "\"application/vnd.mozilla.maybe.feed\", " .
- "\"" . add_feed_url() . "\", " . " \"Tiny Tiny RSS\")'>" .
- __('Click here to register this site as a feed reader.') .
- "</button>";
-
- print "</p>";
-
- print "</div>"; # pane
- }
-
- print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Subscribing using bookmarklet')."\">";
-
- print "<p>" . __("Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it.") . "</p>";
-
- $bm_subscribe_url = str_replace('%s', '', add_feed_url());
-
- $confirm_str = __('Subscribe to %s in Tiny Tiny RSS?');
-
- $bm_url = htmlspecialchars("javascript:{if(confirm('$confirm_str'.replace('%s',window.location.href)))window.location.href='$bm_subscribe_url'+window.location.href}");
-
- print "<a href=\"$bm_url\" class='bookmarklet'>" . __('Subscribe in Tiny Tiny RSS'). "</a>";
-
- print "</div>"; #pane
-
- print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Published & shared articles and generated feeds')."\">";
-
- print "<h3>" . __("Published articles and generated feeds") . "</h3>";
-
- print "<p>".__('Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below.')."</p>";
-
- $rss_url = '-2::' . htmlspecialchars(get_self_url_prefix() .
- "/public.php?op=rss&id=-2&view-mode=all_articles");;
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return displayDlg('generatedFeed', '$rss_url')\">".
- __('Display URL')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return clearFeedAccessKeys()\">".
- __('Clear all generated URLs')."</button> ";
-
- print "<h3>" . __("Articles shared by URL") . "</h3>";
-
- print "<p>" . __("You can disable all articles shared by unique URLs here.") . "</p>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return clearArticleAccessKeys()\">".
- __('Unshare all articles')."</button> ";
-
- print "</div>"; #pane
-
- if (defined('CONSUMER_KEY') && CONSUMER_KEY != '') {
-
- print "<div id=\"pref-feeds-twitter\" dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Twitter')."\">";
-
- $result = db_query($link, "SELECT COUNT(*) AS cid FROM ttrss_users
- WHERE twitter_oauth IS NOT NULL AND twitter_oauth != '' AND
- id = " . $_SESSION['uid']);
-
- $is_registered = db_fetch_result($result, 0, "cid") != 0;
-
- if (!$is_registered) {
- print_notice(__('Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com.'));
- } else {
- print_notice(__('You have been successfully registered with Twitter.com and should be able to access your Twitter feeds.'));
- }
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"window.location.href = 'twitter.php?op=register'\">".
- __("Register with Twitter.com")."</button>";
-
- print " ";
-
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return clearTwitterCredentials()\">".
- __("Clear stored credentials")."</button>";
-
- print "</div>"; # pane
-
- }
-
- print "</div>"; #container
-
- }
-
- function make_feed_browser($link, $search, $limit, $mode = 1) {
-
- $owner_uid = $_SESSION["uid"];
- $rv = '';
-
- if ($search) {
- $search_qpart = "AND (UPPER(feed_url) LIKE UPPER('%$search%') OR
- UPPER(title) LIKE UPPER('%$search%'))";
- } else {
- $search_qpart = "";
- }
-
- if ($mode == 1) {
- /* $result = db_query($link, "SELECT feed_url, subscribers FROM
- ttrss_feedbrowser_cache WHERE (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf
- WHERE tf.feed_url = ttrss_feedbrowser_cache.feed_url
- AND owner_uid = '$owner_uid') $search_qpart
- ORDER BY subscribers DESC LIMIT $limit"); */
-
- $result = db_query($link, "SELECT feed_url, site_url, title, SUM(subscribers) AS subscribers FROM
- (SELECT feed_url, site_url, title, subscribers FROM ttrss_feedbrowser_cache UNION ALL
- SELECT feed_url, site_url, title, subscribers FROM ttrss_linked_feeds) AS qqq
- WHERE
- (SELECT COUNT(id) = 0 FROM ttrss_feeds AS tf
- WHERE tf.feed_url = qqq.feed_url
- AND owner_uid = '$owner_uid') $search_qpart
- GROUP BY feed_url, site_url, title ORDER BY subscribers DESC LIMIT $limit");
-
- } else if ($mode == 2) {
- $result = db_query($link, "SELECT *,
- (SELECT COUNT(*) FROM ttrss_user_entries WHERE
- orig_feed_id = ttrss_archived_feeds.id) AS articles_archived
- FROM
- ttrss_archived_feeds
- WHERE
- (SELECT COUNT(*) FROM ttrss_feeds
- WHERE ttrss_feeds.feed_url = ttrss_archived_feeds.feed_url AND
- owner_uid = '$owner_uid') = 0 AND
- owner_uid = '$owner_uid' $search_qpart
- ORDER BY id DESC LIMIT $limit");
- }
-
- $feedctr = 0;
-
- while ($line = db_fetch_assoc($result)) {
-
- if ($mode == 1) {
-
- $feed_url = htmlspecialchars($line["feed_url"]);
- $site_url = htmlspecialchars($line["site_url"]);
- $subscribers = $line["subscribers"];
-
- $check_box = "<input onclick='toggleSelectListRow2(this)'
- dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\" \">";
-
- $class = ($feedctr % 2) ? "even" : "odd";
-
- $site_url = "<a target=\"_blank\"
- href=\"$site_url\">
- <span class=\"fb_feedTitle\">".
- htmlspecialchars($line["title"])."</span></a>";
-
- $feed_url = "<a target=\"_blank\" class=\"fb_feedUrl\"
- href=\"$feed_url\"><img src='images/feed-icon-12x12.png'
- style='vertical-align : middle'></a>";
-
- $rv .= "<li>$check_box $feed_url $site_url".
- "&nbsp;<span class='subscribers'>($subscribers)</span></li>";
-
- } else if ($mode == 2) {
- $feed_url = htmlspecialchars($line["feed_url"]);
- $site_url = htmlspecialchars($line["site_url"]);
- $title = htmlspecialchars($line["title"]);
-
- $check_box = "<input onclick='toggleSelectListRow2(this)' dojoType=\"dijit.form.CheckBox\"
- type=\"checkbox\">";
-
- $class = ($feedctr % 2) ? "even" : "odd";
-
- if ($line['articles_archived'] > 0) {
- $archived = sprintf(__("%d archived articles"), $line['articles_archived']);
- $archived = "&nbsp;<span class='subscribers'>($archived)</span>";
- } else {
- $archived = '';
- }
-
- $site_url = "<a target=\"_blank\"
- href=\"$site_url\">
- <span class=\"fb_feedTitle\">".
- htmlspecialchars($line["title"])."</span></a>";
-
- $feed_url = "<a target=\"_blank\" class=\"fb_feedUrl\"
- href=\"$feed_url\"><img src='images/feed-icon-12x12.png'
- style='vertical-align : middle'></a>";
-
-
- $rv .= "<li id=\"FBROW-".$line["id"]."\">".
- "$check_box $feed_url $site_url $archived</li>";
- }
-
- ++$feedctr;
- }
-
- if ($feedctr == 0) {
- $rv .= "<li style=\"text-align : center\"><p>".__('No feeds found.')."</p></li>";
- }
-
- return $rv;
-
- }
-
-?>
diff --git a/modules/pref-filters.php b/modules/pref-filters.php
deleted file mode 100644
index cc30dd285..000000000
--- a/modules/pref-filters.php
+++ /dev/null
@@ -1,579 +0,0 @@
-<?php
- function filter_test($link, $filter_type, $reg_exp,
- $action_id, $action_param, $filter_param, $inverse, $feed_id) {
-
- $result = db_query($link, "SELECT name FROM ttrss_filter_types WHERE
- id = " . $filter_type);
- $type_name = db_fetch_result($result, 0, "name");
-
- $result = db_query($link, "SELECT name FROM ttrss_filter_actions WHERE
- id = " . $action_id);
- $action_name = db_fetch_result($result, 0, "name");
-
- $filter["reg_exp"] = $reg_exp;
- $filter["action"] = $action_name;
- $filter["type"] = $type_name;
- $filter["action_param"] = $action_param;
- $filter["filter_param"] = $filter_param;
- $filter["inverse"] = $inverse;
-
- $filters[$type_name] = array($filter);
-
- if ($feed_id)
- $feed = $feed_id;
- else
- $feed = -4;
-
- $feed_title = getFeedTitle($link, $feed);
-
- $qfh_ret = queryFeedHeadlines($link, $feed,
- 30, "", false, false, false,
- false, "date_entered DESC", 0, $_SESSION["uid"], $filter);
-
- $result = $qfh_ret[0];
-
- $articles = array();
- $found = 0;
-
- print __("Articles matching this filter:");
-
- print "<div class=\"inactiveFeedHolder\">";
- print "<table width=\"100%\" cellspacing=\"0\" id=\"prefErrorFeedList\">";
-
- while ($line = db_fetch_assoc($result)) {
-
- $entry_timestamp = strtotime($line["updated"]);
- $entry_tags = get_article_tags($link, $line["id"], $_SESSION["uid"]);
-
- $content_preview = truncate_string(
- strip_tags($line["content_preview"]), 100, '...');
-
- if ($line["feed_title"])
- $feed_title = $line["feed_title"];
-
- print "<tr>";
-
- print "<td width='5%' align='center'><input
- dojoType=\"dijit.form.CheckBox\" checked=\"1\"
- disabled=\"1\" type=\"checkbox\"></td>";
- print "<td>";
-
- print $line["title"];
- print "&nbsp;(";
- print "<b>" . $feed_title . "</b>";
- print "):&nbsp;";
- print "<span class=\"insensitive\">" . $content_preview . "</span>";
- print " " . mb_substr($line["date_entered"], 0, 16);
-
- print "</td></tr>";
-
- $found++;
- }
-
- if ($found == 0) {
- print "<tr><td align='center'>" .
- __("No articles matching this filter has been found.") . "</td></tr>";
- }
-
- print "</table>";
- print "</div>";
-
- }
-
- function module_pref_filters($link) {
- $subop = $_REQUEST["subop"];
- $quiet = $_REQUEST["quiet"];
-
- if ($subop == "getfiltertree") {
- $root = array();
- $root['id'] = 'root';
- $root['name'] = __('Filters');
- $root['items'] = array();
-
- $result = db_query($link, "SELECT
- ttrss_filters.id AS id,reg_exp,
- ttrss_filter_types.name AS filter_type_name,
- ttrss_filter_types.description AS filter_type_descr,
- enabled,
- inverse,
- feed_id,
- action_id,
- filter_param,
- filter_type,
- ttrss_filter_actions.description AS action_description,
- ttrss_feeds.title AS feed_title,
- ttrss_filter_actions.name AS action_name,
- ttrss_filters.action_param AS action_param
- FROM
- ttrss_filter_types,ttrss_filter_actions,ttrss_filters LEFT JOIN
- ttrss_feeds ON (ttrss_filters.feed_id = ttrss_feeds.id)
- WHERE
- filter_type = ttrss_filter_types.id AND
- ttrss_filter_actions.id = action_id AND
- ttrss_filters.owner_uid = ".$_SESSION["uid"]."
- ORDER by action_description, reg_exp");
-
- $cat = false;
- $cur_action_description = "";
-
- if (db_num_rows($result) > 0) {
-
- while ($line = db_fetch_assoc($result)) {
- if ($cur_action_description != $line['action_description']) {
-
- if ($cat)
- array_push($root['items'], $cat);
-
- $cat = array();
- $cat['id'] = 'ACTION:' . $line['action_id'];
- $cat['name'] = $line['action_description'];
- $cat['items'] = array();
-
- $cur_action_description = $line['action_description'];
- }
-
- if (array_search($line["action_name"],
- array("score", "tag", "label")) === false) {
-
- $line["action_param"] = '';
- } else {
- if ($line['action_name'] == 'label') {
-
- $tmp_result = db_query($link, "SELECT fg_color, bg_color
- FROM ttrss_labels2 WHERE caption = '".
- db_escape_string($line["action_param"])."' AND
- owner_uid = " . $_SESSION["uid"]);
-
- if (db_num_rows($tmp_result) != 0) {
- $fg_color = db_fetch_result($tmp_result, 0, "fg_color");
- $bg_color = db_fetch_result($tmp_result, 0, "bg_color");
-
- $tmp = "<span class=\"labelColorIndicator\" style='color : $fg_color; background-color : $bg_color'>&alpha;</span> " . $line['action_param'];
-
- $line['action_param'] = $tmp;
- }
- }
- }
-
- $filter = array();
- $filter['id'] = 'FILTER:' . $line['id'];
- $filter['bare_id'] = $line['id'];
- $filter['name'] = $line['reg_exp'];
- $filter['type'] = $line['filter_type'];
- $filter['enabled'] = sql_bool_to_bool($line['enabled']);
- $filter['param'] = $line['action_param'];
- $filter['inverse'] = sql_bool_to_bool($line['inverse']);
- $filter['checkbox'] = false;
-
- if ($line['feed_id'])
- $filter['feed'] = $line['feed_title'];
-
- array_push($cat['items'], $filter);
- }
-
- array_push($root['items'], $cat);
- }
-
- $fl = array();
- $fl['identifier'] = 'id';
- $fl['label'] = 'name';
- $fl['items'] = array($root);
-
- print json_encode($fl);
- return;
- }
-
- if ($subop == "edit") {
-
- $filter_id = db_escape_string($_REQUEST["id"]);
-
- $result = db_query($link,
- "SELECT * FROM ttrss_filters WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]);
-
- $reg_exp = htmlspecialchars(db_fetch_result($result, 0, "reg_exp"));
- $filter_type = db_fetch_result($result, 0, "filter_type");
- $feed_id = db_fetch_result($result, 0, "feed_id");
- $action_id = db_fetch_result($result, 0, "action_id");
- $action_param = db_fetch_result($result, 0, "action_param");
- $filter_param = db_fetch_result($result, 0, "filter_param");
-
- $enabled = sql_bool_to_bool(db_fetch_result($result, 0, "enabled"));
- $inverse = sql_bool_to_bool(db_fetch_result($result, 0, "inverse"));
-
- print "<form id=\"filter_edit_form\" onsubmit='return false'>";
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-filters\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$filter_id\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"editSave\">";
-
- $result = db_query($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 "<div class=\"dlgSec\">".__("Match")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- if ($filter_type != 5) {
- $date_ops_invisible = 'style="display : none"';
- }
-
- print "<span id=\"filterDlg_dateModBox\" $date_ops_invisible>";
- print __("Date") . " ";
-
- $filter_params = array(
- "before" => __("before"),
- "after" => __("after"));
-
- print_select_hash("filter_date_modifier", $filter_param,
- $filter_params, 'dojoType="dijit.form.Select"');
-
- print "&nbsp;</span>";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\"
- required=\"1\"
- name=\"reg_exp\" style=\"font-size : 16px;\" value=\"$reg_exp\">";
-
- print "<span id=\"filterDlg_dateChkBox\" $date_ops_invisible>";
- print "&nbsp;<button dojoType=\"dijit.form.Button\" onclick=\"return filterDlgCheckDate()\">".
- __('Check it')."</button>";
- print "</span>";
-
- print "<hr/> " . __("on field") . " ";
- print_select_hash("filter_type", $filter_type, $filter_types,
- 'onchange="filterDlgCheckType(this)" dojoType="dijit.form.Select"');
-
- print "<hr/>";
-
- print __("in") . " ";
- print_feed_select($link, "feed_id", $feed_id,
- 'dojoType="dijit.form.FilteringSelect"');
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Perform Action")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- print "<select name=\"action_id\" dojoType=\"dijit.form.Select\"
- onchange=\"filterDlgCheckAction(this)\">";
-
- $result = db_query($link, "SELECT id,description FROM ttrss_filter_actions
- ORDER BY name");
-
- while ($line = db_fetch_assoc($result)) {
- $is_sel = ($line["id"] == $action_id) ? "selected=\"1\"" : "";
- printf("<option value='%d' $is_sel>%s</option>", $line["id"], __($line["description"]));
- }
-
- print "</select>";
-
- $param_hidden = ($action_id == 4 || $action_id == 6 || $action_id == 7) ? "" : "display : none";
-
- print "<span id=\"filterDlg_paramBox\" style=\"$param_hidden\">";
- print " " . __("with parameters:") . " ";
-
- $param_int_hidden = ($action_id != 7) ? "" : "display : none";
-
- print "<input style=\"$param_int_hidden\"
- dojoType=\"dijit.form.TextBox\" id=\"filterDlg_actionParam\"
- name=\"action_param\" value=\"$action_param\">";
-
- $param_int_hidden = ($action_id == 7) ? "" : "display : none";
-
- print_label_select($link, "action_param_label", $action_param,
- "style=\"$param_int_hidden\"" .
- 'id="filterDlg_actionParamLabel" dojoType="dijit.form.Select"');
-
- print "</span>";
-
- print "&nbsp;"; // tiny layout hack
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Options")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print "<div style=\"line-height : 100%\">";
-
- if ($enabled) {
- $checked = "checked=\"1\"";
- } else {
- $checked = "";
- }
-
- print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"enabled\" id=\"enabled\" $checked>
- <label for=\"enabled\">".__('Enabled')."</label><hr/>";
-
- if ($inverse) {
- $checked = "checked=\"1\"";
- } else {
- $checked = "";
- }
-
- print "<input dojoType=\"dijit.form.CheckBox\" type=\"checkbox\" name=\"inverse\" id=\"inverse\" $checked>
- <label for=\"inverse\">".__('Inverse match')."</label>";
-
- print "</div>";
- print "</div>";
-
- print "<div class=\"dlgButtons\">";
-
- print "<div style=\"float : left\">";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('filterEditDlg').removeFilter()\">".
- __('Remove')."</button>";
- print "</div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('filterEditDlg').test()\">".
- __('Test')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('filterEditDlg').execute()\">".
- __('Save')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('filterEditDlg').hide()\">".
- __('Cancel')."</button>";
-
- print "</div>";
-
- return;
- }
-
-
- if ($subop == "editSave") {
-
- global $memcache;
-
- if ($memcache) $memcache->flush();
-
- $savemode = db_escape_string($_REQUEST["savemode"]);
- $reg_exp = db_escape_string(trim($_REQUEST["reg_exp"]));
- $filter_type = db_escape_string(trim($_REQUEST["filter_type"]));
- $filter_id = db_escape_string($_REQUEST["id"]);
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
- $action_id = db_escape_string($_REQUEST["action_id"]);
- $action_param = db_escape_string($_REQUEST["action_param"]);
- $action_param_label = db_escape_string($_REQUEST["action_param_label"]);
- $enabled = checkbox_to_sql_bool(db_escape_string($_REQUEST["enabled"]));
- $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"]));
-
- # for the time being, no other filters use params anyway...
- $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]);
-
- if (!$feed_id) {
- $feed_id = 'NULL';
- } else {
- $feed_id = sprintf("'%s'", db_escape_string($feed_id));
- }
-
- /* When processing 'assign label' filters, action_param_label dropbox
- * overrides action_param */
-
- if ($action_id == 7) {
- $action_param = $action_param_label;
- }
-
- if ($action_id == 6) {
- $action_param = (int) str_replace("+", "", $action_param);
- }
-
- if ($savemode != "test") {
- $result = db_query($link, "UPDATE ttrss_filters SET
- reg_exp = '$reg_exp',
- feed_id = $feed_id,
- action_id = '$action_id',
- filter_type = '$filter_type',
- enabled = $enabled,
- inverse = $inverse,
- action_param = '$action_param',
- filter_param = '$filter_param'
- WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]);
- } else {
-
- filter_test($link, $filter_type, $reg_exp,
- $action_id, $action_param, $filter_param, sql_bool_to_bool($inverse),
- (int) $_REQUEST["feed_id"]);
-
- print "<div align='center'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('filterTestDlg').hide()\">".
- __('Close this window')."</button>";
- print "</div>";
-
- }
-
- return;
- }
-
- if ($subop == "remove") {
-
- if ($memcache) $memcache->flush();
-
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- db_query($link, "DELETE FROM ttrss_filters WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]);
- }
- return;
- }
-
- if ($subop == "add") {
-
- if ($memcache) $memcache->flush();
-
- $savemode = db_escape_string($_REQUEST["savemode"]);
- $regexp = db_escape_string(trim($_REQUEST["reg_exp"]));
- $filter_type = db_escape_string(trim($_REQUEST["filter_type"]));
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
- $action_id = db_escape_string($_REQUEST["action_id"]);
- $action_param = db_escape_string($_REQUEST["action_param"]);
- $action_param_label = db_escape_string($_REQUEST["action_param_label"]);
- $inverse = checkbox_to_sql_bool(db_escape_string($_REQUEST["inverse"]));
-
- # for the time being, no other filters use params anyway...
- $filter_param = db_escape_string($_REQUEST["filter_date_modifier"]);
-
- if (!$regexp) return;
-
- if (!$feed_id) {
- $feed_id = 'NULL';
- } else {
- $feed_id = sprintf("'%s'", db_escape_string($feed_id));
- }
-
- /* When processing 'assign label' filters, action_param_label dropbox
- * overrides action_param */
-
- if ($action_id == 7) {
- $action_param = $action_param_label;
- }
-
- if ($action_id == 6) {
- $action_param = (int) str_replace("+", "", $action_param);
- }
-
- if ($savemode != "test") {
- $result = db_query($link,
- "INSERT INTO ttrss_filters (reg_exp,filter_type,owner_uid,feed_id,
- action_id, action_param, inverse, filter_param)
- VALUES
- ('$regexp', '$filter_type','".$_SESSION["uid"]."',
- $feed_id, '$action_id', '$action_param', $inverse,
- '$filter_param')");
-
- if (db_affected_rows($link, $result) != 0) {
- print T_sprintf("Created filter <b>%s</b>", htmlspecialchars($regexp));
- }
-
- } else {
-
- filter_test($link, $filter_type, $regexp,
- $action_id, $action_param, $filter_param, sql_bool_to_bool($inverse),
- (int) $_REQUEST["feed_id"]);
-
- print "<div align='center'>";
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('filterTestDlg').hide()\">".
- __('Close this window')."</button>";
- print "</div>";
-
- }
-
- return;
- }
-
- if ($quiet) return;
-
- $sort = db_escape_string($_REQUEST["sort"]);
-
- if (!$sort || $sort == "undefined") {
- $sort = "reg_exp";
- }
-
- $result = db_query($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"];
- }
-
-
- $filter_search = db_escape_string($_REQUEST["search"]);
-
- if (array_key_exists("search", $_REQUEST)) {
- $_SESSION["prefs_filter_search"] = $filter_search;
- } else {
- $filter_search = $_SESSION["prefs_filter_search"];
- }
-
- print "<div id=\"pref-filter-wrap\" dojoType=\"dijit.layout.BorderContainer\" gutters=\"false\">";
- print "<div id=\"pref-filter-header\" dojoType=\"dijit.layout.ContentPane\" region=\"top\">";
- print "<div id=\"pref-filter-toolbar\" dojoType=\"dijit.Toolbar\">";
-
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Select')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"dijit.byId('filterTree').model.setAllChecked(true)\"
- dojoType=\"dijit.MenuItem\">".__('All')."</div>";
- print "<div onclick=\"dijit.byId('filterTree').model.setAllChecked(false)\"
- dojoType=\"dijit.MenuItem\">".__('None')."</div>";
- print "</div></div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return quickAddFilter()\">".
- __('Create filter')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return editSelectedFilter()\">".
- __('Edit')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return removeSelectedFilters()\">".
- __('Remove')."</button> ";
-
- if (defined('_ENABLE_FEED_DEBUGGING')) {
- print "<button dojoType=\"dijit.form.Button\" onclick=\"rescore_all_feeds()\">".
- __('Rescore articles')."</button> ";
- }
-
- print "</div>"; # toolbar
- print "</div>"; # toolbar-frame
- print "<div id=\"pref-filter-content\" dojoType=\"dijit.layout.ContentPane\" region=\"center\">";
-
- print "<div id=\"filterlistLoading\">
- <img src='images/indicator_tiny.gif'>".
- __("Loading, please wait...")."</div>";
-
- print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"filterStore\"
- url=\"backend.php?op=pref-filters&subop=getfiltertree\">
- </div>
- <div dojoType=\"lib.CheckBoxStoreModel\" jsId=\"filterModel\" store=\"filterStore\"
- query=\"{id:'root'}\" rootId=\"root\" rootLabel=\"Feeds\"
- childrenAttrs=\"items\" checkboxStrict=\"false\" checkboxAll=\"false\">
- </div>
- <div dojoType=\"fox.PrefFilterTree\" id=\"filterTree\"
- model=\"filterModel\" openOnClick=\"true\">
- <script type=\"dojo/method\" event=\"onLoad\" args=\"item\">
- Element.hide(\"filterlistLoading\");
- </script>
- <script type=\"dojo/method\" event=\"onClick\" args=\"item\">
- var id = String(item.id);
- var bare_id = id.substr(id.indexOf(':')+1);
-
- if (id.match('FILTER:')) {
- editFilter(bare_id);
- }
- </script>
-
- </div>";
-
- print "</div>"; #pane
- print "</div>"; #container
- }
-
-?>
diff --git a/modules/pref-instances.php b/modules/pref-instances.php
deleted file mode 100644
index 463dc70c4..000000000
--- a/modules/pref-instances.php
+++ /dev/null
@@ -1,204 +0,0 @@
-<?php
- function module_pref_instances($link) {
-
- if (!SINGLE_USER_MODE && $_SESSION["access_level"] < 10) {
- print __("Your access level is insufficient to open this tab.");
- return;
- }
-
- $subop = $_REQUEST['subop'];
-
- if ($subop == "remove") {
- $ids = db_escape_string($_REQUEST['ids']);
-
- db_query($link, "DELETE FROM ttrss_linked_instances WHERE
- id IN ($ids)");
-
- return;
- }
-
- if ($subop == "add") {
- $id = db_escape_string($_REQUEST["id"]);
- $access_url = db_escape_string($_REQUEST["access_url"]);
- $access_key = db_escape_string($_REQUEST["access_key"]);
-
- db_query($link, "BEGIN");
-
- $result = db_query($link, "SELECT id FROM ttrss_linked_instances
- WHERE access_url = '$access_url'");
-
- if (db_num_rows($result) == 0) {
- db_query($link, "INSERT INTO ttrss_linked_instances
- (access_url, access_key, last_connected, last_status_in, last_status_out)
- VALUES
- ('$access_url', '$access_key', '1970-01-01', -1, -1)");
-
- }
-
- db_query($link, "COMMIT");
-
- return;
- }
-
- if ($subop == "edit") {
-
- $id = db_escape_string($_REQUEST["id"]);
-
- $result = db_query($link, "SELECT * FROM ttrss_linked_instances WHERE
- id = '$id'");
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$id\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-instances\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"editSave\">";
-
- print "<div class=\"dlgSec\">".__("Instance")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- /* URL */
-
- $access_url = htmlspecialchars(db_fetch_result($result, 0, "access_url"));
-
- print __("URL:") . " ";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Instance URL")."\"
- regExp='^(http|https)://.*'
- style=\"font-size : 16px; width: 20em\" name=\"access_url\"
- value=\"$access_url\">";
-
- print "<hr/>";
-
- $access_key = htmlspecialchars(db_fetch_result($result, 0, "access_key"));
-
- /* Access key */
-
- print __("Access key:") . " ";
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\" required=\"1\"
- placeHolder=\"".__("Access key")."\" regExp='\w{40}'
- style=\"width: 20em\" name=\"access_key\" id=\"instance_edit_key\"
- value=\"$access_key\">";
-
- print "<p class='insensitive'>" . __("Use one access key for both linked instances.");
-
- print "</div>";
-
- print "<div class=\"dlgButtons\">
- <div style='float : left'>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceEditDlg').regenKey()\">".
- __('Generate new key')."</button>
- </div>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceEditDlg').execute()\">".
- __('Save')."</button>
- <button dojoType=\"dijit.form.Button\"
- onclick=\"return dijit.byId('instanceEditDlg').hide()\"\">".
- __('Cancel')."</button></div>";
-
- return;
- }
-
- if ($subop == "editSave") {
- $id = db_escape_string($_REQUEST["id"]);
- $access_url = db_escape_string($_REQUEST["access_url"]);
- $access_key = db_escape_string($_REQUEST["access_key"]);
-
- db_query($link, "UPDATE ttrss_linked_instances SET
- access_key = '$access_key', access_url = '$access_url',
- last_connected = '1970-01-01'
- WHERE id = '$id'");
-
- return;
- }
-
- if (!function_exists('curl_init')) {
- print "<div style='padding : 1em'>";
- print_error("This functionality requires CURL functions. Please enable CURL in your PHP configuration (you might also want to disable open_basedir in php.ini) and reload this page.");
- print "</div>";
- }
-
- print "<div id=\"pref-instance-wrap\" dojoType=\"dijit.layout.BorderContainer\" gutters=\"false\">";
- print "<div id=\"pref-instance-header\" dojoType=\"dijit.layout.ContentPane\" region=\"top\">";
-
- print "<div id=\"pref-instance-toolbar\" dojoType=\"dijit.Toolbar\">";
-
- $sort = db_escape_string($_REQUEST["sort"]);
-
- if (!$sort || $sort == "undefined") {
- $sort = "access_url";
- }
-
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Select')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"selectTableRows('prefInstanceList', 'all')\"
- dojoType=\"dijit.MenuItem\">".__('All')."</div>";
- print "<div onclick=\"selectTableRows('prefInstanceList', 'none')\"
- dojoType=\"dijit.MenuItem\">".__('None')."</div>";
- print "</div></div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"addInstance()\">".__('Link instance')."</button>";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"editSelectedInstance()\">".__('Edit')."</button>";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"removeSelectedInstances()\">".__('Remove')."</button>";
-
- print "</div>"; #toolbar
-
- $result = db_query($link, "SELECT *,
- (SELECT COUNT(*) FROM ttrss_linked_feeds
- WHERE instance_id = ttrss_linked_instances.id) AS num_feeds
- FROM ttrss_linked_instances
- ORDER BY $sort");
-
- print "<p class=\"insensitive\" style='margin-left : 1em;'>" . __("You can connect other instances of Tiny Tiny RSS to this one to share Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:");
-
- print " <a href=\"#\" onclick=\"alert('".htmlspecialchars(get_self_url_prefix())."')\">(display url)</a>";
-
- print "<p><table width='100%' id='prefInstanceList' class='prefInstanceList' cellspacing='0'>";
-
- print "<tr class=\"title\">
- <td align='center' width=\"5%\">&nbsp;</td>
- <td width=''><a href=\"#\" onclick=\"updateInstanceList('access_url')\">".__('Instance URL')."</a></td>
- <td width='20%'><a href=\"#\" onclick=\"updateInstanceList('access_key')\">".__('Access key')."</a></td>
- <td width='10%'><a href=\"#\" onclick=\"updateUsersList('last_connected')\">".__('Last connected')."</a></td>
- <td width='10%'><a href=\"#\" onclick=\"updateUsersList('num_feeds')\">".__('Stored feeds')."</a></td>
- </tr>";
-
- $lnum = 0;
-
- while ($line = db_fetch_assoc($result)) {
- $class = ($lnum % 2) ? "even" : "odd";
-
- $id = $line['id'];
- $this_row_id = "id=\"LIRR-$id\"";
-
- $line["last_connected"] = make_local_datetime($link, $line["last_connected"], false);
-
- print "<tr class=\"$class\" $this_row_id>";
-
- print "<td align='center'><input onclick='toggleSelectRow(this);'
- type=\"checkbox\" id=\"LICHK-$id\"></td>";
-
- $onclick = "onclick='editInstance($id, event)' title='".__('Click to edit')."'";
-
- $access_key = mb_substr($line['access_key'], 0, 4) . '...' .
- mb_substr($line['access_key'], -4);
-
- print "<td $onclick>" . htmlspecialchars($line['access_url']) . "</td>";
- print "<td $onclick>" . htmlspecialchars($access_key) . "</td>";
- print "<td $onclick>" . htmlspecialchars($line['last_connected']) . "</td>";
- print "<td $onclick>" . htmlspecialchars($line['num_feeds']) . "</td>";
-
- print "</tr>";
-
- ++$lnum;
- }
-
- print "</table>";
-
- print "</div>"; #pane
- print "</div>"; #container
-
- }
-?>
diff --git a/modules/pref-labels.php b/modules/pref-labels.php
deleted file mode 100644
index 72e6dd1e3..000000000
--- a/modules/pref-labels.php
+++ /dev/null
@@ -1,321 +0,0 @@
-<?php
- function module_pref_labels($link) {
-
- $subop = $_REQUEST["subop"];
-
- if ($subop == "edit") {
- $label_id = db_escape_string($_REQUEST['id']);
-
- $result = db_query($link, "SELECT * FROM ttrss_labels2 WHERE
- id = '$label_id' AND owner_uid = " . $_SESSION["uid"]);
-
- $line = db_fetch_assoc($result);
-
-# print "<form id=\"label_edit_form\" name=\"label_edit_form\"
-# onsubmit=\"return false;\">";
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$label_id\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-labels\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"save\">";
-
- print "<div class=\"dlgSec\">".__("Caption")."</div>";
-
- print "<div class=\"dlgSecCont\">";
-
- $fg_color = $line['fg_color'];
- $bg_color = $line['bg_color'];
-
- print "<span class=\"labelColorIndicator\" id=\"label-editor-indicator\" style='color : $fg_color; background-color : $bg_color; margin-bottom : 4px; margin-right : 4px'>&alpha;</span>";
-
- print "<input style=\"font-size : 16px\" name=\"caption\"
- dojoType=\"dijit.form.ValidationTextBox\"
- required=\"true\"
- value=\"".htmlspecialchars($line['caption'])."\">";
-
- print "</div>";
- print "<div class=\"dlgSec\">" . __("Colors") . "</div>";
- print "<div class=\"dlgSecCont\">";
-
- print "<table cellspacing=\"0\">";
-
- print "<tr><td>".__("Foreground:")."</td><td>".__("Background:").
- "</td></tr>";
-
- print "<tr><td style='padding-right : 10px'>";
-
- print "<input dojoType=\"dijit.form.TextBox\"
- style=\"display : none\" id=\"labelEdit_fgColor\"
- name=\"fg_color\" value=\"$fg_color\">";
- print "<input dojoType=\"dijit.form.TextBox\"
- style=\"display : none\" id=\"labelEdit_bgColor\"
- name=\"bg_color\" value=\"$bg_color\">";
-
- print "<div dojoType=\"dijit.ColorPalette\">
- <script type=\"dojo/method\" event=\"onChange\" args=\"fg_color\">
- dijit.byId(\"labelEdit_fgColor\").attr('value', fg_color);
- $('label-editor-indicator').setStyle({color: fg_color});
- </script>
- </div>";
- print "</div>";
-
- print "</td><td>";
-
- print "<div dojoType=\"dijit.ColorPalette\">
- <script type=\"dojo/method\" event=\"onChange\" args=\"bg_color\">
- dijit.byId(\"labelEdit_bgColor\").attr('value', bg_color);
- $('label-editor-indicator').setStyle({backgroundColor: bg_color});
- </script>
- </div>";
- print "</div>";
-
- print "</td></tr></table>";
- print "</div>";
-
-# print "</form>";
-
- print "<div class=\"dlgButtons\">";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('labelEditDlg').execute()\">".
- __('Save')."</button>";
- print "<button dojoType=\"dijit.form.Button\" onclick=\"dijit.byId('labelEditDlg').hide()\">".
- __('Cancel')."</button>";
- print "</div>";
-
- return;
- }
-
- if ($subop == "getlabeltree") {
- $root = array();
- $root['id'] = 'root';
- $root['name'] = __('Labels');
- $root['items'] = array();
-
- $result = db_query($link, "SELECT *
- FROM ttrss_labels2
- WHERE owner_uid = ".$_SESSION["uid"]."
- ORDER BY caption");
-
- while ($line = db_fetch_assoc($result)) {
- $label = array();
- $label['id'] = 'LABEL:' . $line['id'];
- $label['bare_id'] = $line['id'];
- $label['name'] = $line['caption'];
- $label['fg_color'] = $line['fg_color'];
- $label['bg_color'] = $line['bg_color'];
- $label['type'] = 'label';
- $label['checkbox'] = false;
-
- array_push($root['items'], $label);
- }
-
- $fl = array();
- $fl['identifier'] = 'id';
- $fl['label'] = 'name';
- $fl['items'] = array($root);
-
- print json_encode($fl);
- return;
- }
-
- if ($subop == "color-set") {
- $kind = db_escape_string($_REQUEST["kind"]);
- $ids = split(',', db_escape_string($_REQUEST["ids"]));
- $color = db_escape_string($_REQUEST["color"]);
- $fg = db_escape_string($_REQUEST["fg"]);
- $bg = db_escape_string($_REQUEST["bg"]);
-
- foreach ($ids as $id) {
-
- if ($kind == "fg" || $kind == "bg") {
- db_query($link, "UPDATE ttrss_labels2 SET
- ${kind}_color = '$color' WHERE id = '$id'
- AND owner_uid = " . $_SESSION["uid"]);
- } else {
- db_query($link, "UPDATE ttrss_labels2 SET
- fg_color = '$fg', bg_color = '$bg' WHERE id = '$id'
- AND owner_uid = " . $_SESSION["uid"]);
- }
-
- $caption = db_escape_string(label_find_caption($link, $id, $_SESSION["uid"]));
-
- /* Remove cached data */
-
- db_query($link, "UPDATE ttrss_user_entries SET label_cache = ''
- WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $_SESSION["uid"]);
-
- }
-
- return;
- }
-
- if ($subop == "color-reset") {
- $ids = split(',', db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- db_query($link, "UPDATE ttrss_labels2 SET
- fg_color = '', bg_color = '' WHERE id = '$id'
- AND owner_uid = " . $_SESSION["uid"]);
-
- $caption = db_escape_string(label_find_caption($link, $id, $_SESSION["uid"]));
-
- /* Remove cached data */
-
- db_query($link, "UPDATE ttrss_user_entries SET label_cache = ''
- WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $_SESSION["uid"]);
- }
-
- }
-
- if ($subop == "save") {
-
- $id = db_escape_string($_REQUEST["id"]);
- $caption = db_escape_string(trim($_REQUEST["caption"]));
-
- db_query($link, "BEGIN");
-
- $result = db_query($link, "SELECT caption FROM ttrss_labels2
- WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]);
-
- if (db_num_rows($result) != 0) {
- $old_caption = db_fetch_result($result, 0, "caption");
-
- $result = db_query($link, "SELECT id FROM ttrss_labels2
- WHERE caption = '$caption' AND owner_uid = ". $_SESSION["uid"]);
-
- if (db_num_rows($result) == 0) {
- if ($caption) {
- $result = db_query($link, "UPDATE ttrss_labels2 SET
- caption = '$caption' WHERE id = '$id' AND
- owner_uid = " . $_SESSION["uid"]);
-
- /* Update filters that reference label being renamed */
-
- $old_caption = db_escape_string($old_caption);
-
- db_query($link, "UPDATE ttrss_filters SET
- action_param = '$caption' WHERE action_param = '$old_caption'
- AND action_id = 7
- AND owner_uid = " . $_SESSION["uid"]);
-
- print $_REQUEST["value"];
- } else {
- print $old_caption;
- }
- } else {
- print $old_caption;
- }
- }
-
- db_query($link, "COMMIT");
-
- return;
- }
-
- if ($subop == "remove") {
-
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- label_remove($link, $id, $_SESSION["uid"]);
- }
-
- }
-
- if ($subop == "add") {
- $caption = db_escape_string($_REQUEST["caption"]);
- $output = db_escape_string($_REQUEST["output"]);
-
- if ($caption) {
-
- if (label_create($link, $caption)) {
- if (!$output) {
- print T_sprintf("Created label <b>%s</b>", htmlspecialchars($caption));
- }
- }
-
- if ($output == "select") {
- header("Content-Type: text/xml");
-
- print "<rpc-reply><payload>";
-
- print_label_select($link, "select_label",
- $caption, "");
-
- print "</payload></rpc-reply>";
- }
- }
-
- return;
- }
-
- $sort = db_escape_string($_REQUEST["sort"]);
-
- if (!$sort || $sort == "undefined") {
- $sort = "caption";
- }
-
- $label_search = db_escape_string($_REQUEST["search"]);
-
- if (array_key_exists("search", $_REQUEST)) {
- $_SESSION["prefs_label_search"] = $label_search;
- } else {
- $label_search = $_SESSION["prefs_label_search"];
- }
-
- print "<div id=\"pref-label-wrap\" dojoType=\"dijit.layout.BorderContainer\" gutters=\"false\">";
- print "<div id=\"pref-label-header\" dojoType=\"dijit.layout.ContentPane\" region=\"top\">";
- print "<div id=\"pref-label-toolbar\" dojoType=\"dijit.Toolbar\">";
-
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Select')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"dijit.byId('labelTree').model.setAllChecked(true)\"
- dojoType=\"dijit.MenuItem\">".__('All')."</div>";
- print "<div onclick=\"dijit.byId('labelTree').model.setAllChecked(false)\"
- dojoType=\"dijit.MenuItem\">".__('None')."</div>";
- print "</div></div>";
-
- print"<button dojoType=\"dijit.form.Button\" onclick=\"return addLabel()\">".
- __('Create label')."</button dojoType=\"dijit.form.Button\"> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"removeSelectedLabels()\">".
- __('Remove')."</button dojoType=\"dijit.form.Button\"> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"labelColorReset()\">".
- __('Clear colors')."</button dojoType=\"dijit.form.Button\">";
-
-
- print "</div>"; #toolbar
- print "</div>"; #pane
- print "<div id=\"pref-label-content\" dojoType=\"dijit.layout.ContentPane\" region=\"center\">";
-
- print "<div id=\"labellistLoading\">
- <img src='images/indicator_tiny.gif'>".
- __("Loading, please wait...")."</div>";
-
- print "<div dojoType=\"dojo.data.ItemFileWriteStore\" jsId=\"labelStore\"
- url=\"backend.php?op=pref-labels&subop=getlabeltree\">
- </div>
- <div dojoType=\"lib.CheckBoxStoreModel\" jsId=\"labelModel\" store=\"labelStore\"
- query=\"{id:'root'}\" rootId=\"root\"
- childrenAttrs=\"items\" checkboxStrict=\"false\" checkboxAll=\"false\">
- </div>
- <div dojoType=\"fox.PrefLabelTree\" id=\"labelTree\"
- model=\"labelModel\" openOnClick=\"true\">
- <script type=\"dojo/method\" event=\"onLoad\" args=\"item\">
- Element.hide(\"labellistLoading\");
- </script>
- <script type=\"dojo/method\" event=\"onClick\" args=\"item\">
- var id = String(item.id);
- var bare_id = id.substr(id.indexOf(':')+1);
-
- if (id.match('LABEL:')) {
- editLabel(bare_id);
- }
- </script>
- </div>";
-
- print "</div>"; #pane
- print "</div>"; #container
- }
-
-?>
diff --git a/modules/pref-prefs.php b/modules/pref-prefs.php
deleted file mode 100644
index 838c722c3..000000000
--- a/modules/pref-prefs.php
+++ /dev/null
@@ -1,512 +0,0 @@
-<?php
- function module_pref_prefs($link) {
-
- global $access_level_names;
-
- $subop = $_REQUEST["subop"];
-
- $prefs_blacklist = array("HIDE_READ_FEEDS", "FEEDS_SORT_BY_UNREAD",
- "STRIP_UNSAFE_TAGS");
-
- $profile_blacklist = array("ALLOW_DUPLICATE_POSTS", "PURGE_OLD_DAYS",
- "PURGE_UNREAD_ARTICLES", "DIGEST_ENABLE", "DIGEST_CATCHUP",
- "BLACKLISTED_TAGS", "ENABLE_API_ACCESS", "UPDATE_POST_ON_CHECKSUM_CHANGE",
- "DEFAULT_UPDATE_INTERVAL", "USER_TIMEZONE", "SORT_HEADLINES_BY_FEED_DATE",
- "SSL_CERT_SERIAL");
-
- /* if (FORCE_ARTICLE_PURGE != 0) {
- array_push($prefs_blacklist, "PURGE_OLD_DAYS");
- array_push($prefs_blacklist, "PURGE_UNREAD_ARTICLES");
- } */
-
- if ($subop == "change-password") {
-
- $old_pw = $_POST["old_password"];
- $new_pw = $_POST["new_password"];
- $con_pw = $_POST["confirm_password"];
-
- if ($old_pw == "") {
- print "ERROR: ".__("Old password cannot be blank.");
- return;
- }
-
- if ($new_pw == "") {
- print "ERROR: ".__("New password cannot be blank.");
- return;
- }
-
- if ($new_pw != $con_pw) {
- print "ERROR: ".__("Entered passwords do not match.");
- return;
- }
-
- $old_pw_hash1 = encrypt_password($old_pw);
- $old_pw_hash2 = encrypt_password($old_pw, $_SESSION["name"]);
- $new_pw_hash = encrypt_password($new_pw, $_SESSION["name"]);
-
- $active_uid = $_SESSION["uid"];
-
- if ($old_pw && $new_pw) {
-
- $login = db_escape_string($_SERVER['PHP_AUTH_USER']);
-
- $result = db_query($link, "SELECT id FROM ttrss_users WHERE
- id = '$active_uid' AND (pwd_hash = '$old_pw_hash1' OR
- pwd_hash = '$old_pw_hash2')");
-
- if (db_num_rows($result) == 1) {
- db_query($link, "UPDATE ttrss_users SET pwd_hash = '$new_pw_hash'
- WHERE id = '$active_uid'");
-
- $_SESSION["pwd_hash"] = $new_pw_hash;
-
- print __("Password has been changed.");
- } else {
- print "ERROR: ".__('Old password is incorrect.');
- }
- }
-
- return;
-
- } else if ($subop == "save-config") {
-
-# $_SESSION["prefs_op_result"] = "save-config";
-
- $_SESSION["prefs_cache"] = false;
-
-// print_r($_POST);
-
- $orig_theme = get_pref($link, "_THEME_ID");
-
- foreach (array_keys($_POST) as $pref_name) {
-
- $pref_name = db_escape_string($pref_name);
- $value = db_escape_string($_POST[$pref_name]);
-
- set_pref($link, $pref_name, $value);
-
- }
-
- if ($orig_theme != get_pref($link, "_THEME_ID")) {
- print "PREFS_THEME_CHANGED";
- } else {
- print __("The configuration was saved.");
- }
-
- return;
-
- } else if ($subop == "getHelp") {
-
- $pref_name = db_escape_string($_REQUEST["pn"]);
-
- $result = db_query($link, "SELECT help_text FROM ttrss_prefs
- WHERE pref_name = '$pref_name'");
-
- if (db_num_rows($result) > 0) {
- $help_text = db_fetch_result($result, 0, "help_text");
- print $help_text;
- } else {
- printf(__("Unknown option: %s"), $pref_name);
- }
-
- } else if ($subop == "change-email") {
-
- $email = db_escape_string($_POST["email"]);
- $full_name = db_escape_string($_POST["full_name"]);
-
- $active_uid = $_SESSION["uid"];
-
- db_query($link, "UPDATE ttrss_users SET email = '$email',
- full_name = '$full_name' WHERE id = '$active_uid'");
-
- print __("Your personal data has been saved.");
-
- return;
-
- } else if ($subop == "reset-config") {
-
- $_SESSION["prefs_op_result"] = "reset-to-defaults";
-
- if ($_SESSION["profile"]) {
- $profile_qpart = "profile = '" . $_SESSION["profile"] . "'";
- } else {
- $profile_qpart = "profile IS NULL";
- }
-
- db_query($link, "DELETE FROM ttrss_user_prefs
- WHERE $profile_qpart AND owner_uid = ".$_SESSION["uid"]);
-
- initialize_user_prefs($link, $_SESSION["uid"], $_SESSION["profile"]);
-
- print "PREFS_THEME_CHANGED";
-
-// print __("The configuration was reset to defaults.");
-
- return;
-
- } else {
-
- if (!SINGLE_USER_MODE) {
-
- $_SESSION["prefs_op_result"] = "";
-
- print "<div dojoType=\"dijit.layout.AccordionContainer\" region=\"center\">";
- print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Personal data')."\">";
-
- print "<form dojoType=\"dijit.form.Form\" id=\"changeUserdataForm\">";
-
- print "<script type=\"dojo/method\" event=\"onSubmit\" args=\"evt\">
- evt.preventDefault();
- if (this.validate()) {
- notify_progress('Saving data...', true);
-
- new Ajax.Request('backend.php', {
- parameters: dojo.objectToQuery(this.getValues()),
- onComplete: function(transport) {
- notify_callback2(transport);
- } });
-
- }
- </script>";
-
- print "<table width=\"100%\" class=\"prefPrefsList\">";
-
- $result = db_query($link, "SELECT email,full_name,
- access_level FROM ttrss_users
- WHERE id = ".$_SESSION["uid"]);
-
- $email = htmlspecialchars(db_fetch_result($result, 0, "email"));
- $full_name = htmlspecialchars(db_fetch_result($result, 0, "full_name"));
-
- print "<tr><td width=\"40%\">".__('Full name')."</td>";
- print "<td class=\"prefValue\"><input dojoType=\"dijit.form.ValidationTextBox\" name=\"full_name\" required=\"1\"
- value=\"$full_name\"></td></tr>";
-
- print "<tr><td width=\"40%\">".__('E-mail')."</td>";
- print "<td class=\"prefValue\"><input dojoType=\"dijit.form.ValidationTextBox\" name=\"email\" required=\"1\" value=\"$email\"></td></tr>";
-
- if (!SINGLE_USER_MODE) {
- $access_level = db_fetch_result($result, 0, "access_level");
- print "<tr><td width=\"40%\">".__('Access level')."</td>";
- print "<td>" . $access_level_names[$access_level] . "</td></tr>";
- }
-
- print "</table>";
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"change-email\">";
-
- print "<p><button dojoType=\"dijit.form.Button\" type=\"submit\">".
- __("Save data")."</button>";
-
- print "</form>";
-
- print "</div>"; # pane
- print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Authentication')."\">";
-
- $result = db_query($link, "SELECT id FROM ttrss_users
- WHERE id = ".$_SESSION["uid"]." AND pwd_hash
- = 'SHA1:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8'");
-
- if (db_num_rows($result) != 0) {
- print format_warning(__("Your password is at default value, please change it."), "default_pass_warning");
- }
-
- print "<form dojoType=\"dijit.form.Form\">";
-
- print "<script type=\"dojo/method\" event=\"onSubmit\" args=\"evt\">
- evt.preventDefault();
- if (this.validate()) {
- notify_progress('Changing password...', true);
-
- new Ajax.Request('backend.php', {
- parameters: dojo.objectToQuery(this.getValues()),
- onComplete: function(transport) {
- notify('');
- if (transport.responseText.indexOf('ERROR: ') == 0) {
- notify_error(transport.responseText.replace('ERROR: ', ''));
- } else {
- notify_info(transport.responseText);
- var warn = $('default_pass_warning');
- if (warn) Element.hide(warn);
- }
- }});
- this.reset();
- }
- </script>";
-
- print "<table width=\"100%\" class=\"prefPrefsList\">";
-
- print "<tr><td width=\"40%\">".__("Old password")."</td>";
- print "<td class=\"prefValue\"><input dojoType=\"dijit.form.ValidationTextBox\" type=\"password\" required=\"1\" name=\"old_password\"></td></tr>";
-
- print "<tr><td width=\"40%\">".__("New password")."</td>";
-
- print "<td class=\"prefValue\"><input dojoType=\"dijit.form.ValidationTextBox\" type=\"password\" required=\"1\"
- name=\"new_password\"></td></tr>";
-
- print "<tr><td width=\"40%\">".__("Confirm password")."</td>";
-
- print "<td class=\"prefValue\"><input dojoType=\"dijit.form.ValidationTextBox\" type=\"password\" required=\"1\" name=\"confirm_password\"></td></tr>";
-
- print "</table>";
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"change-password\">";
-
- print "<p><button dojoType=\"dijit.form.Button\" type=\"submit\">".
- __("Change password")."</button>";
-
- print "</form>";
-
- print "</div>"; #pane
- }
-
- print "<div dojoType=\"dijit.layout.AccordionPane\" selected=\"true\" title=\"".__('Preferences')."\">";
-
- print "<form dojoType=\"dijit.form.Form\" id=\"changeSettingsForm\">";
-
- print "<script type=\"dojo/method\" event=\"onSubmit\" args=\"evt\">
- evt.preventDefault();
- if (this.validate()) {
- console.log(dojo.objectToQuery(this.getValues()));
-
- new Ajax.Request('backend.php', {
- parameters: dojo.objectToQuery(this.getValues()),
- onComplete: function(transport) {
- var msg = transport.responseText;
- if (msg.match('PREFS_THEME_CHANGED')) {
- window.location.reload();
- } else {
- notify_info(msg);
- }
- } });
- }
- </script>";
-
-
- print '<div dojoType="dijit.layout.BorderContainer" gutters="false">';
-
- print '<div dojoType="dijit.layout.ContentPane" region="center" style="overflow-y : auto">';
-
- if ($_SESSION["profile"]) {
- print_notice("Some preferences are only available in default profile.");
- }
-
- if ($_SESSION["profile"]) {
- initialize_user_prefs($link, $_SESSION["uid"], $_SESSION["profile"]);
- $profile_qpart = "profile = '" . $_SESSION["profile"] . "'";
- } else {
- initialize_user_prefs($link, $_SESSION["uid"]);
- $profile_qpart = "profile IS NULL";
- }
-
- $result = db_query($link, "SELECT
- ttrss_user_prefs.pref_name,short_desc,help_text,value,type_name,
- section_name,def_value,section_id
- FROM ttrss_prefs,ttrss_prefs_types,ttrss_prefs_sections,ttrss_user_prefs
- WHERE type_id = ttrss_prefs_types.id AND
- $profile_qpart AND
- section_id = ttrss_prefs_sections.id AND
- ttrss_user_prefs.pref_name = ttrss_prefs.pref_name AND
- short_desc != '' AND
- owner_uid = ".$_SESSION["uid"]."
- ORDER BY section_id,short_desc");
-
- $lnum = 0;
-
- $active_section = "";
-
- while ($line = db_fetch_assoc($result)) {
-
- if (in_array($line["pref_name"], $prefs_blacklist)) {
- continue;
- }
-
- if ($_SESSION["profile"] && in_array($line["pref_name"],
- $profile_blacklist)) {
- continue;
- }
-
- if ($active_section != $line["section_name"]) {
-
- if ($active_section != "") {
- print "</table>";
- }
-
- print "<table width=\"100%\" class=\"prefPrefsList\">";
-
- $active_section = $line["section_name"];
-
- print "<tr><td colspan=\"3\"><h3>".__($active_section)."</h3></td></tr>";
-
- if ($line["section_id"] == 2) {
- print "<tr><td width=\"40%\">".__("Select theme")."</td>";
-
- $user_theme = get_pref($link, "_THEME_ID");
- $themes = get_all_themes();
-
- print "<td><select name=\"_THEME_ID\" dojoType=\"dijit.form.Select\">";
- print "<option value='Default'>".__('Default')."</option>";
- print "<option value='----------------' disabled=\"1\">--------</option>";
-
- foreach ($themes as $t) {
- $base = $t['base'];
- $name = $t['name'];
-
- if ($base == $user_theme) {
- $selected = "selected=\"1\"";
- } else {
- $selected = "";
- }
-
- print "<option $selected value='$base'>$name</option>";
-
- }
-
- print "</select></td></tr>";
- }
-
-// print "<tr class=\"title\">
-// <td width=\"25%\">Option</td><td>Value</td></tr>";
-
- $lnum = 0;
- }
-
-// $class = ($lnum % 2) ? "even" : "odd";
-
- print "<tr>";
-
- $type_name = $line["type_name"];
- $pref_name = $line["pref_name"];
- $value = $line["value"];
- $def_value = $line["def_value"];
- $help_text = $line["help_text"];
-
- print "<td width=\"40%\" class=\"prefName\" id=\"$pref_name\">" . __($line["short_desc"]);
-
- if ($help_text) print "<div class=\"prefHelp\">".__($help_text)."</div>";
-
- print "</td>";
-
- print "<td class=\"prefValue\">";
-
- if ($pref_name == "USER_TIMEZONE") {
-
- $timezones = explode("\n", file_get_contents("lib/timezones.txt"));
-
- print_select($pref_name, $value, $timezones, 'dojoType="dijit.form.FilteringSelect"');
- } else if ($pref_name == "USER_STYLESHEET") {
-
- print "<button dojoType=\"dijit.form.Button\"
- onclick=\"customizeCSS()\">" . __('Customize') . "</button>";
-
- } else if ($pref_name == "DEFAULT_ARTICLE_LIMIT") {
-
- $limits = array(15, 30, 45, 60);
-
- print_select($pref_name, $value, $limits,
- 'dojoType="dijit.form.Select"');
-
- } else if ($pref_name == "DEFAULT_UPDATE_INTERVAL") {
-
- global $update_intervals_nodefault;
-
- print_select_hash($pref_name, $value, $update_intervals_nodefault,
- 'dojoType="dijit.form.Select"');
-
- } else if ($type_name == "bool") {
-// print_select($pref_name, $value, array("true", "false"));
-
- if ($value == "true") {
- $value = __("Yes");
- } else {
- $value = __("No");
- }
-
- if ($pref_name == "PURGE_UNREAD_ARTICLES" && FORCE_ARTICLE_PURGE != 0) {
- $disabled = "disabled=\"1\"";
- $value = __("Yes");
- } else {
- $disabled = "";
- }
-
- print_radio($pref_name, $value, __("Yes"), array(__("Yes"), __("No")),
- $disabled);
-
- } else if (array_search($pref_name, array('FRESH_ARTICLE_MAX_AGE', 'DEFAULT_ARTICLE_LIMIT',
- 'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT')) !== false) {
-
- $regexp = ($type_name == 'integer') ? 'regexp="^\d*$"' : '';
-
- if ($pref_name == "PURGE_OLD_DAYS" && FORCE_ARTICLE_PURGE != 0) {
- $disabled = "disabled=\"1\"";
- $value = FORCE_ARTICLE_PURGE;
- } else {
- $disabled = "";
- }
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\"
- required=\"1\" $regexp $disabled
- name=\"$pref_name\" value=\"$value\">";
-
- } else if ($pref_name == "SSL_CERT_SERIAL") {
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\"
- id=\"SSL_CERT_SERIAL\" readonly=\"1\"
- name=\"$pref_name\" value=\"$value\">";
-
- $cert_serial = htmlspecialchars(get_ssl_certificate_id());
- $has_serial = ($cert_serial) ? "false" : "true";
-
- print " <button dojoType=\"dijit.form.Button\" disabled=\"$has_serial\"
- onclick=\"insertSSLserial('$cert_serial')\">" .
- __('Register') . "</button>";
-
- print " <button dojoType=\"dijit.form.Button\"
- onclick=\"insertSSLserial('')\">" .
- __('Clear') . "</button>";
-
- } else {
- $regexp = ($type_name == 'integer') ? 'regexp="^\d*$"' : '';
-
- print "<input dojoType=\"dijit.form.ValidationTextBox\"
- $regexp
- name=\"$pref_name\" value=\"$value\">";
- }
-
- print "</td>";
-
- print "</tr>";
-
- $lnum++;
- }
-
- print "</table>";
-
- print '</div>'; # inside pane
- print '<div dojoType="dijit.layout.ContentPane" region="bottom">';
-
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"pref-prefs\">";
- print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"save-config\">";
-
- print "<button dojoType=\"dijit.form.Button\" type=\"submit\">".
- __('Save configuration')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return editProfiles()\">".
- __('Manage profiles')."</button> ";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"return validatePrefsReset()\">".
- __('Reset to defaults')."</button>";
-
- print '</div>'; # inner pane
- print '</div>'; # border container
-
- print "</form>";
-
- print "</div>"; #pane
- print "</div>"; #container
-
- }
- }
-?>
diff --git a/modules/pref-users.php b/modules/pref-users.php
deleted file mode 100644
index 7be4eb437..000000000
--- a/modules/pref-users.php
+++ /dev/null
@@ -1,501 +0,0 @@
-<?php
- function module_pref_users($link) {
-
- global $access_level_names;
-
- if (!SINGLE_USER_MODE && $_SESSION["access_level"] < 10) {
- print __("Your access level is insufficient to open this tab.");
- return;
- }
-
- $subop = $_REQUEST["subop"];
-
- if ($subop == "user-details") {
-
- header("Content-Type: text/xml");
- print "<dlg id=\"$subop\">";
-
- $uid = sprintf("%d", $_REQUEST["id"]);
-
- print "<title>".__('User details')."</title>";
-
- print "<content><![CDATA[";
-
- $result = db_query($link, "SELECT login,
- ".SUBSTRING_FOR_DATE."(last_login,1,16) AS last_login,
- access_level,
- (SELECT COUNT(int_id) FROM ttrss_user_entries
- WHERE owner_uid = id) AS stored_articles,
- ".SUBSTRING_FOR_DATE."(created,1,16) AS created
- FROM ttrss_users
- WHERE id = '$uid'");
-
- if (db_num_rows($result) == 0) {
- print "<h1>".__('User not found')."</h1>";
- return;
- }
-
- // print "<h1>User Details</h1>";
-
- $login = db_fetch_result($result, 0, "login");
-
- print "<table width='100%'>";
-
- $last_login = make_local_datetime($link,
- db_fetch_result($result, 0, "last_login"), true);
-
- $created = make_local_datetime($link,
- db_fetch_result($result, 0, "created"), true);
-
- $access_level = db_fetch_result($result, 0, "access_level");
- $stored_articles = db_fetch_result($result, 0, "stored_articles");
-
- print "<tr><td>".__('Registered')."</td><td>$created</td></tr>";
- print "<tr><td>".__('Last logged in')."</td><td>$last_login</td></tr>";
-
- $result = db_query($link, "SELECT COUNT(id) as num_feeds FROM ttrss_feeds
- WHERE owner_uid = '$uid'");
-
- $num_feeds = db_fetch_result($result, 0, "num_feeds");
-
- print "<tr><td>".__('Subscribed feeds count')."</td><td>$num_feeds</td></tr>";
-
- print "</table>";
-
- print "<h1>".__('Subscribed feeds')."</h1>";
-
- $result = db_query($link, "SELECT id,title,site_url FROM ttrss_feeds
- WHERE owner_uid = '$uid' ORDER BY title");
-
- print "<ul class=\"userFeedList\">";
-
- $row_class = "odd";
-
- while ($line = db_fetch_assoc($result)) {
-
- $icon_file = ICONS_URL."/".$line["id"].".ico";
-
- if (file_exists($icon_file) && filesize($icon_file) > 0) {
- $feed_icon = "<img class=\"tinyFeedIcon\" src=\"$icon_file\">";
- } else {
- $feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
- }
-
- print "<li class=\"$row_class\">$feed_icon&nbsp;<a href=\"".$line["site_url"]."\">".$line["title"]."</a></li>";
-
- $row_class = $row_class == "even" ? "odd" : "even";
-
- }
-
- if (db_num_rows($result) < $num_feeds) {
- // FIXME - add link to show ALL subscribed feeds here somewhere
- print "<li><img
- class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">&nbsp;...</li>";
- }
-
- print "</ul>";
-
- print "<div align='center'>
- <button onclick=\"closeInfoBox()\">".__("Close this window").
- "</button></div>";
-
- print "]]></content></dlg>";
-
- return;
- }
-
- if ($subop == "edit") {
-
- header("Content-Type: text/xml");
-
- $id = db_escape_string($_REQUEST["id"]);
-
- print "<dlg id=\"$subop\">";
- print "<title>".__('User Editor')."</title>";
- print "<content><![CDATA[";
-
- print "<form id=\"user_edit_form\" onsubmit='return false'>";
-
- print "<input type=\"hidden\" name=\"id\" value=\"$id\">";
- print "<input type=\"hidden\" name=\"op\" value=\"pref-users\">";
- print "<input type=\"hidden\" name=\"subop\" value=\"editSave\">";
-
- $result = db_query($link, "SELECT * FROM ttrss_users WHERE id = '$id'");
-
- $login = db_fetch_result($result, 0, "login");
- $access_level = db_fetch_result($result, 0, "access_level");
- $email = db_fetch_result($result, 0, "email");
-
- $sel_disabled = ($id == $_SESSION["uid"]) ? "disabled" : "";
-
- print "<div class=\"dlgSec\">".__("User")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- if ($sel_disabled) {
- print "<input type=\"hidden\" name=\"login\" value=\"$login\">";
- print "<input size=\"30\" style=\"font-size : 16px\"
- onkeypress=\"return filterCR(event, userEditSave)\" $sel_disabled
- value=\"$login\">";
- } else {
- print "<input size=\"30\" style=\"font-size : 16px\"
- onkeypress=\"return filterCR(event, userEditSave)\" $sel_disabled
- name=\"login\" value=\"$login\">";
- }
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Authentication")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print __('Access level: ') . " ";
-
- if (!$sel_disabled) {
- print_select_hash("access_level", $access_level, $access_level_names,
- $sel_disabled);
- } else {
- print_select_hash("", $access_level, $access_level_names,
- $sel_disabled);
- print "<input type=\"hidden\" name=\"access_level\" value=\"$access_level\">";
- }
-
- print "<br/>";
-
- print __('Change password to') .
- " <input size=\"20\" onkeypress=\"return filterCR(event, userEditSave)\"
- name=\"password\">";
-
- print "</div>";
-
- print "<div class=\"dlgSec\">".__("Options")."</div>";
- print "<div class=\"dlgSecCont\">";
-
- print __('E-mail: ').
- " <input size=\"30\" name=\"email\" onkeypress=\"return filterCR(event, userEditSave)\"
- value=\"$email\">";
-
- print "</div>";
-
- print "</table>";
-
- print "</form>";
-
- print "<div class=\"dlgButtons\">
- <button onclick=\"return userEditSave()\">".
- __('Save')."</button>
- <button onclick=\"return userEditCancel()\">".
- __('Cancel')."</button></div>";
-
- print "]]></content></dlg>";
-
- return;
- }
-
- if ($subop == "editSave") {
-
- if ($_SESSION["access_level"] >= 10) {
-
- $login = db_escape_string(trim($_REQUEST["login"]));
- $uid = db_escape_string($_REQUEST["id"]);
- $access_level = (int) $_REQUEST["access_level"];
- $email = db_escape_string(trim($_REQUEST["email"]));
- $password = db_escape_string(trim($_REQUEST["password"]));
-
- if ($password) {
- $pwd_hash = encrypt_password($password, $login);
- $pass_query_part = "pwd_hash = '$pwd_hash', ";
- $status_msg = format_notice(T_sprintf('Changed password of user <b>%s</b>.', $login));
- } else {
- $pass_query_part = "";
- }
-
- db_query($link, "UPDATE ttrss_users SET $pass_query_part login = '$login',
- access_level = '$access_level', email = '$email' WHERE id = '$uid'");
-
- }
- } else if ($subop == "remove") {
-
- if ($_SESSION["access_level"] >= 10) {
-
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
-
- foreach ($ids as $id) {
- if ($id != $_SESSION["uid"] && $id != 1) {
- db_query($link, "DELETE FROM ttrss_tags WHERE owner_uid = '$id'");
- db_query($link, "DELETE FROM ttrss_feeds WHERE owner_uid = '$id'");
- db_query($link, "DELETE FROM ttrss_users WHERE id = '$id'");
- }
- }
- }
- } else if ($subop == "add") {
-
- if ($_SESSION["access_level"] >= 10) {
-
- $login = db_escape_string(trim($_REQUEST["login"]));
- $tmp_user_pwd = make_password(8);
- $pwd_hash = encrypt_password($tmp_user_pwd, $login);
-
- $result = db_query($link, "SELECT id FROM ttrss_users WHERE
- login = '$login'");
-
- if (db_num_rows($result) == 0) {
-
- db_query($link, "INSERT INTO ttrss_users
- (login,pwd_hash,access_level,last_login,created)
- VALUES ('$login', '$pwd_hash', 0, null, NOW())");
-
-
- $result = db_query($link, "SELECT id FROM ttrss_users WHERE
- login = '$login' AND pwd_hash = '$pwd_hash'");
-
- if (db_num_rows($result) == 1) {
-
- $new_uid = db_fetch_result($result, 0, "id");
-
- $status_msg = format_notice(T_sprintf("Added user <b>%s</b> with password <b>%s</b>",
- $login, $tmp_user_pwd));
-
- initialize_user($link, $new_uid);
-
- } else {
-
- $status_msg = format_warning(T_sprintf("Could not create user <b>%s</b>", $login));
-
- }
- } else {
- $status_msg = format_warning(T_sprintf("User <b>%s</b> already exists.", $login));
- }
- }
- } else if ($subop == "resetPass") {
-
- if ($_SESSION["access_level"] >= 10) {
-
- $uid = db_escape_string($_REQUEST["id"]);
-
- $result = db_query($link, "SELECT login,email
- FROM ttrss_users WHERE id = '$uid'");
-
- $login = db_fetch_result($result, 0, "login");
- $email = db_fetch_result($result, 0, "email");
- $tmp_user_pwd = make_password(8);
- $pwd_hash = encrypt_password($tmp_user_pwd, $login);
-
- db_query($link, "UPDATE ttrss_users SET pwd_hash = '$pwd_hash'
- WHERE id = '$uid'");
-
- $status_msg = format_notice(T_sprintf("Changed password of user <b>%s</b>
- to <b>%s</b>", $login, $tmp_user_pwd));
-
- require_once 'lib/phpmailer/class.phpmailer.php';
-
- if ($email) {
- $status_msg += format_notice(T_sprintf("Notifying <b>%s</b>.", $email));
-
- require_once "lib/MiniTemplator.class.php";
-
- $tpl = new MiniTemplator;
-
- $tpl->readTemplateFromFile("templates/resetpass_template.txt");
-
- $tpl->setVariable('LOGIN', $login);
- $tpl->setVariable('NEWPASS', $tmp_user_pwd);
-
- $tpl->addBlock('message');
-
- $message = "";
-
- $tpl->generateOutputToString($message);
-
- $mail = new PHPMailer();
-
- $mail->PluginDir = "lib/phpmailer/";
- $mail->SetLanguage("en", "lib/phpmailer/language/");
-
- $mail->CharSet = "UTF-8";
-
- $mail->From = DIGEST_FROM_ADDRESS;
- $mail->FromName = DIGEST_FROM_NAME;
- $mail->AddAddress($email, $login);
-
- if (DIGEST_SMTP_HOST) {
- $mail->Host = DIGEST_SMTP_HOST;
- $mail->Mailer = "smtp";
- $mail->SMTPAuth = DIGEST_SMTP_LOGIN != '';
- $mail->Username = DIGEST_SMTP_LOGIN;
- $mail->Password = DIGEST_SMTP_PASSWORD;
- }
-
- $mail->IsHTML(false);
- $mail->Subject = __("[tt-rss] Password change notification");
- $mail->Body = $message;
-
- $rc = $mail->Send();
-
- if (!$rc) print_error($mail->ErrorInfo);
-
-/* mail("$login <$email>", "Password reset notification",
- "Hi, $login.\n".
- "\n".
- "Your password for this TT-RSS installation was reset by".
- " an administrator.\n".
- "\n".
- "Your new password is $tmp_user_pwd, please remember".
- " it for later reference.\n".
- "\n".
- "Sincerely, TT-RSS Mail Daemon.", "From: " . MAIL_FROM); */
- }
-
- print "</div>";
-
- }
- }
-
- print "<div id=\"pref-user-wrap\" dojoType=\"dijit.layout.BorderContainer\" gutters=\"false\">";
- print "<div id=\"pref-user-header\" dojoType=\"dijit.layout.ContentPane\" region=\"top\">";
-
- print "<div id=\"pref-user-toolbar\" dojoType=\"dijit.Toolbar\">";
-
- $user_search = db_escape_string($_REQUEST["search"]);
-
- if (array_key_exists("search", $_REQUEST)) {
- $_SESSION["prefs_user_search"] = $user_search;
- } else {
- $user_search = $_SESSION["prefs_user_search"];
- }
-
- print "<div style='float : right; padding-right : 4px;'>
- <input dojoType=\"dijit.form.TextBox\" id=\"user_search\" size=\"20\" type=\"search\"
- value=\"$user_search\">
- <button dojoType=\"dijit.form.Button\" onclick=\"javascript:updateUsersList()\">".
- __('Search')."</button>
- </div>";
-
- $sort = db_escape_string($_REQUEST["sort"]);
-
- if (!$sort || $sort == "undefined") {
- $sort = "login";
- }
-
- print "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Select')."</span>";
- print "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
- print "<div onclick=\"selectTableRows('prefUserList', 'all')\"
- dojoType=\"dijit.MenuItem\">".__('All')."</div>";
- print "<div onclick=\"selectTableRows('prefUserList', 'none')\"
- dojoType=\"dijit.MenuItem\">".__('None')."</div>";
- print "</div></div>";
-
- print "<button dojoType=\"dijit.form.Button\" onclick=\"javascript:addUser()\">".__('Create user')."</button>";
-
- print "
- <button dojoType=\"dijit.form.Button\" onclick=\"javascript:selectedUserDetails()\">".
- __('Details')."</button dojoType=\"dijit.form.Button\">
- <button dojoType=\"dijit.form.Button\" onclick=\"javascript:editSelectedUser()\">".
- __('Edit')."</button dojoType=\"dijit.form.Button\">
- <button dojoType=\"dijit.form.Button\" onclick=\"javascript:removeSelectedUsers()\">".
- __('Remove')."</button dojoType=\"dijit.form.Button\">
- <button dojoType=\"dijit.form.Button\" onclick=\"javascript:resetSelectedUserPass()\">".
- __('Reset password')."</button dojoType=\"dijit.form.Button\">";
-
- print "</div>"; #toolbar
- print "</div>"; #pane
- print "<div id=\"pref-user-content\" dojoType=\"dijit.layout.ContentPane\" region=\"center\">";
- print "<p>$status_msg";
-
- if ($user_search) {
-
- $user_search = split(" ", $user_search);
- $tokens = array();
-
- foreach ($user_search as $token) {
- $token = trim($token);
- array_push($tokens, "(UPPER(login) LIKE UPPER('%$token%'))");
- }
-
- $user_search_query = "(" . join($tokens, " AND ") . ") AND ";
-
- } else {
- $user_search_query = "";
- }
-
- $result = db_query($link, "SELECT
- id,login,access_level,email,
- ".SUBSTRING_FOR_DATE."(last_login,1,16) as last_login,
- ".SUBSTRING_FOR_DATE."(created,1,16) as created
- FROM
- ttrss_users
- WHERE
- $user_search_query
- id > 0
- ORDER BY $sort");
-
- if (db_num_rows($result) > 0) {
-
- print "<p><table width=\"100%\" cellspacing=\"0\"
- class=\"prefUserList\" id=\"prefUserList\">";
-
- print "<tr class=\"title\">
- <td align='center' width=\"5%\">&nbsp;</td>
- <td width=''><a href=\"#\" onclick=\"updateUsersList('login')\">".__('Login')."</a></td>
- <td width='20%'><a href=\"#\" onclick=\"updateUsersList('access_level')\">".__('Access Level')."</a></td>
- <td width='20%'><a href=\"#\" onclick=\"updateUsersList('created')\">".__('Registered')."</a></td>
- <td width='20%'><a href=\"#\" onclick=\"updateUsersList('last_login')\">".__('Last login')."</a></td></tr>";
-
- $lnum = 0;
-
- while ($line = db_fetch_assoc($result)) {
-
- $class = ($lnum % 2) ? "even" : "odd";
-
- $uid = $line["id"];
- $edit_uid = $_REQUEST["id"];
-
- if ($subop == "edit" && $uid != $edit_uid) {
- $class .= " Grayed";
- $this_row_id = "";
- } else {
- $this_row_id = "id=\"UMRR-$uid\"";
- }
-
- print "<tr class=\"$class\" $this_row_id>";
-
- $line["login"] = htmlspecialchars($line["login"]);
-
- $line["created"] = make_local_datetime($link, $line["created"], false);
- $line["last_login"] = make_local_datetime($link, $line["last_login"], false);
-
- print "<td align='center'><input onclick='toggleSelectRow(this);'
- type=\"checkbox\" id=\"UMCHK-$uid\"></td>";
-
- $onclick = "onclick='editUser($uid, event)' title='".__('Click to edit')."'";
-
- print "<td $onclick>" . $line["login"] . "</td>";
-
- if (!$line["email"]) $line["email"] = "&nbsp;";
-
- print "<td $onclick>" . $access_level_names[$line["access_level"]] . "</td>";
- print "<td $onclick>" . $line["created"] . "</td>";
- print "<td $onclick>" . $line["last_login"] . "</td>";
-
- print "</tr>";
-
- ++$lnum;
- }
-
- print "</table>";
-
- } else {
- print "<p>";
- if (!$user_search) {
- print_warning(__('No users defined.'));
- } else {
- print_warning(__('No matching users found.'));
- }
- print "</p>";
-
- }
-
- print "</div>"; #pane
- print "</div>"; #container
-
- }
-?>