[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Core installer command line interface. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * http://www.gnu.org/copyleft/gpl.html 19 * 20 * @file 21 * @ingroup Deployment 22 */ 23 24 /** 25 * Class for the core installer command line interface. 26 * 27 * @ingroup Deployment 28 * @since 1.17 29 */ 30 class CliInstaller extends Installer { 31 private $specifiedScriptPath = false; 32 33 private $optionMap = array( 34 'dbtype' => 'wgDBtype', 35 'dbserver' => 'wgDBserver', 36 'dbname' => 'wgDBname', 37 'dbuser' => 'wgDBuser', 38 'dbpass' => 'wgDBpassword', 39 'dbprefix' => 'wgDBprefix', 40 'dbtableoptions' => 'wgDBTableOptions', 41 'dbmysql5' => 'wgDBmysql5', 42 'dbport' => 'wgDBport', 43 'dbschema' => 'wgDBmwschema', 44 'dbpath' => 'wgSQLiteDataDir', 45 'server' => 'wgServer', 46 'scriptpath' => 'wgScriptPath', 47 ); 48 49 /** 50 * Constructor. 51 * 52 * @param string $siteName 53 * @param string $admin 54 * @param array $option 55 */ 56 function __construct( $siteName, $admin = null, array $option = array() ) { 57 global $wgContLang; 58 59 parent::__construct(); 60 61 if ( isset( $option['scriptpath'] ) ) { 62 $this->specifiedScriptPath = true; 63 } 64 65 foreach ( $this->optionMap as $opt => $global ) { 66 if ( isset( $option[$opt] ) ) { 67 $GLOBALS[$global] = $option[$opt]; 68 $this->setVar( $global, $option[$opt] ); 69 } 70 } 71 72 if ( isset( $option['lang'] ) ) { 73 global $wgLang, $wgLanguageCode; 74 $this->setVar( '_UserLang', $option['lang'] ); 75 $wgContLang = Language::factory( $option['lang'] ); 76 $wgLang = Language::factory( $option['lang'] ); 77 $wgLanguageCode = $option['lang']; 78 } 79 80 $this->setVar( 'wgSitename', $siteName ); 81 82 $metaNS = $wgContLang->ucfirst( str_replace( ' ', '_', $siteName ) ); 83 if ( $metaNS == 'MediaWiki' ) { 84 $metaNS = 'Project'; 85 } 86 $this->setVar( 'wgMetaNamespace', $metaNS ); 87 88 if ( $admin ) { 89 $this->setVar( '_AdminName', $admin ); 90 } 91 92 if ( !isset( $option['installdbuser'] ) ) { 93 $this->setVar( '_InstallUser', 94 $this->getVar( 'wgDBuser' ) ); 95 $this->setVar( '_InstallPassword', 96 $this->getVar( 'wgDBpassword' ) ); 97 } else { 98 $this->setVar( '_InstallUser', 99 $option['installdbuser'] ); 100 $this->setVar( '_InstallPassword', 101 isset( $option['installdbpass'] ) ? $option['installdbpass'] : "" ); 102 103 // Assume that if we're given the installer user, we'll create the account. 104 $this->setVar( '_CreateDBAccount', true ); 105 } 106 107 if ( isset( $option['pass'] ) ) { 108 $this->setVar( '_AdminPassword', $option['pass'] ); 109 } 110 111 // Set up the default skins 112 $skins = $this->findExtensions( 'skins' ); 113 $this->setVar( '_Skins', $skins ); 114 115 if ( $skins ) { 116 $skinNames = array_map( 'strtolower', $skins ); 117 $this->setVar( 'wgDefaultSkin', $this->getDefaultSkin( $skinNames ) ); 118 } 119 } 120 121 /** 122 * Main entry point. 123 */ 124 public function execute() { 125 $vars = Installer::getExistingLocalSettings(); 126 if ( $vars ) { 127 $this->showStatusMessage( 128 Status::newFatal( "config-localsettings-cli-upgrade" ) 129 ); 130 } 131 132 $this->performInstallation( 133 array( $this, 'startStage' ), 134 array( $this, 'endStage' ) 135 ); 136 } 137 138 /** 139 * Write LocalSettings.php to a given path 140 * 141 * @param string $path Full path to write LocalSettings.php to 142 */ 143 public function writeConfigurationFile( $path ) { 144 $ls = InstallerOverrides::getLocalSettingsGenerator( $this ); 145 $ls->writeFile( "$path/LocalSettings.php" ); 146 } 147 148 public function startStage( $step ) { 149 // Messages: config-install-database, config-install-tables, config-install-interwiki, 150 // config-install-stats, config-install-keys, config-install-sysop, config-install-mainpage, 151 // config-install-extensions 152 $this->showMessage( "config-install-$step" ); 153 } 154 155 public function endStage( $step, $status ) { 156 $this->showStatusMessage( $status ); 157 $this->showMessage( 'config-install-step-done' ); 158 } 159 160 public function showMessage( $msg /*, ... */ ) { 161 echo $this->getMessageText( func_get_args() ) . "\n"; 162 flush(); 163 } 164 165 public function showError( $msg /*, ... */ ) { 166 echo "***{$this->getMessageText( func_get_args() )}***\n"; 167 flush(); 168 } 169 170 /** 171 * @param array $params 172 * 173 * @return string 174 */ 175 protected function getMessageText( $params ) { 176 $msg = array_shift( $params ); 177 178 $text = wfMessage( $msg, $params )->parse(); 179 180 $text = preg_replace( '/<a href="(.*?)".*?>(.*?)<\/a>/', '$2 <$1>', $text ); 181 182 return html_entity_decode( strip_tags( $text ), ENT_QUOTES ); 183 } 184 185 /** 186 * Dummy 187 */ 188 public function showHelpBox( $msg /*, ... */ ) { 189 } 190 191 public function showStatusMessage( Status $status ) { 192 $warnings = array_merge( $status->getWarningsArray(), 193 $status->getErrorsArray() ); 194 195 if ( count( $warnings ) !== 0 ) { 196 foreach ( $warnings as $w ) { 197 call_user_func_array( array( $this, 'showMessage' ), $w ); 198 } 199 } 200 201 if ( !$status->isOk() ) { 202 echo "\n"; 203 exit( 1 ); 204 } 205 } 206 207 public function envCheckPath() { 208 if ( !$this->specifiedScriptPath ) { 209 $this->showMessage( 'config-no-cli-uri', $this->getVar( "wgScriptPath" ) ); 210 } 211 212 return parent::envCheckPath(); 213 } 214 215 protected function envGetDefaultServer() { 216 return null; // Do not guess if installing from CLI 217 } 218 219 public function dirIsExecutable( $dir, $url ) { 220 $this->showMessage( 'config-no-cli-uploads-check', $dir ); 221 222 return false; 223 } 224 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |