com web/php: friendlier error page for manual pages under inactive languages (fix bug #77637): error.php include/errors.inc
| From: | Peter Cowburn | Date: | Tue, 26 Mar 2019 21:46:22 +0000 |
| Subject: | com web/php: friendlier error page for manual pages under inactive languages (fix bug #77637): error.php include/errors.inc | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-27912@lists.php.net to get a copy of this message | ||
Commit: 4716c2ba20e7d9183e333711c560aca060f1d65f
Author: Peter Cowburn <salathe@php.net> Tue, 26 Mar 2019 21:46:22 +0000
Parents: 30a519333fe0516dfe53306457b3db17f66e884d
Branches: master
Link: http://git.php.net/?p=web/php.git;a=commitdiff;h=4716c2ba20e7d9183e333711c560aca060f1d65f
Log:
friendlier error page for manual pages under inactive languages (fix bug #77637)
Bugs:
https://bugs.php.net/77637
Changed paths:
M error.php
M include/errors.inc
Diff:
diff --git a/error.php b/error.php
index adefef1..c9cdb6f 100644
--- a/error.php
+++ b/error.php
@@ -635,6 +635,16 @@ if (preg_match("!^manual/(.+)/function\.(.+)-(.+).php$!", $URI,
$array)) {
}
}
+// ============================================================================
+// For manual pages for inactive languages, point visitors to the English page
+if (preg_match("!^manual/([^/]+)/([^/]+).php$!", $URI, $match) &&
+ isset($INACTIVE_ONLINE_LANGUAGES[$match[1]])) {
+ $try = find_manual_page("en", $match[2]);
+ if ($try) {
+ error_inactive_manual_page($INACTIVE_ONLINE_LANGUAGES[$match[1]], $try);
+ }
+}
+
// ============================================================================
// 404 page for manual pages (eg. not built language)
diff --git a/include/errors.inc b/include/errors.inc
index 1c686ed..cc21370 100644
--- a/include/errors.inc
+++ b/include/errors.inc
@@ -34,6 +34,32 @@ function error_404_manual()
exit;
}
+// An error message page for manual pages from inactive languages
+function error_inactive_manual_page($lang_name, $en_page)
+{
+ global $MYSITE, $ACTIVE_ONLINE_LANGUAGES;
+ status_header(404);
+ site_header('Page gone', array("noindex"));
+ echo "<h1>Page gone</h1>\n" .
+ "<p>The " . htmlspecialchars($lang_name) . " manual page you are
looking for (<strong>" .
+ htmlspecialchars(substr($MYSITE, 0, -1) . $_SERVER['REQUEST_URI']) .
+ "</strong>) is no longer available.</p>\n";
+ $en_url = htmlspecialchars(substr($MYSITE, 0, -1) . $en_page);
+ echo "<p>The English page is available at <a
href=\"{$en_url}\">{$en_url}</a></p>\n";
+ echo "<p>Several other languages are also available:</p>\n";
+ echo "<ul>\n";
+ foreach ($ACTIVE_ONLINE_LANGUAGES as $alt_lang => $alt_lang_name) {
+ if ($alt_lang === "en") {
+ continue;
+ }
+ $alt_url = htmlspecialchars(substr($MYSITE, 0, -1) . str_replace("/en/",
"/{$alt_lang}/", $en_page));
+ echo "<li><a href=\"{$alt_url}\">" ..
htmlspecialchars($alt_lang_name) . "</a></li>\n";
+ }
+ echo "</ul>\n";
+ site_footer();
+ exit;
+}
+
// This service is not working right now
function error_noservice()
{