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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<?php
# Abort if called from a web server
if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
print "This script must be run from the command line\n";
exit();
}
# Process command line arguments
# $options becomes an array with keys set to the option names
# $optionsWithArgs is an array of GNU-style options that take an argument. The arguments are returned
# in the values of $options.
if ( !isset( $optionsWithArgs ) ) {
$optionsWithArgs = array();
}
$self = array_shift( $argv );
$IP = realpath( dirname( $self ) . "/.." );
chdir( $IP );
$options = array();
$args = array();
for( $arg = reset( $argv ); $arg !== false; $arg = next( $argv ) ) {
if ( substr( $arg, 0, 2 ) == '--' ) {
# Long options
$option = substr( $arg, 2 );
if ( in_array( $option, $optionsWithArgs ) ) {
$param = next( $argv );
if ( $param === false ) {
die( "$arg needs an value after it\n" );
}
$options[$option] = $param;
} else {
$options[$option] = 1;
}
} elseif ( $arg{0} == '-' ) {
# Short options
for ( $p=1; $p<strlen( $arg ); $p++ ) {
$option = $arg{$p};
if ( in_array( $option, $optionsWithArgs ) ) {
$param = next( $argv );
if ( $param === false ) {
die( "$arg needs an value after it\n" );
}
$options[$option] = $param;
} else {
$options[$option] = 1;
}
}
} else {
$args[] = $arg;
}
}
# General initialisation
$wgCommandLineMode = true;
# Turn off output buffering if it's on
@ob_end_flush();
$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
if ( $sep == ":" && strpos( `hostname -a`, "wikimedia.org" ) !== false ) {
$wgWikiFarm = true;
if ( isset( $args[0] ) ) {
$lang = array_shift( $args );
} else {
$lang = "aa";
}
if ( isset( $args[0] ) ) {
$site = array_shift( $args );
} else {
$site = "wikipedia";
}
# This is for the IRC scripts, which now run as the apache user
# The apache user doesn't have access to the wikiadmin_pass command
if ( $_ENV['USER'] != "apache" ) {
$wgDBuser = $wgDBadminuser = "wikiadmin";
$wgDBpassword = $wgDBadminpassword = trim(`wikiadmin_pass`);
}
putenv( "wikilang=$lang");
$DP = $IP;
ini_set( "include_path", ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" );
require_once( "/home/wikipedia/common/php-new/CommonSettings.php" );
} else {
$wgWikiFarm = false;
$settingsFile = "$IP/LocalSettings.php";
if ( ! is_readable( $settingsFile ) ) {
print "A copy of your installation's LocalSettings.php\n" .
"must exist in the source directory.\n";
exit();
}
$wgCommandLineMode = true;
$DP = $IP;
include_once( $settingsFile );
ini_set( "include_path", ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" );
include_once( "$IP/AdminSettings.php" );
}
# Turn off output buffering again, it might have been turned on in the settings files
@ob_end_flush();
# Same with these
$wgCommandLineMode = true;
$wgDBuser = $wgDBadminuser;
$wgDBpassword = $wgDBadminpassword;
$wgUsePHPTal = false;
define("MEDIAWIKI",true);
require_once( "Setup.php" );
require_once( "install-utils.inc" );
$wgTitle = Title::newFromText( "Command line script" );
set_time_limit(0);
?>
|