Esempio n. 1
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);
    }
    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);
    }
}
Esempio n. 2
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");
         }
     }
 }
Esempio n. 3
0
 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");
         }
     }
 }
Esempio n. 4
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.
 */
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);
    }
}
Esempio n. 5
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);
    }
}
Esempio n. 7
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;
    }
}