From efc6553da498bd16776cf7e88358877b1c088c7f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 24 Mar 2013 14:28:43 +0400 Subject: [PATCH] api: implement subscribeToFeed/unsubscribeFeed (closes #623) --- classes/api.php | 32 +++++++++++++++++++++++++++++++- classes/pref/feeds.php | 4 ++-- classes/rpc.php | 4 +--- include/functions.php | 2 +- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/classes/api.php b/classes/api.php index 3ec21867..ec1219fe 100644 --- a/classes/api.php +++ b/classes/api.php @@ -2,7 +2,7 @@ class API extends Handler { - const API_LEVEL = 4; + const API_LEVEL = 5; const STATUS_OK = 0; const STATUS_ERR = 1; @@ -666,6 +666,36 @@ class API extends Handler { return $headlines; } + function unsubscribeFeed() { + $feed_id = (int) db_escape_string($this->link, $_REQUEST["feed_id"]); + + $result = db_query($this->link, "SELECT id FROM ttrss_feeds WHERE + id = '$feed_id' AND owner_uid = ".$_SESSION["uid"]); + + if (db_num_rows($result) != 0) { + Pref_Feeds::remove_feed($this->link, $feed_id, $_SESSION["uid"]); + print $this->wrap(self::STATUS_OK, array("status" => "OK")); + } else { + print $this->wrap(self::STATUS_ERR, array("error" => "FEED_NOT_FOUND")); + } + } + + function subscribeToFeed() { + $feed_url = db_escape_string($this->link, $_REQUEST["feed_url"]); + $category_id = (int) db_escape_string($this->link, $_REQUEST["category_id"]); + $login = db_escape_string($this->link, $_REQUEST["login"]); + $password = db_escape_string($this->link, $_REQUEST["password"]); + + if ($feed_url) { + $rc = subscribe_to_feed($this->link, $feed_url, $category_id, + $login, $password, false); + + print $this->wrap(self::STATUS_OK, array("status" => $rc)); + } else { + print $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE')); + } + } + } ?> diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index ceda1337..6828e3ff 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -1012,7 +1012,7 @@ class Pref_Feeds extends Handler_Protected { $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"])); foreach ($ids as $id) { - $this->remove_feed($this->link, $id, $_SESSION["uid"]); + Pref_Feeds::remove_feed($this->link, $id, $_SESSION["uid"]); } return; @@ -1657,7 +1657,7 @@ class Pref_Feeds extends Handler_Protected { ccache_remove($link, $id, $owner_uid, true); } - private function remove_feed($link, $id, $owner_uid) { + static function remove_feed($link, $id, $owner_uid) { if ($id > 0) { diff --git a/classes/rpc.php b/classes/rpc.php index ee5a9e68..ea139935 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -105,9 +105,8 @@ class RPC extends Handler_Protected { $cat = db_escape_string($this->link, $_REQUEST['cat']); $login = db_escape_string($this->link, $_REQUEST['login']); $pass = db_escape_string($this->link, $_REQUEST['pass']); - $need_auth = db_escape_string($this->link, $_REQUEST['need_auth']) != ""; - $rc = subscribe_to_feed($this->link, $feed, $cat, $login, $pass, $need_auth); + $rc = subscribe_to_feed($this->link, $feed, $cat, $login, $pass); print json_encode(array("result" => $rc)); } @@ -623,7 +622,6 @@ class RPC extends Handler_Protected { $feeds = explode("\n", db_escape_string($this->link, $_REQUEST['feeds'])); $login = db_escape_string($this->link, $_REQUEST['login']); $pass = db_escape_string($this->link, $_REQUEST['pass']); - $need_auth = db_escape_string($this->link, $_REQUEST['need_auth']) != ""; foreach ($feeds as $feed) { $feed = trim($feed); diff --git a/include/functions.php b/include/functions.php index c01e4100..2ae0dc3b 100644 --- a/include/functions.php +++ b/include/functions.php @@ -1535,7 +1535,7 @@ * 5 - Couldn't download the URL content. */ function subscribe_to_feed($link, $url, $cat_id = 0, - $auth_login = '', $auth_pass = '', $need_auth = false) { + $auth_login = '', $auth_pass = '') { global $fetch_last_error; -- 2.39.2