forked from wikimedia/operations-mediawiki-config
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch-redirect.php
52 lines (45 loc) · 1.01 KB
/
search-redirect.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
// get params
$language = $_GET['language'];
$search = $_GET['search'];
$fulltext = $_GET['fulltext'];
$go = $_GET['go'];
if ( isset( $_GET['family'] ) ) {
$family = $_GET['family'];
} else {
$family = 'wikipedia';
}
if ( ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) || ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ) ) {
$proto = 'https';
} else {
$proto = 'http';
}
// validate $language
if ( !preg_match( '/^[a-zA-Z\-]*$/', $language ) ) {
$language = 'en';
}
// validate $family
$sites = array(
'wikipedia',
'wiktionary',
'wikisource',
'wikinews',
'wikiversity',
'wikimedia',
'wikiquote',
'wikibooks',
'wikivoyage',
);
if ( !in_array( $family, $sites ) ) {
$family = 'wikipedia';
}
// make url
$url = "$proto://" . $language . '.' . $family . '.org/wiki/Special:Search?search=' . urlencode( $search );
if ( $fulltext ) {
$url .= '&fulltext=Search';
}
if ( $go ) {
$url .= '&go=Go';
}
// Redirect
header( "Location: {$url}" );