diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index f21ca581..8b4fb04c 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -834,6 +834,38 @@ return; } + if ($subop == "fbExport") { + + // TODO: change to _POST + $access_key = db_escape_string($_REQUEST["key"]); + + // TODO: rate limit checking using last_connected + $result = db_query($link, "SELECT id FROM ttrss_linked_instances + WHERE access_key = '$access_key'"); + + if (db_num_rows($result) == 1) { + + $instance_id = db_fetch_result($result, 0, "id"); + + $result = db_query($link, "SELECT feed_url, title, subscribers + FROM ttrss_feedbrowser_cache ORDER BY subscribers DESC LIMIT 100"); + + $feeds = array(); + + while ($line = db_fetch_assoc($result)) { + array_push($feeds, $line); + } + + db_query($link, "UPDATE ttrss_linked_instances SET last_connected = NOW() + WHERE id = '$instance_id'"); + + print json_encode(array("feeds" => $feeds)); + } else { + print json_encode(array("error" => array("code" => 6))); + } + return; + } + print json_encode(array("error" => array("code" => 7, "message" => "Unknown method: $subop"))); } diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql index 2a6e89c8..91475e60 100644 --- a/schema/ttrss_schema_mysql.sql +++ b/schema/ttrss_schema_mysql.sql @@ -429,6 +429,7 @@ create table ttrss_access_keys (id integer not null primary key auto_increment, foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE) TYPE=InnoDB DEFAULT CHARSET=UTF8; create table ttrss_linked_instances (id integer not null primary key auto_increment, + last_connected datetime not null, access_key varchar(250) not null, access_url text not null) TYPE=InnoDB DEFAULT CHARSET=UTF8; diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql index d6cc924f..a7cee536 100644 --- a/schema/ttrss_schema_pgsql.sql +++ b/schema/ttrss_schema_pgsql.sql @@ -389,6 +389,7 @@ create table ttrss_access_keys (id serial not null primary key, owner_uid integer not null references ttrss_users(id) on delete cascade); create table ttrss_linked_instances (id serial not null primary key, + last_connected timestamp not null, access_key varchar(250) not null, access_url text not null); diff --git a/schema/versions/mysql/84.sql b/schema/versions/mysql/84.sql index 631daa03..7a0ccbfb 100644 --- a/schema/versions/mysql/84.sql +++ b/schema/versions/mysql/84.sql @@ -1,6 +1,7 @@ begin; create table ttrss_linked_instances (id integer not null primary key auto_increment, + last_connected timestamp not null, access_key varchar(250) not null, access_url text not null) TYPE=InnoDB DEFAULT CHARSET=UTF8; diff --git a/schema/versions/pgsql/84.sql b/schema/versions/pgsql/84.sql index 1ff253f7..77212317 100644 --- a/schema/versions/pgsql/84.sql +++ b/schema/versions/pgsql/84.sql @@ -1,6 +1,7 @@ begin; create table ttrss_linked_instances (id serial not null primary key, + last_connected datetime not null, access_key varchar(250) not null, access_url text not null);