summaryrefslogtreecommitdiff
path: root/functions.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-01-13 12:48:49 +0300
committerAndrew Dolgov <[email protected]>2010-01-13 12:48:49 +0300
commita5819bb35d94e318d3d221dd7bbc4bea36c24ef0 (patch)
tree18d5effb206f985d16a4629eeca7ff68d6230743 /functions.php
parent542aebacb73d9fe571048d01d9ffc12d4bca1643 (diff)
code cleanup; remove unnecessary callbacks; rework subscribtion dialog
Diffstat (limited to 'functions.php')
-rw-r--r--functions.php42
1 files changed, 28 insertions, 14 deletions
diff --git a/functions.php b/functions.php
index 54385a4a7..a0ec1c3fb 100644
--- a/functions.php
+++ b/functions.php
@@ -2836,18 +2836,16 @@
print "</rpc-reply>";
}
- 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');
+
+ }
?>