From a5819bb35d94e318d3d221dd7bbc4bea36c24ef0 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 13 Jan 2010 12:48:49 +0300 Subject: code cleanup; remove unnecessary callbacks; rework subscribtion dialog --- functions.php | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) (limited to 'functions.php') diff --git a/functions.php b/functions.php index 54385a4a7..a0ec1c3fb 100644 --- a/functions.php +++ b/functions.php @@ -2836,18 +2836,16 @@ print ""; } - function subscribe_to_feed($link, $feed_link, $cat_id = 0, + function subscribe_to_feed($link, $url, $cat_id = 0, $auth_login = '', $auth_pass = '') { - # check for feed:http://url - $feed_link = trim(preg_replace("/^feed:/", "", $feed_link)); + $parts = parse_url($url); - # check for feed://URL - if (strpos($feed_link, "//") === 0) { - $feed_link = "http:$feed_link"; - } + if (!validate_feed_url($url)) return 2; + + if ($parts['scheme'] == 'feed') $parts['scheme'] = 'http'; - if ($feed_link == "") return; + $url = make_url_from_parts($parts); if ($cat_id == "0" || !$cat_id) { $cat_qpart = "NULL"; @@ -2857,29 +2855,29 @@ $result = db_query($link, "SELECT id FROM ttrss_feeds - WHERE feed_url = '$feed_link' AND owner_uid = ".$_SESSION["uid"]); + WHERE feed_url = '$url' AND owner_uid = ".$_SESSION["uid"]); if (db_num_rows($result) == 0) { $result = db_query($link, "INSERT INTO ttrss_feeds (owner_uid,feed_url,title,cat_id, auth_login,auth_pass) - VALUES ('".$_SESSION["uid"]."', '$feed_link', + VALUES ('".$_SESSION["uid"]."', '$url', '[Unknown]', $cat_qpart, '$auth_login', '$auth_pass')"); $result = db_query($link, - "SELECT id FROM ttrss_feeds WHERE feed_url = '$feed_link' + "SELECT id FROM ttrss_feeds WHERE feed_url = '$url' AND owner_uid = " . $_SESSION["uid"]); $feed_id = db_fetch_result($result, 0, "id"); if ($feed_id) { - update_rss_feed($link, $feed_link, $feed_id, true); + update_rss_feed($link, $url, $feed_id, true); } - return true; + return 1; } else { - return false; + return 0; } } @@ -6401,4 +6399,20 @@ return 0; } } + + function make_url_from_parts($parts) { + $url = $parts['scheme'] . '://' . $parts['host']; + + if ($parts['path']) $url .= $parts['path']; + if ($parts['query']) $url .= '?' . $parts['query']; + + return $url; + } + + function validate_feed_url($url) { + $parts = parse_url($url); + + return ($parts['scheme'] == 'http' || $parts['scheme'] == 'feed' || $parts['scheme'] == 'https'); + + } ?> -- cgit v1.2.3