X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=install-utils.inc;h=2197fe6ab2051cd5699194f3e491cb8171c7168e;hb=41701080d2c9b0b37990f5d79e8eee1c9b3b4093;hp=1fb2cc8e82b9fb7f19398fea264b17d2d61fad61;hpb=2f60c52a3c86250d08e3c3b60e67529ad580fc84;p=lhc%2Fweb%2Fwiklou.git diff --git a/install-utils.inc b/install-utils.inc index 1fb2cc8e82..2197fe6ab2 100644 --- a/install-utils.inc +++ b/install-utils.inc @@ -4,23 +4,23 @@ function install_version_checks() { # We dare not turn output buffer _off_ since this will break completely # if PHP is globally configured to run through a gzip filter. @ob_implicit_flush( true ); - - if( !function_exists( "version_compare" ) ) { + + if( !function_exists( 'version_compare' ) ) { # version_compare was introduced in 4.1.0 - die( "Your PHP version is much too old; 4.0.x will _not_ work. 4.3.2 or higher is recommended. ABORTING.\n" ); + die( "Your PHP version is much too old; 4.0.x will _not_ work. 4.3.2 or higher is required. ABORTING.\n" ); } - if( version_compare( phpversion(), "4.3.2" ) < 0 ) { - echo "WARNING: PHP 4.3.2 or higher is recommended. Older versions from 4.1.x up may work but are not actively supported.\n\n"; + if( version_compare( phpversion(), '4.3.2' ) < 0 ) { + die( "PHP 4.3.2 or higher is required. ABORTING.\n" ); } - + if (!extension_loaded('mysql')) { if (!dl('mysql.so')) { - print "Could not load MySQL driver! Please compile ". + print 'Could not load MySQL driver! Please compile '. "php --with-mysql or install the mysql.so module.\n"; exit; } } - + global $wgCommandLineMode; $wgCommandLineMode = true; umask( 000 ); @@ -50,34 +50,55 @@ function copydirectory( $source, $dest ) { $handle = opendir( $source ); while ( false !== ( $f = readdir( $handle ) ) ) { $fullname = "$source/$f"; - if ( $f{0} !="." && is_file( $fullname ) ) { + if ( $f{0} != '.' && is_file( $fullname ) ) { copyfile( $source, $f, $dest ); } } } -function readconsole( $prompt = "" ) { - if ( function_exists( "readline" ) ) { +function readconsole( $prompt = '' ) { + static $isatty = null, $fp = null; + if ( is_null( $fp ) ) { + $fp = fopen( 'php://stdin', 'r' ); + } + if ( is_null( $isatty ) ) { + if ( !function_exists( 'posix_isatty' ) || posix_isatty( $fp ) ) { + $isatty = true; + } else { + $isatty = false; + } + } + + if ( $isatty && function_exists( 'readline' ) ) { return readline( $prompt ); } else { - print $prompt; - $fp = fopen( "php://stdin", "r" ); - $resp = trim( fgets( $fp, 1024 ) ); - fclose( $fp ); + if ( $isatty ) { + print $prompt; + } + if ( feof( $fp ) ) { + return false; + } + $st = fgets($fp, 1024); + if ($st === false) return false; + $resp = trim( $st ); return $resp; } } function replacevars( $ins ) { $varnames = array( - "wgDBserver", "wgDBname", "wgDBintlname", "wgDBuser", - "wgDBpassword", "wgDBsqluser", "wgDBsqlpassword", - "wgDBadminuser", "wgDBadminpassword" + 'wgDBserver', 'wgDBname', 'wgDBintlname', 'wgDBuser', + 'wgDBpassword', 'wgDBsqluser', 'wgDBsqlpassword', + 'wgDBadminuser', 'wgDBadminpassword', 'wgDBprefix' ); foreach ( $varnames as $var ) { - global $$var; - $ins = str_replace( '{$' . $var . '}', $$var, $ins ); + if( isset( $GLOBALS[$var] ) ) { + $val = addslashes( $GLOBALS[$var] ); + $ins = str_replace( '{$' . $var . '}', $val, $ins ); + $ins = str_replace( '/*$' . $var . '*/`', '`' . $val, $ins ); + $ins = str_replace( '/*$' . $var . '*/', $val, $ins ); + } } return $ins; } @@ -86,7 +107,7 @@ function replacevars( $ins ) { # Read and execute SQL commands from a file # function dbsource( $fname, $database = false ) { - $fp = fopen( $fname, "r" ); + $fp = fopen( $fname, 'r' ); if ( false === $fp ) { print "Could not open \"{$fname}\".\n"; exit(); @@ -100,20 +121,21 @@ function dbsource( $fname, $database = false ) { $sl = strlen( $line ) - 1; if ( $sl < 0 ) { continue; } - if ( "-" == $line{0} && "-" == $line{1} ) { continue; } + if ( '-' == $line{0} && '-' == $line{1} ) { continue; } - if ( ";" == $line{$sl} ) { + if ( ';' == $line{$sl} && ($sl < 2 || ';' != $line{$sl - 1})) { $done = true; $line = substr( $line, 0, $sl ); } - if ( "" != $cmd ) { $cmd .= " "; } - $cmd .= $line; + if ( '' != $cmd ) { $cmd .= ' '; } + $cmd .= "$line\n"; if ( $done ) { + $cmd = str_replace(';;', ";", $cmd); $cmd = replacevars( $cmd ); if( $database ) - $res = $database->query( $cmd ); + $res = $database->query( $cmd, 'dbsource', true ); else $res = mysql_query( $cmd ); @@ -123,7 +145,7 @@ function dbsource( $fname, $database = false ) { exit(); } - $cmd = ""; + $cmd = ''; $done = false; } } @@ -132,11 +154,11 @@ function dbsource( $fname, $database = false ) { # Obsolete, use Database::fieldExists() function field_exists( $table, $field ) { - $fname = "Update script: field_exists"; + $fname = 'Update script: field_exists'; $db =& wfGetDB( DB_SLAVE ); $res = $db->query( "DESCRIBE $table", $fname ); $found = false; - + while ( $row = $db->fetchObject( $res ) ) { if ( $row->Field == $field ) { $found = true;