diff --git a/classes/dlg.php b/classes/dlg.php
index 7e68c9e69..008518a8a 100644
--- a/classes/dlg.php
+++ b/classes/dlg.php
@@ -250,6 +250,11 @@ class Dlg extends Handler_Protected {
print "
";
+ print "
+
";
+
print "
";
diff --git a/include/functions.php b/include/functions.php
index ac07974e8..632c1e628 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -2,6 +2,8 @@
define('EXPECTED_CONFIG_VERSION', 25);
define('SCHEMA_VERSION', 94);
+ $fetch_last_error = false;
+
function __autoload($class) {
$class_file = str_replace("_", "/", strtolower(basename($class)));
@@ -281,6 +283,8 @@
$login = urlencode($login);
$pass = urlencode($pass);
+ global $fetch_last_error;
+
if (function_exists('curl_init') && !ini_get("open_basedir")) {
$ch = curl_init($url);
@@ -306,6 +310,7 @@
$contents = @curl_exec($ch);
if ($contents === false) {
+ $fetch_last_error = curl_error($ch);
curl_close($ch);
return false;
}
@@ -330,7 +335,13 @@
}
}
- return @file_get_contents($url);
+ $data = @file_get_contents($url);
+
+ if (!$data && function_exists('error_get_last')) {
+ $error = error_get_last();
+ $fetch_last_error = $error["message"];
+ }
+ return $data;
}
}
@@ -1792,7 +1803,8 @@
}
/**
- * @return integer Status code:
+ * @return array (code => Status code, message => error message if available)
+ *
* 0 - OK, Feed already exists
* 1 - OK, Feed added
* 2 - Invalid URL
@@ -1805,11 +1817,13 @@
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 2;
+ if (!$url || !validate_feed_url($url)) return array("code" => 2);
$update_method = 0;
@@ -1819,14 +1833,15 @@
$has_oauth = db_fetch_result($result, 0, 'twitter_oauth');
if (!$need_auth || !$has_oauth || strpos($url, '://api.twitter.com') === false) {
- if (!fetch_file_contents($url, false, $auth_login, $auth_pass)) return 5;
+ if (!fetch_file_contents($url, false, $auth_login, $auth_pass))
+ return array("code" => 5, "message" => $fetch_last_error);
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;
+ return array("code" => 3);
} else if (count($feedUrls) > 1) {
- return 4;
+ return array("code" => 4);
}
//use feed url as new URL
$url = key($feedUrls);
@@ -1834,7 +1849,7 @@
} else {
if (!fetch_twitter_rss($link, $url, $_SESSION['uid']))
- return 5;
+ return array("code" => 5);
$update_method = 3;
}
@@ -1865,9 +1880,9 @@
update_rss_feed($link, $feed_id, true);
}
- return 1;
+ return array("code" => 1);
} else {
- return 0;
+ return array("code" => 0);
}
}
diff --git a/js/functions.js b/js/functions.js
index 578172c77..da0f2ba28 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -866,7 +866,7 @@ function quickAddFeed() {
var feed_url = this.attr('value').feed;
- notify_progress(__("Subscribing to feed..."), true);
+ Element.show("feed_add_spinner");
new Ajax.Request("backend.php", {
parameters: dojo.objectToQuery(this.attr('value')),
@@ -875,13 +875,14 @@ function quickAddFeed() {
var reply = JSON.parse(transport.responseText);
- var rc = parseInt(reply['result']);
+ var rc = reply['result'];
notify('');
+ Element.hide("feed_add_spinner");
console.log("GOT RC: " + rc);
- switch (rc) {
+ switch (parseInt(rc['code'])) {
case 1:
dialog.hide();
notify_info(__("Subscribed to %s").replace("%s", feed_url));
@@ -928,7 +929,8 @@ function quickAddFeed() {
});
break;
case 5:
- alert(__("Couldn't download the specified URL."));
+ alert(__("Couldn't download the specified URL: %s").
+ replace("%s", rc['message']));
break;
case 0:
alert(__("You are already subscribed to this feed."));