summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwn_ <invalid@email.com>2025-06-19 20:37:49 +0000
committerwn_ <invalid@email.com>2025-06-19 20:37:49 +0000
commit09c11df764a5485e2a6a670d3218f2f7dadaa9d1 (patch)
treec8ab3b6331e218de5f99b0e4ebbd6771ecad199d
parent692c7a89498730fc1491f93dc403bc133a03f271 (diff)
Clean up displaying subscription error info, log more detailed info to the event log.
-rw-r--r--classes/Feeds.php15
-rw-r--r--js/CommonDialogs.js10
2 files changed, 16 insertions, 9 deletions
diff --git a/classes/Feeds.php b/classes/Feeds.php
index 6284b1b8f..8f1fa5d9f 100644
--- a/classes/Feeds.php
+++ b/classes/Feeds.php
@@ -1013,7 +1013,10 @@ class Feeds extends Handler_Protected {
$url = UrlHelper::validate($url);
- if (!$url) return ["code" => 2];
+ if (!$url) {
+ Logger::log(E_USER_NOTICE, "An attempt to subscribe to '{$url}' failed due to URL validation (User: '{$user->login}'; ID: {$user->id}).");
+ return ["code" => 2];
+ }
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_PRE_SUBSCRIBE,
/** @phpstan-ignore closure.unusedUse, closure.unusedUse, closure.unusedUse */
@@ -1035,14 +1038,20 @@ class Feeds extends Handler_Protected {
UrlHelper::$fetch_last_error .= " (feed behind Cloudflare)";
}
- return array("code" => 5, "message" => truncate_string(UrlHelper::$fetch_last_error, 1000, '…'));
+ Logger::log(E_USER_NOTICE, "An attempt to subscribe to '{$url}' failed (User: '{$user->login}'; ID: {$user->id}).",
+ truncate_string(UrlHelper::$fetch_last_error, 500, '…'));
+
+ return array("code" => 5, "message" => truncate_string(clean(UrlHelper::$fetch_last_error), 250, '…'));
}
if (str_contains(UrlHelper::$fetch_last_content_type, "html") && self::_is_html($contents)) {
$feedUrls = self::_get_feeds_from_html($url, $contents);
if (count($feedUrls) == 0) {
- return array("code" => 3, "message" => truncate_string($contents, 1000, '…'));
+ Logger::log(E_USER_NOTICE, "An attempt to subscribe to '{$url}' failed due to content being HTML without detected feed URLs (User: '{$user->login}'; ID: {$user->id}).",
+ truncate_string($contents, 500, '…'));
+
+ return array("code" => 3, "message" => truncate_string(clean($contents), 250, '…'));
} else if (count($feedUrls) > 1) {
return array("code" => 4, "feeds" => $feedUrls);
}
diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js
index eaa0249e8..1215d567d 100644
--- a/js/CommonDialogs.js
+++ b/js/CommonDialogs.js
@@ -118,10 +118,10 @@ const CommonDialogs = {
</footer>
</form>
`,
- show_error: function (msg) {
+ show_error: function (msg, additional_info) {
const elem = App.byId("fadd_error_message");
- elem.innerHTML = msg;
+ elem.innerHTML = `${msg}${additional_info ? `<br><br><h4>${__('Additional information')}</h4>${additional_info}` : ''}`;
Element.show(elem);
},
@@ -168,9 +168,7 @@ const CommonDialogs = {
dialog.show_error(__("Specified URL seems to be invalid."));
break;
case 3:
- dialog.show_error(`<span title="${App.escapeHtml(rc['message'])}" style="text-decoration: underline dotted">
- ${__("Specified URL doesn't seem to contain any feeds.")}
- </span>`);
+ dialog.show_error(__("Specified URL doesn't seem to contain any feeds."), App.escapeHtml(rc['message']));
break;
case 4:
{
@@ -195,7 +193,7 @@ const CommonDialogs = {
}
break;
case 5:
- dialog.show_error(__("Couldn't download the specified URL: %s").replace("%s", App.escapeHtml(rc['message'])));
+ dialog.show_error(__("Couldn't download the specified URL."), App.escapeHtml(rc['message']));
break;
case 7:
dialog.show_error(__("Error while creating feed database entry."));