/** * @return array (code => Status code, message => error message if available) * * 0 - OK, Feed already exists * 1 - OK, Feed added * 2 - Invalid URL * 3 - URL content is HTML, no feeds available * 4 - URL content is HTML which contains multiple feeds. * Here you should call extractfeedurls in rpc-backend * to get all possible feeds. * 5 - Couldn't download the URL content. * 6 - Content is an invalid XML. */ function subscribe_to_feed($url, $cat_id = 0, $auth_login = '', $auth_pass = '') { global $fetch_last_error; require_once "include/rssfuncs.php"; $url = fix_url($url); if (!$url || !validate_feed_url($url)) { return array("code" => 2); } $contents = @fetch_file_contents($url, false, $auth_login, $auth_pass); if (!$contents) { return array("code" => 5, "message" => $fetch_last_error); } foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SUBSCRIBE_FEED) as $plugin) { $contents = $plugin->hook_subscribe_feed($contents, $url, $auth_login, $auth_pass); } if (is_html($contents)) { $feedUrls = get_feeds_from_html($url, $contents); if (count($feedUrls) == 0) { return array("code" => 3); } else { if (count($feedUrls) > 1) { return array("code" => 4, "feeds" => $feedUrls); } } //use feed url as new URL $url = key($feedUrls); } if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; } else { $cat_qpart = "'{$cat_id}'"; } $result = db_query("SELECT id FROM ttrss_feeds\n\t\t\tWHERE feed_url = '{$url}' AND owner_uid = " . $_SESSION["uid"]); if (strlen(FEED_CRYPT_KEY) > 0) { require_once "crypt.php"; $auth_pass = substr(encrypt_string($auth_pass), 0, 250); $auth_pass_encrypted = 'true'; } else { $auth_pass_encrypted = 'false'; } $auth_pass = db_escape_string($auth_pass); if (db_num_rows($result) == 0) { $result = db_query("INSERT INTO ttrss_feeds\n\t\t\t\t\t(owner_uid,feed_url,title,cat_id, auth_login,auth_pass,update_method,auth_pass_encrypted)\n\t\t\t\tVALUES ('" . $_SESSION["uid"] . "', '{$url}',\n\t\t\t\t'[Unknown]', {$cat_qpart}, '{$auth_login}', '{$auth_pass}', 0, {$auth_pass_encrypted})"); $result = db_query("SELECT id FROM ttrss_feeds WHERE feed_url = '{$url}'\n\t\t\t\t\tAND owner_uid = " . $_SESSION["uid"]); $feed_id = db_fetch_result($result, 0, "id"); if ($feed_id) { set_basic_feed_info($feed_id); } return array("code" => 1); } else { return array("code" => 0); } }
function batchAddFeeds() { $cat_id = $this->dbh->escape_string($_REQUEST['cat']); $feeds = explode("\n", $_REQUEST['feeds']); $login = $this->dbh->escape_string($_REQUEST['login']); $pass = trim($_REQUEST['pass']); foreach ($feeds as $feed) { $feed = $this->dbh->escape_string(trim($feed)); if (validate_feed_url($feed)) { $this->dbh->query("BEGIN"); if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; } else { $cat_qpart = "'{$cat_id}'"; } $result = $this->dbh->query("SELECT id FROM ttrss_feeds\n\t\t\t\t\tWHERE feed_url = '{$feed}' AND owner_uid = " . $_SESSION["uid"]); if (strlen(FEED_CRYPT_KEY) > 0) { require_once "crypt.php"; $pass = substr(encrypt_string($pass), 0, 250); $auth_pass_encrypted = 'true'; } else { $auth_pass_encrypted = 'false'; } $pass = $this->dbh->escape_string($pass); if ($this->dbh->num_rows($result) == 0) { $result = $this->dbh->query("INSERT INTO ttrss_feeds\n\t\t\t\t\t\t\t(owner_uid,feed_url,title,cat_id,auth_login,auth_pass,update_method,auth_pass_encrypted)\n\t\t\t\t\t\tVALUES ('" . $_SESSION["uid"] . "', '{$feed}',\n\t\t\t\t\t\t\t'[Unknown]', {$cat_qpart}, '{$login}', '{$pass}', 0, {$auth_pass_encrypted})"); } $this->dbh->query("COMMIT"); } } }
function batchAddFeeds() { $cat_id = db_escape_string($_REQUEST['cat']); $feeds = explode("\n", db_escape_string($_REQUEST['feeds'])); $login = db_escape_string($_REQUEST['login']); $pass = db_escape_string($_REQUEST['pass']); $need_auth = db_escape_string($_REQUEST['need_auth']) != ""; $result = db_query($this->link, "SELECT twitter_oauth FROM ttrss_users\nWHERE id = " . $_SESSION['uid']); $has_oauth = db_fetch_result($result, 0, 'twitter_oauth') != ""; foreach ($feeds as $feed) { $feed = trim($feed); if (validate_feed_url($feed)) { db_query($this->link, "BEGIN"); if (!$need_auth || !$has_oauth || strpos($url, '://api.twitter.com') === false) { $update_method = 0; } else { $update_method = 3; } if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; } else { $cat_qpart = "'{$cat_id}'"; } $result = db_query($this->link, "SELECT id FROM ttrss_feeds\n\t\t\t\t\tWHERE feed_url = '{$feed}' AND owner_uid = " . $_SESSION["uid"]); if (db_num_rows($result) == 0) { $result = db_query($this->link, "INSERT INTO ttrss_feeds\n\t\t\t\t\t\t\t(owner_uid,feed_url,title,cat_id,auth_login,auth_pass,update_method)\n\t\t\t\t\t\tVALUES ('" . $_SESSION["uid"] . "', '{$feed}',\n\t\t\t\t\t\t\t'[Unknown]', {$cat_qpart}, '{$login}', '{$pass}', '{$update_method}')"); } db_query($this->link, "COMMIT"); } } }
/** * @return array (code => Status code, message => error message if available) * * 0 - OK, Feed already exists * 1 - OK, Feed added * 2 - Invalid URL * 3 - URL content is HTML, no feeds available * 4 - URL content is HTML which contains multiple feeds. * Here you should call extractfeedurls in rpc-backend * to get all possible feeds. * 5 - Couldn't download the URL content. */ function subscribe_to_feed($link, $url, $cat_id = 0, $auth_login = '', $auth_pass = '', $need_auth = false) { global $fetch_last_error; require_once "include/rssfuncs.php"; $url = fix_url($url); if (!$url || !validate_feed_url($url)) { return array("code" => 2); } $contents = @fetch_file_contents($url, false, $auth_login, $auth_pass); if (!$contents) { return array("code" => 5, "message" => $fetch_last_error); } if (is_html($contents)) { $feedUrls = get_feeds_from_html($url, $contents); if (count($feedUrls) == 0) { return array("code" => 3); } else { if (count($feedUrls) > 1) { return array("code" => 4, "feeds" => $feedUrls); } } //use feed url as new URL $url = key($feedUrls); } if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; } else { $cat_qpart = "'{$cat_id}'"; } $result = db_query($link, "SELECT id FROM ttrss_feeds\n\t\t\tWHERE feed_url = '{$url}' AND owner_uid = " . $_SESSION["uid"]); if (db_num_rows($result) == 0) { $result = db_query($link, "INSERT INTO ttrss_feeds\n\t\t\t\t\t(owner_uid,feed_url,title,cat_id, auth_login,auth_pass,update_method)\n\t\t\t\tVALUES ('" . $_SESSION["uid"] . "', '{$url}',\n\t\t\t\t'[Unknown]', {$cat_qpart}, '{$auth_login}', '{$auth_pass}', 0)"); $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE feed_url = '{$url}'\n\t\t\t\t\tAND owner_uid = " . $_SESSION["uid"]); $feed_id = db_fetch_result($result, 0, "id"); if ($feed_id) { update_rss_feed($link, $feed_id, true); } return array("code" => 1); } else { return array("code" => 0); } }
function subscribe_to_feed($link, $url, $cat_id = 0, $auth_login = '', $auth_pass = '') { $parts = parse_url($url); if (!validate_feed_url($url)) { return 2; } if ($parts['scheme'] == 'feed') { $parts['scheme'] = 'http'; } $url = make_url_from_parts($parts); if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; } else { $cat_qpart = "'{$cat_id}'"; } $result = db_query($link, "SELECT id FROM ttrss_feeds \n\t\t\tWHERE feed_url = '{$url}' AND owner_uid = " . $_SESSION["uid"]); if (db_num_rows($result) == 0) { $result = db_query($link, "INSERT INTO ttrss_feeds \n\t\t\t\t\t(owner_uid,feed_url,title,cat_id, auth_login,auth_pass) \n\t\t\t\tVALUES ('" . $_SESSION["uid"] . "', '{$url}', \n\t\t\t\t'[Unknown]', {$cat_qpart}, '{$auth_login}', '{$auth_pass}')"); $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE feed_url = '{$url}' \n\t\t\t\t\tAND owner_uid = " . $_SESSION["uid"]); $feed_id = db_fetch_result($result, 0, "id"); if ($feed_id) { update_rss_feed($link, $feed_id, true); } return 1; } else { return 0; } }
/** * @return array (code => Status code, message => error message if available) * * 0 - OK, Feed already exists * 1 - OK, Feed added * 2 - Invalid URL * 3 - URL content is HTML, no feeds available * 4 - URL content is HTML which contains multiple feeds. * Here you should call extractfeedurls in rpc-backend * to get all possible feeds. * 5 - Couldn't download the URL content. * 6 - Content is an invalid XML. */ function subscribe_to_feed($url, $cat_id = 0, $auth_login = '', $auth_pass = '') { global $fetch_last_error; require_once "include/rssfuncs.php"; $url = fix_url($url); if (!$url || !validate_feed_url($url)) { return array("code" => 2); } $contents = @fetch_file_contents($url, false, $auth_login, $auth_pass); if (!$contents) { return array("code" => 5, "message" => $fetch_last_error); } if (is_html($contents)) { $feedUrls = get_feeds_from_html($url, $contents); if (count($feedUrls) == 0) { return array("code" => 3); } else { if (count($feedUrls) > 1) { return array("code" => 4, "feeds" => $feedUrls); } } //use feed url as new URL $url = key($feedUrls); } /* libxml_use_internal_errors(true); $doc = new DOMDocument(); $doc->loadXML($contents); $error = libxml_get_last_error(); libxml_clear_errors(); if ($error) { $error_message = format_libxml_error($error); return array("code" => 6, "message" => $error_message); } */ if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; } else { $cat_qpart = "'{$cat_id}'"; } $result = db_query("SELECT id FROM ttrss_feeds\n\t\t\tWHERE feed_url = '{$url}' AND owner_uid = " . $_SESSION["uid"]); if (strlen(FEED_CRYPT_KEY) > 0) { require_once "crypt.php"; $auth_pass = substr(encrypt_string($auth_pass), 0, 250); $auth_pass_encrypted = 'true'; } else { $auth_pass_encrypted = 'false'; } $auth_pass = db_escape_string($auth_pass); if (db_num_rows($result) == 0) { $result = db_query("INSERT INTO ttrss_feeds\n\t\t\t\t\t(owner_uid,feed_url,title,cat_id, auth_login,auth_pass,update_method,auth_pass_encrypted)\n\t\t\t\tVALUES ('" . $_SESSION["uid"] . "', '{$url}',\n\t\t\t\t'[Unknown]', {$cat_qpart}, '{$auth_login}', '{$auth_pass}', 0, {$auth_pass_encrypted})"); $result = db_query("SELECT id FROM ttrss_feeds WHERE feed_url = '{$url}'\n\t\t\t\t\tAND owner_uid = " . $_SESSION["uid"]); $feed_id = db_fetch_result($result, 0, "id"); if ($feed_id) { update_rss_feed($feed_id, true); } return array("code" => 1); } else { return array("code" => 0); } }
/** * Subscribes the user to the given feed * * @param resource $link Database connection * @param string $url Feed URL to subscribe to * @param integer $cat_id Category ID the feed shall be added to * @param string $auth_login (optional) Feed username * @param string $auth_pass (optional) Feed password * * @return integer Status code: * 0 - OK, Feed already exists * 1 - OK, Feed added * 2 - Invalid URL * 3 - URL content is HTML, no feeds available * 4 - URL content is HTML which contains multiple feeds. * Here you should call extractfeedurls in rpc-backend * to get all possible feeds. * 5 - Couldn't download the URL content. */ function subscribe_to_feed($link, $url, $cat_id = 0, $auth_login = '', $auth_pass = '') { $url = fix_url($url); if (!$url || !validate_feed_url($url)) { return 2; } $update_method = 0; $result = db_query($link, "SELECT twitter_oauth FROM ttrss_users\n\t\t\tWHERE id = " . $_SESSION['uid']); $has_oauth = db_fetch_result($result, 0, 'twitter_oauth'); if (!$has_oauth || strpos($url, '://api.twitter.com') === false) { if (!fetch_file_contents($url, false, $auth_login, $auth_pass)) { return 5; } if (url_is_html($url, $auth_login, $auth_pass)) { $feedUrls = get_feeds_from_html($url, $auth_login, $auth_pass); if (count($feedUrls) == 0) { return 3; } else { if (count($feedUrls) > 1) { return 4; } } //use feed url as new URL $url = key($feedUrls); } } else { if (!fetch_twitter_rss($link, $url, $_SESSION['uid'])) { return 5; } $update_method = 3; } if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; } else { $cat_qpart = "'{$cat_id}'"; } $result = db_query($link, "SELECT id FROM ttrss_feeds\n\t\t\tWHERE feed_url = '{$url}' AND owner_uid = " . $_SESSION["uid"]); if (db_num_rows($result) == 0) { $result = db_query($link, "INSERT INTO ttrss_feeds\n\t\t\t\t\t(owner_uid,feed_url,title,cat_id, auth_login,auth_pass,update_method)\n\t\t\t\tVALUES ('" . $_SESSION["uid"] . "', '{$url}',\n\t\t\t\t'[Unknown]', {$cat_qpart}, '{$auth_login}', '{$auth_pass}', '{$update_method}')"); $result = db_query($link, "SELECT id FROM ttrss_feeds WHERE feed_url = '{$url}'\n\t\t\t\t\tAND owner_uid = " . $_SESSION["uid"]); $feed_id = db_fetch_result($result, 0, "id"); if ($feed_id) { update_rss_feed($link, $feed_id, true); } return 1; } else { return 0; } }