diff --git a/classes/feeds.php b/classes/feeds.php
index cc641b4f2..6f8ceeced 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -986,17 +986,18 @@ class Feeds extends Handler_Protected {
* to get all possible feeds.
* 5 - Couldn't download the URL content.
* 6 - Content is an invalid XML.
+ * 7 - Error while creating feed database entry.
*/
static function _subscribe($url, $cat_id = 0,
- $auth_login = '', $auth_pass = '') {
+ $auth_login = '', $auth_pass = '') : array {
$pdo = Db::pdo();
$url = UrlHelper::validate($url);
- if (!$url) return array("code" => 2);
+ if (!$url) return ["code" => 2];
- $contents = @UrlHelper::fetch($url, false, $auth_login, $auth_pass);
+ $contents = UrlHelper::fetch($url, false, $auth_login, $auth_pass);
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_SUBSCRIBE_FEED,
function ($result) use (&$contents) {
@@ -1024,35 +1025,33 @@ class Feeds extends Handler_Protected {
$url = key($feedUrls);
}
- if (!$cat_id) $cat_id = null;
+ $feed = ORM::for_table('ttrss_feeds')
+ ->where('feed_url', $url)
+ ->where('owner_uid', $_SESSION['uid'])
+ ->find_one();
- $sth = $pdo->prepare("SELECT id FROM ttrss_feeds
- WHERE feed_url = ? AND owner_uid = ?");
- $sth->execute([$url, $_SESSION['uid']]);
-
- if ($row = $sth->fetch()) {
- return array("code" => 0, "feed_id" => (int) $row["id"]);
+ if ($feed) {
+ return ["code" => 0, "feed_id" => $feed->id];
} else {
- $sth = $pdo->prepare(
- "INSERT INTO ttrss_feeds
- (owner_uid,feed_url,title,cat_id, auth_login,auth_pass,update_method,auth_pass_encrypted)
- VALUES (?, ?, ?, ?, ?, ?, 0, false)");
+ $feed = ORM::for_table('ttrss_feeds')->create();
- $sth->execute([$_SESSION['uid'], $url, "[Unknown]", $cat_id, (string)$auth_login, (string)$auth_pass]);
+ $feed->set([
+ 'owner_uid' => $_SESSION['uid'],
+ 'feed_url' => $url,
+ 'title' => "[Unknown]",
+ 'cat_id' => $cat_id ? $cat_id : null,
+ 'auth_login' => (string)$auth_login,
+ 'auth_pass' => (string)$auth_pass,
+ 'update_method' => 0,
+ 'auth_pass_encrypted' => false,
+ ]);
- $sth = $pdo->prepare("SELECT id FROM ttrss_feeds WHERE feed_url = ?
- AND owner_uid = ?");
- $sth->execute([$url, $_SESSION['uid']]);
- $row = $sth->fetch();
-
- $feed_id = $row["id"];
-
- if ($feed_id) {
- RSSUtils::set_basic_feed_info($feed_id);
+ if ($feed->save()) {
+ RSSUtils::set_basic_feed_info($feed->id);
+ return ["code" => 1, "feed_id" => (int) $feed->id];
}
- return array("code" => 1, "feed_id" => (int) $feed_id);
-
+ return ["code" => 7];
}
}
diff --git a/plugins/bookmarklets/init.php b/plugins/bookmarklets/init.php
index eabb33510..ab88d48e7 100644
--- a/plugins/bookmarklets/init.php
+++ b/plugins/bookmarklets/init.php
@@ -154,7 +154,7 @@ class Bookmarklets extends Plugin {
= __("Return to Tiny Tiny RSS") ?>
= __("Return to Tiny Tiny RSS") ?>