Index: trunk/tools/web-scripts/missing.php |
— | — | @@ -59,7 +59,13 @@ |
60 | 60 | $project = $tmp[0]; |
61 | 61 | $language = $tmp[1]; |
62 | 62 | $base = 'secure.wikimedia.org/wikipedia/incubator/wiki/'; |
63 | | - $page = implode( array_slice( $tmp, 3 ) ); |
| 63 | + if( isset( $_SERVER['PATH_INFO'] ) ) { |
| 64 | + $page = implode( array_slice( $tmp, 3 ) ); # /wiki/Page (possibly /wiki/Page?foo=bar) |
| 65 | + elseif( $_GET['title'] ) { |
| 66 | + $page = $_GET['title']; # index.php?title=Page |
| 67 | + } else { |
| 68 | + $page = ''; # no known title, fallback to main page |
| 69 | + } |
64 | 70 | |
65 | 71 | } else { |
66 | 72 | |
— | — | @@ -68,7 +74,13 @@ |
69 | 75 | $project = $tmp[1]; |
70 | 76 | $language = $tmp[0]; |
71 | 77 | $base = 'incubator.wikimedia.org/wiki/'; |
72 | | - $page = preg_replace( '/^\/wiki\//', '', $url['path'] ); |
| 78 | + if( isset( $_SERVER['PATH_INFO'] ) ) { |
| 79 | + $page = preg_replace( '/^\/wiki\//', '', $url['path'] ); # /wiki/Page (possibly /wiki/Page?foo=bar) |
| 80 | + elseif( $_GET['title'] ) { |
| 81 | + $page = $_GET['title']; # index.php?title=Page |
| 82 | + } else { |
| 83 | + $page = ''; # no known title, fallback to main page |
| 84 | + } |
73 | 85 | |
74 | 86 | } |
75 | 87 | |
— | — | @@ -79,7 +91,8 @@ |
80 | 92 | $location = $url['scheme'] . '://' . $base . 'W' . $projectcode . '/' . urlencode( $language ); |
81 | 93 | # Go to the page if specified (look out for slashes), otherwise go to |
82 | 94 | # the main page Wx/xyz?goto=mainpage (WikimediaIncubator extension takes care of that) |
83 | | -$location .= $page && $page !== '/' ? '/' . $page : '?goto=mainpage'; |
| 95 | +$location .= $page && $page !== '/' ? '/' . $page : |
| 96 | + '?goto=mainpage' . ( $_GET['uselang'] ? '&uselang=' . urlencode( $_GET['uselang'] ) : '' ); |
84 | 97 | |
85 | 98 | $redir = false; |
86 | 99 | |
— | — | @@ -87,15 +100,15 @@ |
88 | 101 | |
89 | 102 | # Wikisource |
90 | 103 | case 's': |
91 | | - $logo = 'http://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/280px-Wikisource-logo.svg.png'; |
92 | | - $home = 'http://wikisource.org'; |
| 104 | + $logo = '//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/280px-Wikisource-logo.svg.png'; |
| 105 | + $home = '//wikisource.org'; |
93 | 106 | $name = 'Multilingual Wikisource'; |
94 | 107 | break; |
95 | 108 | |
96 | 109 | # Wikiversity |
97 | 110 | case 'v': |
98 | | - $logo = 'http://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Wikiversity-logo.svg/300px-Wikiversity-logo.svg.png'; |
99 | | - $home = 'http://beta.wikiversity.org'; |
| 111 | + $logo = '//upload.wikimedia.org/wikipedia/commons/thumb/9/91/Wikiversity-logo.svg/300px-Wikiversity-logo.svg.png'; |
| 112 | + $home = '//beta.wikiversity.org'; |
100 | 113 | $name = 'Beta Wikiversity'; |
101 | 114 | break; |
102 | 115 | |
— | — | @@ -105,22 +118,21 @@ |
106 | 119 | |
107 | 120 | } |
108 | 121 | |
109 | | -# OUTPUT |
110 | | -# @fixme replace heredoc by better approach |
111 | | -if( $redir ) { |
| 122 | +# If not Wikisource/Wikiversity and the URL seems valid, redirect to Incubator |
| 123 | +if( $redir && parse_url( $location ) !== false ) { |
112 | 124 | |
113 | 125 | header( 'Location: ' . $location ); |
114 | 126 | exit(); |
115 | 127 | |
116 | | -} else { |
| 128 | +} |
117 | 129 | |
118 | | - header( 'HTTP/1.x 404 Not Found' ); |
119 | | - header( 'Content-Type: text/html; charset=utf-8'); |
| 130 | +header( 'HTTP/1.x 404 Not Found' ); |
| 131 | +header( 'Content-Type: text/html; charset=utf-8' ); |
120 | 132 | |
121 | | - $escLanguage = htmlspecialchars( $language ); |
122 | | - $escProject = htmlspecialchars( $project ); |
123 | | - echo <<< EOT |
124 | | -<!DOCTYPE html> |
| 133 | +$escLanguage = htmlspecialchars( $language ); |
| 134 | +$escProject = htmlspecialchars( $project ); |
| 135 | + |
| 136 | +?><!DOCTYPE html> |
125 | 137 | <html lang="en" dir="ltr"> |
126 | 138 | <head> |
127 | 139 | <title>$escLanguage $escProject does not exist</title> |
— | — | @@ -193,6 +205,3 @@ |
194 | 206 | </div> |
195 | 207 | </body> |
196 | 208 | </html> |
197 | | -EOT; |
198 | | - |
199 | | -} |