summaryrefslogtreecommitdiff
path: root/classes/rpc.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-01-22 22:32:17 +0400
committerAndrew Dolgov <[email protected]>2013-01-22 22:32:17 +0400
commit87d7e8507a4a41c4e0d7a4f2d54fe48f3a6f72cb (patch)
tree569db7d16c8f1d529d382039b1ead0d6e0c46c68 /classes/rpc.php
parent04f60eb729e1444bb3363677584c8179050403c4 (diff)
split some more functions from functions.php
Diffstat (limited to 'classes/rpc.php')
-rw-r--r--classes/rpc.php125
1 files changed, 120 insertions, 5 deletions
diff --git a/classes/rpc.php b/classes/rpc.php
index b4afc6023..0e6fa3379 100644
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -169,12 +169,44 @@ class RPC extends Handler_Protected {
$ids = explode(",", db_escape_string($_REQUEST["ids"]));
foreach ($ids as $id) {
- archive_article($this->link, $id, $_SESSION["uid"]);
+ $this->archive_article($this->link, $id, $_SESSION["uid"]);
}
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
+ private function archive_article($link, $id, $owner_uid) {
+ db_query($link, "BEGIN");
+
+ $result = db_query($link, "SELECT feed_id FROM ttrss_user_entries
+ WHERE ref_id = '$id' AND owner_uid = $owner_uid");
+
+ if (db_num_rows($result) != 0) {
+
+ /* prepare the archived table */
+
+ $feed_id = (int) db_fetch_result($result, 0, "feed_id");
+
+ if ($feed_id) {
+ $result = db_query($link, "SELECT id FROM ttrss_archived_feeds
+ WHERE id = '$feed_id'");
+
+ if (db_num_rows($result) == 0) {
+ db_query($link, "INSERT INTO ttrss_archived_feeds
+ (id, owner_uid, title, feed_url, site_url)
+ SELECT id, owner_uid, title, feed_url, site_url from ttrss_feeds
+ WHERE id = '$feed_id'");
+ }
+
+ db_query($link, "UPDATE ttrss_user_entries
+ SET orig_feed_id = feed_id, feed_id = NULL
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ }
+ }
+
+ db_query($link, "COMMIT");
+ }
+
function publ() {
$pub = $_REQUEST["pub"];
$id = db_escape_string($_REQUEST["id"]);
@@ -241,7 +273,7 @@ class RPC extends Handler_Protected {
$ids = explode(",", db_escape_string($_REQUEST["ids"]));
$cmode = sprintf("%d", $_REQUEST["cmode"]);
- markArticlesById($this->link, $ids, $cmode);
+ $this->markArticlesById($this->link, $ids, $cmode);
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
@@ -250,7 +282,7 @@ class RPC extends Handler_Protected {
$ids = explode(",", db_escape_string($_REQUEST["ids"]));
$cmode = sprintf("%d", $_REQUEST["cmode"]);
- publishArticlesById($this->link, $ids, $cmode);
+ $this->publishArticlesById($this->link, $ids, $cmode);
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
@@ -335,7 +367,7 @@ class RPC extends Handler_Protected {
}
function regenOPMLKey() {
- update_feed_access_key($this->link, 'OPML:Publish',
+ $this->update_feed_access_key($this->link, 'OPML:Publish',
false, $_SESSION["uid"]);
$new_link = opml_publish_url($this->link);
@@ -544,7 +576,7 @@ class RPC extends Handler_Protected {
$feed_id = db_escape_string($_REQUEST['id']);
$is_cat = db_escape_string($_REQUEST['is_cat']) == "true";
- $new_key = update_feed_access_key($this->link, $feed_id, $is_cat);
+ $new_key = $this->update_feed_access_key($this->link, $feed_id, $is_cat);
print json_encode(array("link" => $new_key));
}
@@ -716,5 +748,88 @@ class RPC extends Handler_Protected {
}
+ function update_feed_access_key($link, $feed_id, $is_cat, $owner_uid = false) {
+ if (!$owner_uid) $owner_uid = $_SESSION["uid"];
+
+ $sql_is_cat = bool_to_sql_bool($is_cat);
+
+ $result = db_query($link, "SELECT access_key FROM ttrss_access_keys
+ WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat
+ AND owner_uid = " . $owner_uid);
+
+ if (db_num_rows($result) == 1) {
+ $key = db_escape_string(sha1(uniqid(rand(), true)));
+
+ db_query($link, "UPDATE ttrss_access_keys SET access_key = '$key'
+ WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat
+ AND owner_uid = " . $owner_uid);
+
+ return $key;
+
+ } else {
+ return get_feed_access_key($link, $feed_id, $is_cat, $owner_uid);
+ }
+ }
+
+ private function markArticlesById($link, $ids, $cmode) {
+
+ $tmp_ids = array();
+
+ foreach ($ids as $id) {
+ array_push($tmp_ids, "ref_id = '$id'");
+ }
+
+ $ids_qpart = join(" OR ", $tmp_ids);
+
+ if ($cmode == 0) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ marked = false,last_read = NOW()
+ WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
+ } else if ($cmode == 1) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ marked = true
+ WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
+ } else {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ marked = NOT marked,last_read = NOW()
+ WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
+ }
+ }
+
+ private function publishArticlesById($link, $ids, $cmode) {
+
+ $tmp_ids = array();
+
+ foreach ($ids as $id) {
+ array_push($tmp_ids, "ref_id = '$id'");
+ }
+
+ $ids_qpart = join(" OR ", $tmp_ids);
+
+ if ($cmode == 0) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ published = false,last_read = NOW()
+ WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
+ } else if ($cmode == 1) {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ published = true,last_read = NOW()
+ WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
+ } else {
+ db_query($link, "UPDATE ttrss_user_entries SET
+ published = NOT published,last_read = NOW()
+ WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]);
+ }
+
+ 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);
+ }
+ }
+
}
?>