summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-01-13 13:44:20 +0300
committerAndrew Dolgov <[email protected]>2010-01-13 13:44:20 +0300
commitef88b1cca37705b97e939ac7fc500aff0b646dbf (patch)
treebf162b236c16a2e594147f0b5fee0857d2da76a3 /modules
parenta5819bb35d94e318d3d221dd7bbc4bea36c24ef0 (diff)
feed archive and feed browser improvements
Diffstat (limited to 'modules')
-rw-r--r--modules/backend-rpc.php76
-rw-r--r--modules/popup-dialog.php56
-rw-r--r--modules/pref-feeds.php54
3 files changed, 167 insertions, 19 deletions
diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php
index e10a20de3..1e0732ef8 100644
--- a/modules/backend-rpc.php
+++ b/modules/backend-rpc.php
@@ -3,6 +3,28 @@
$subop = $_REQUEST["subop"];
+ if ($subop == "remarchive") {
+ $ids = split(",", db_escape_string($_REQUEST["ids"]));
+
+ print "<rpc-reply>";
+
+ 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);
+
+ print "<feed id='$id' rc='$rc'/>";
+
+ }
+
+ print "</rpc-reply>";
+
+ return;
+ }
+
if ($subop == "addfeed") {
$feed = db_escape_string($_REQUEST['feed']);
@@ -569,7 +591,7 @@
return;
}
- if ($subop == "feedBrowser") {
+ if ($subop == "updateFeedBrowser") {
$search = db_escape_string($_REQUEST["search"]);
$limit = db_escape_string($_REQUEST["limit"]);
@@ -582,11 +604,63 @@
print "]]>";
print "</content>";
print "<num-results value=\"$ctr\"/>";
+ print "<mode value=\"$mode\"/>";
print "</rpc-reply>";
return;
}
+
+ if ($subop == "massSubscribe") {
+
+ $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $mode = $_REQUEST["mode"];
+
+ $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);
+ }
+ }
+
+ $num_feeds = count($subscribed);
+
+ print "<rpc-reply>";
+ print "<num-feeds value='$num_feeds'/>";
+ print "</rpc-reply>";
+
+ return;
+ }
+
if ($subop == "download") {
$stage = (int) $_REQUEST["stage"];
$cidt = (int)db_escape_string($_REQUEST["cidt"]);
diff --git a/modules/popup-dialog.php b/modules/popup-dialog.php
index b5aae1846..c3285fb0c 100644
--- a/modules/popup-dialog.php
+++ b/modules/popup-dialog.php
@@ -142,6 +142,62 @@
return;
}
+ if ($id == "feedBrowser") {
+
+ print "<div id=\"infoBoxTitle\">".__('Feed Browser')."</div>";
+
+ print "<div class=\"infoBoxContents\">";
+
+ $browser_search = db_escape_string($_REQUEST["search"]);
+
+ print "<form onsubmit='return false;' display='inline'
+ name='feed_browser' id='feed_browser'>";
+
+ print "<input type=\"hidden\" name=\"op\" value=\"rpc\">";
+ print "<input type=\"hidden\" name=\"subop\" value=\"updateFeedBrowser\">";
+
+ print "
+ <div style='float : right'>
+ <img style='display : none'
+ id='feed_browser_spinner' src='images/indicator_white.gif'>
+ <input name=\"search\" size=\"20\" type=\"search\"
+ onchange=\"javascript:updateFeedBrowser()\" value=\"$browser_search\">
+ <button onclick=\"javascript:updateFeedBrowser()\">".__('Search')."</button>
+ </div>";
+
+ print " <select name=\"mode\" onchange=\"updateFeedBrowser()\">
+ <option value='1'>" . __('Popular feeds') . "</option>
+ <option value='2'>" . __('Feed archive') . "</option>
+ </select> ";
+
+ print __("limit:");
+
+ print " <select name=\"limit\" onchange='updateFeedBrowser()'>";
+
+ foreach (array(25, 50, 100, 200) as $l) {
+ $issel = ($l == $limit) ? "selected" : "";
+ print "<option $issel>$l</option>";
+ }
+
+ print "</select> ";
+
+ print "<p>";
+
+ $owner_uid = $_SESSION["uid"];
+
+ print "<ul class='browseFeedList' id='browseFeedList'>";
+ print_feed_browser($link, $search, 25);
+ print "</ul>";
+
+ print "<div align='center'>
+ <button onclick=\"feedBrowserSubscribe()\">".__('Subscribe')."</button>
+ <button style='display : none' id='feed_archive_remove' onclick=\"feedArchiveRemove()\">".__('Remove from archive')."</button>
+ <button onclick=\"closeInfoBox()\" >".__('Cancel')."</button></div>";
+
+ print "</div>";
+ return;
+ }
+
if ($id == "search") {
print "<div id=\"infoBoxTitle\">".__('Search')."</div>";
diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php
index 9d33461af..531396cf5 100644
--- a/modules/pref-feeds.php
+++ b/modules/pref-feeds.php
@@ -15,7 +15,7 @@
$quiet = $_REQUEST["quiet"];
$mode = $_REQUEST["mode"];
- if ($subop == "massSubscribe") {
+/* if ($subop == "massSubscribe") {
$ids = split(",", db_escape_string($_REQUEST["ids"]));
$subscribed = array();
@@ -65,9 +65,11 @@
print format_notice($msg);
}
- }
- if ($subop == "browse") {
+ return;
+ } */
+
+/* if ($subop == "browse") {
print "<div id=\"infoBoxTitle\">".__('Feed Browser')."</div>";
@@ -118,7 +120,7 @@
print "</div>";
return;
- }
+ } */
if ($subop == "editfeed") {
$feed_id = db_escape_string($_REQUEST["id"]);
@@ -1437,8 +1439,12 @@
AND owner_uid = '$owner_uid') $search_qpart
ORDER BY subscribers DESC LIMIT $limit");
} else if ($mode == 2) {
- $result = db_query($link, "SELECT * FROM
- ttrss_archived_feeds WHERE
+ $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
@@ -1452,7 +1458,7 @@
if ($mode == 1) {
- $feed_url = $line["feed_url"];
+ $feed_url = htmlspecialchars($line["feed_url"]);
$subscribers = $line["subscribers"];
$det_result = db_query($link, "SELECT site_url,title,id
@@ -1469,26 +1475,30 @@
$feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
}
- $check_box = "<input onclick='toggleSelectListRow(this)' class='feedBrowseCB'
+ $check_box = "<input onclick='toggleSelectListRow(this)'
+ class='feedBrowseCB'
type=\"checkbox\" id=\"FBCHK-" . $details["id"] . "\">";
$class = ($feedctr % 2) ? "even" : "odd";
if ($details["site_url"]) {
- $site_url = "<a target=\"_blank\" href=\"".$details["site_url"]."\">
+ $site_url = "<a target=\"_blank\" href=\"".
+ htmlspecialchars($details["site_url"])."\">
<img style='border-width : 0px' src='images/www.png' alt='www'></a>";
} else {
$site_url = "";
}
- print "<li class='$class' id=\"FBROW-".$details["id"]."\">$check_box".
- "$feed_icon " . $details["title"] .
+ print "<li title=\"".htmlspecialchars($details["site_url"])."\"
+ class='$class' id=\"FBROW-".$details["id"]."\">$check_box".
+ "$feed_icon " . htmlspecialchars($details["title"]) .
"&nbsp;<span class='subscribers'>($subscribers)</span>
- $site_url
- </li>";
+ $site_url</li>";
} else if ($mode == 2) {
- $feed_url = $line["feed_url"];
+ $feed_url = htmlspecialchars($line["feed_url"]);
+ $site_url = htmlspecialchars($line["site_url"]);
+ $title = htmlspecialchars($line["title"]);
$icon_file = ICONS_DIR . "/" . $line["id"] . ".ico";
@@ -1503,16 +1513,24 @@
type=\"checkbox\" id=\"FBCHK-" . $line["id"] . "\">";
$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 = '';
+ }
+
if ($line["site_url"]) {
- $site_url = "<a target=\"_blank\" href=\"".$line["site_url"]."\">
+ $site_url = "<a target=\"_blank\" href=\"$site_url\">
<img style='border-width : 0px' src='images/www.png' alt='www'></a>";
} else {
$site_url = "";
}
- print "<li class='$class' id=\"FBROW-".$line["id"]."\">$check_box".
- "$feed_icon " . $line["title"] . $site_url . "</li>";
+ print "<li title='".$line['site_url']."' class='$class'
+ id=\"FBROW-".$line["id"]."\">".
+ $check_box . "$feed_icon " . $title . $archived . $site_url . "</li>";
}