subscribe dialog: do not report errors via alert()
fetch_file_contents: reset all globals on start, return error message body when not using curl subscribe_to_feed: report if cloudflare is in the error message
This commit is contained in:
parent
80fbc1fdc4
commit
24c7e4132d
3 changed files with 36 additions and 7 deletions
|
@ -1030,6 +1030,8 @@ class Feeds extends Handler_Protected {
|
||||||
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
|
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
|
||||||
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"addfeed\">";
|
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"addfeed\">";
|
||||||
|
|
||||||
|
print "<div id='fadd_error_message' style='display : none' class='alert alert-danger'></div>";
|
||||||
|
|
||||||
print "<div id='fadd_multiple_notify' style='display : none'>";
|
print "<div id='fadd_multiple_notify' style='display : none'>";
|
||||||
print_notice("Provided URL is a HTML page referencing multiple feeds, please select required feed from the dropdown menu below.");
|
print_notice("Provided URL is a HTML page referencing multiple feeds, please select required feed from the dropdown menu below.");
|
||||||
print "<p></div>";
|
print "<p></div>";
|
||||||
|
|
|
@ -345,6 +345,12 @@
|
||||||
global $fetch_last_content_type;
|
global $fetch_last_content_type;
|
||||||
global $fetch_curl_used;
|
global $fetch_curl_used;
|
||||||
|
|
||||||
|
$fetch_last_error = false;
|
||||||
|
$fetch_last_error_code = -1;
|
||||||
|
$fetch_last_error_content = "";
|
||||||
|
$fetch_last_content_type = "";
|
||||||
|
$fetch_curl_used = false;
|
||||||
|
|
||||||
if (!is_array($options)) {
|
if (!is_array($options)) {
|
||||||
|
|
||||||
// falling back on compatibility shim
|
// falling back on compatibility shim
|
||||||
|
@ -478,6 +484,7 @@
|
||||||
$context = stream_context_create(array(
|
$context = stream_context_create(array(
|
||||||
'http' => array(
|
'http' => array(
|
||||||
'method' => 'GET',
|
'method' => 'GET',
|
||||||
|
'ignore_errors' => true,
|
||||||
'timeout' => $timeout ? $timeout : FILE_FETCH_TIMEOUT,
|
'timeout' => $timeout ? $timeout : FILE_FETCH_TIMEOUT,
|
||||||
'protocol_version'=> 1.1,
|
'protocol_version'=> 1.1,
|
||||||
'header' => "If-Modified-Since: ".gmdate("D, d M Y H:i:s \\G\\M\\T\r\n", $timestamp)
|
'header' => "If-Modified-Since: ".gmdate("D, d M Y H:i:s \\G\\M\\T\r\n", $timestamp)
|
||||||
|
@ -486,6 +493,7 @@
|
||||||
$context = stream_context_create(array(
|
$context = stream_context_create(array(
|
||||||
'http' => array(
|
'http' => array(
|
||||||
'method' => 'GET',
|
'method' => 'GET',
|
||||||
|
'ignore_errors' => true,
|
||||||
'timeout' => $timeout ? $timeout : FILE_FETCH_TIMEOUT,
|
'timeout' => $timeout ? $timeout : FILE_FETCH_TIMEOUT,
|
||||||
'protocol_version'=> 1.1
|
'protocol_version'=> 1.1
|
||||||
)));
|
)));
|
||||||
|
@ -495,7 +503,6 @@
|
||||||
|
|
||||||
$data = @file_get_contents($url, false, $context);
|
$data = @file_get_contents($url, false, $context);
|
||||||
|
|
||||||
$fetch_last_content_type = false; // reset if no type was sent from server
|
|
||||||
if (isset($http_response_header) && is_array($http_response_header)) {
|
if (isset($http_response_header) && is_array($http_response_header)) {
|
||||||
foreach ($http_response_header as $h) {
|
foreach ($http_response_header as $h) {
|
||||||
if (substr(strtolower($h), 0, 13) == 'content-type:') {
|
if (substr(strtolower($h), 0, 13) == 'content-type:') {
|
||||||
|
@ -510,7 +517,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$data) {
|
if ($fetch_last_error_code != 200) {
|
||||||
$error = error_get_last();
|
$error = error_get_last();
|
||||||
|
|
||||||
if ($error['message'] != $old_error['message']) {
|
if ($error['message'] != $old_error['message']) {
|
||||||
|
@ -518,6 +525,10 @@
|
||||||
} else {
|
} else {
|
||||||
$fetch_last_error = "HTTP Code: $fetch_last_error_code";
|
$fetch_last_error = "HTTP Code: $fetch_last_error_code";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$fetch_last_error_content = $data;
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
@ -1720,6 +1731,8 @@
|
||||||
$auth_login = '', $auth_pass = '') {
|
$auth_login = '', $auth_pass = '') {
|
||||||
|
|
||||||
global $fetch_last_error;
|
global $fetch_last_error;
|
||||||
|
global $fetch_last_error_content;
|
||||||
|
global $fetch_last_error_code;
|
||||||
|
|
||||||
require_once "include/rssfuncs.php";
|
require_once "include/rssfuncs.php";
|
||||||
|
|
||||||
|
@ -1730,6 +1743,10 @@
|
||||||
$contents = @fetch_file_contents($url, false, $auth_login, $auth_pass);
|
$contents = @fetch_file_contents($url, false, $auth_login, $auth_pass);
|
||||||
|
|
||||||
if (!$contents) {
|
if (!$contents) {
|
||||||
|
if (preg_match("/cloudflare\.com/", $fetch_last_error_content)) {
|
||||||
|
$fetch_last_error .= " (feed behind Cloudflare)";
|
||||||
|
}
|
||||||
|
|
||||||
return array("code" => 5, "message" => $fetch_last_error);
|
return array("code" => 5, "message" => $fetch_last_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -804,6 +804,15 @@ function quickAddFeed() {
|
||||||
id: "feedAddDlg",
|
id: "feedAddDlg",
|
||||||
title: __("Subscribe to Feed"),
|
title: __("Subscribe to Feed"),
|
||||||
style: "width: 600px",
|
style: "width: 600px",
|
||||||
|
show_error: function(msg) {
|
||||||
|
var elem = $("fadd_error_message");
|
||||||
|
|
||||||
|
elem.innerHTML = msg;
|
||||||
|
|
||||||
|
if (!Element.visible(elem))
|
||||||
|
new Effect.Appear(elem);
|
||||||
|
|
||||||
|
},
|
||||||
execute: function() {
|
execute: function() {
|
||||||
if (this.validate()) {
|
if (this.validate()) {
|
||||||
console.log(dojo.objectToQuery(this.attr('value')));
|
console.log(dojo.objectToQuery(this.attr('value')));
|
||||||
|
@ -811,6 +820,7 @@ function quickAddFeed() {
|
||||||
var feed_url = this.attr('value').feed;
|
var feed_url = this.attr('value').feed;
|
||||||
|
|
||||||
Element.show("feed_add_spinner");
|
Element.show("feed_add_spinner");
|
||||||
|
Element.hide("fadd_error_message");
|
||||||
|
|
||||||
new Ajax.Request("backend.php", {
|
new Ajax.Request("backend.php", {
|
||||||
parameters: dojo.objectToQuery(this.attr('value')),
|
parameters: dojo.objectToQuery(this.attr('value')),
|
||||||
|
@ -841,10 +851,10 @@ function quickAddFeed() {
|
||||||
updateFeedList();
|
updateFeedList();
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
alert(__("Specified URL seems to be invalid."));
|
dialog.show_error(__("Specified URL seems to be invalid."));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
alert(__("Specified URL doesn't seem to contain any feeds."));
|
dialog.show_error(__("Specified URL doesn't seem to contain any feeds."));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
feeds = rc['feeds'];
|
feeds = rc['feeds'];
|
||||||
|
@ -868,16 +878,16 @@ function quickAddFeed() {
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
alert(__("Couldn't download the specified URL: %s").
|
dialog.show_error(__("Couldn't download the specified URL: %s").
|
||||||
replace("%s", rc['message']));
|
replace("%s", rc['message']));
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
alert(__("XML validation failed: %s").
|
dialog.show_error(__("XML validation failed: %s").
|
||||||
replace("%s", rc['message']));
|
replace("%s", rc['message']));
|
||||||
break;
|
break;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
alert(__("You are already subscribed to this feed."));
|
dialog.show_error(__("You are already subscribed to this feed."));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue