Revert Special:Version to known-good state as of r52060, without the ten billion...
authorBrion Vibber <brion@users.mediawiki.org>
Mon, 10 Aug 2009 20:15:24 +0000 (20:15 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Mon, 10 Aug 2009 20:15:24 +0000 (20:15 +0000)
RELEASE-NOTES
includes/DefaultSettings.php
includes/specials/SpecialVersion.php

index 68519e4..c0e5060 100644 (file)
@@ -131,9 +131,6 @@ this. Was used when mwEmbed was going to be an extension.
   stripped from them.
 * Added a PHP port of CDB (constant database), for improved local caching when
   the DBA extension is not available.
-* (bug 14611) Added support showing the version of the web server, image 
-  thumbnailing engine, diff/diff3 engine and TeX engine, enabled for sysops 
-  by default.
 * Introduced a new system for localisation caching. The system is based around 
   fast fetches of individual messages, minimising memory overhead and startup 
   time in the typical case. The database backend will be used by default, but 
@@ -176,7 +173,6 @@ this. Was used when mwEmbed was going to be an extension.
   extension version in Special:Version
 * (bug 20014) Added CSS class "mw-listgrouprights-right-name" is wrapped on the
   right name in Special:ListGroupRights
-* The description message in $wgExtensionCredits can be an array with parameters
 * (bug 12920) New CoreParserFunction {{nse:...}} as an url-friendly equivalent
   to {{ns:...}}
 * (bug 16322) Allow maintenance scripts to accept DB user/pass over input or params
index 4e8c284..fbcb864 100644 (file)
@@ -2773,8 +2773,8 @@ $wgDebugJavaScript = false;
  * <code>
  * $wgExtensionCredits[$type][] = array(
  *     'name' => 'Example extension',
- *     'version' => 1.9,
- *     'path' => __FILE__,
+ *  'version' => 1.9,
+ *  'path'           => __FILE__,
  *     'author' => 'Foo Barstein',
  *     'url' => 'http://wwww.example.com/Example%20Extension/',
  *     'description' => 'An example extension',
@@ -2783,8 +2783,6 @@ $wgDebugJavaScript = false;
  * </code>
  *
  * Where $type is 'specialpage', 'parserhook', 'variable', 'media' or 'other'.
- * Where 'descriptionmsg' can be an array with message key and parameters:
- * 'descriptionmsg' => array( 'exampleextension-desc', param1, param2, ... ),
  */
 $wgExtensionCredits = array();
 /*
index d9f6c00..62cbac8 100644 (file)
@@ -13,7 +13,7 @@ class SpecialVersion extends SpecialPage {
        private $firstExtOpened = true;
 
        function __construct(){
-               parent::__construct( 'Version' );
+               parent::__construct( 'Version' );       
        }
 
        /**
@@ -31,7 +31,7 @@ class SpecialVersion extends SpecialPage {
                } else {
                        $wgOut->addHTML( '<div dir="ltr">' );
                }
-               $text =
+               $text = 
                        $this->MediaWikiCredits() .
                        $this->softwareInformation() .
                        $this->extensionCredits();
@@ -43,36 +43,6 @@ class SpecialVersion extends SpecialPage {
                $wgOut->addHTML( '</div>' );
        }
 
-       /**
-        * check executive path existence
-        * @param string command
-        * @return mixed existsIn
-        */
-       static function checkExecPath( $cmd ) {
-               $existsIn = false;
-               $pathDirArray = explode( ';' , $_SERVER['PATH'] );
-               foreach ( $pathDirArray as $pathDir ) {
-                       $pathDir = str_replace('\\', '/', $pathDir);
-                       $pathDir .= '/';
-                       if ( ( file_exists ( $pathDir . '/' . $cmd ) ) || ( file_exists( trim( $pathDir . '/' . $cmd, '"' ) . '.exe' ) ) ) {
-                               $existsIn = $pathDir;
-                       }
-               }
-               return $existsIn;
-       }
-
-       /**
-        * execuate command for output
-        * @param string command
-        * @return string output
-        */
-       static function execOutput( $cmd ) {
-               $out = array( $cmd );
-               exec( $cmd.' 2>&1', $out );
-               unset($out[0]);
-               return implode("\n", $out );
-       }
-
        /**#@+
         * @private
         */
@@ -92,8 +62,7 @@ class SpecialVersion extends SpecialPage {
                copyright © 2001-2009 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
                Tim Starling, Erik Möller, Gabriel Wicke, Ævar Arnfjörð Bjarmason,
                Niklas Laxström, Domas Mituzas, Rob Church, Yuri Astrakhan, Aryeh Gregor,
-               Aaron Schulz, Andrew Garrett, Raimond Spekking, Alexandre Emsenhuber,
-               Siebrand Mazeland, Chad Horohoe and others.
+               Aaron Schulz and others.
 
                MediaWiki is free software; you can redistribute it and/or modify
                it under the terms of the GNU General Public License as published by
@@ -119,225 +88,16 @@ class SpecialVersion extends SpecialPage {
         * @return wiki text showing the third party software versions (apache, php, mysql).
         */
        static function softwareInformation() {
-               global $wgUseImageMagick, $wgImageMagickConvertCommand, $wgDiff3, $wgDiff, $wgUseTeX;
-               global $wgFileExtensions, $wgSVGConverter, $wgSVGConverters, $wgSVGConverterPath;
-               global $wgUser, $wgSpecialVersionExtended;
                $dbr = wfGetDB( DB_SLAVE );
 
                // Put the software in an array of form 'name' => 'version'. All messages should
                // be loaded here, so feel free to use wfMsg*() in the 'name'. Raw HTML or wikimarkup
                // can be used
                $software = array();
-
                $software['[http://www.mediawiki.org/ MediaWiki]'] = self::getVersionLinked();
                $software['[http://www.php.net/ PHP]'] = phpversion() . " (" . php_sapi_name() . ")";
                $software[$dbr->getSoftwareLink()] = $dbr->getServerVersion();
 
-               if( $wgSpecialVersionExtended || $wgUser->isAllowed( 'versiondetail' ) ) {
-                       // Get the web server name and its version, if applicable
-                       // Chop off PHP text from the string if it has the text desired
-                       $serverSoftware = $_SERVER['SERVER_SOFTWARE'];
-                       if ( strrpos( $serverSoftware, 'PHP' ) === false ) {
-                       } else {
-                               $serverSoftware = trim( substr( $serverSoftware, 0, strrpos($serverSoftware,'PHP') - 1 ) );
-                       }
-
-                       // Get the web server name and its version.
-                       $serverSoftwareLine = explode('/',$serverSoftware);
-                       $serverSoftwareName = $serverSoftwareLine[0];
-
-                       // Insert the website of the web server if applicable.
-                       if ( stristr( $serverSoftwareName, 'Apache' ) )
-                               $serverSoftwareURL = 'http://httpd.apache.org/';
-                       else if ( stristr( $serverSoftwareName, 'IIS' ) )
-                               $serverSoftwareURL = 'http://www.microsoft.com/iis/';
-                       else if ( stristr( $serverSoftwareName, 'Cherokee' ) )
-                               $serverSoftwareURL = 'http://www.cherokee-project.com/';
-                       else if ( stristr( $serverSoftwareName, 'lighttpd' ) )
-                               $serverSoftwareURL = 'http://www.lighttpd.net/';
-                       else if ( stristr( $serverSoftwareName, 'Sun' ) )
-                               $serverSoftwareURL = 'http://www.sun.com/software/products/web_srvr/';
-                       else if ( stristr( $serverSoftwareName, 'nginx' ) )
-                               $serverSoftwareURL = 'http://nginx.net/';
-
-                       // Get the version of the web server. If does not have one,
-                       // leave it as empty.
-                       if ( $serverSoftwareLine[1] != '' ) {
-                               $serverSoftwareVersion = $serverSoftwareLine[1];
-                       } else {
-                               $serverSoftwareVersion = '';
-                       }
-
-                       if ( isset( $serverSoftwareURL ) )
-                               $software["[$serverSoftwareURL $serverSoftwareName]"] = $serverSoftwareVersion;
-                       else
-                               $software[$serverSoftwareName] = $serverSoftwareVersion;
-
-                       // Version information for diff3
-                       if ( file_exists( trim( $wgDiff3, '"' ) ) ) {
-                               $swDiff3Info = self::execOutput( $wgDiff3 . ' -v' );
-                               $swDiff3Line = explode("\n",$swDiff3Info ,2);
-                               $swDiff3Ver = $swDiff3Line[0];
-                               $swDiff3Ver = str_replace( 'diff3 (GNU diffutils) ', '' , $swDiff3Ver);
-                               $software['[http://www.gnu.org/software/diffutils/diffutils.html diff3]'] = $swDiff3Ver;
-                       }
-
-                       // Version information for diff
-                       if ( file_exists( trim( $wgDiff, '"' ) ) ) {
-                               $swDiffInfo = self::execOutput( $wgDiff . ' -v' );
-                               $swDiffLine = explode("\n",$swDiffInfo ,2);
-                               $swDiffVer = $swDiffLine[0];
-                               $swDiffVer = str_replace( 'diff (GNU diffutils) ', '' , $swDiffVer);
-                               $software['[http://www.gnu.org/software/diffutils/diffutils.html diff]'] = $swDiffVer;
-                       }
-
-                       // Look for ImageMagick's version, if did not found, try to find the GD library version
-                       if ( $wgUseImageMagick ) {
-                               if ( file_exists( trim( $wgImageMagickConvertCommand, '"' ) ) ) {
-                                       $swImageMagickInfo = self::execOutput( $wgImageMagickConvertCommand . ' -version' );
-                                       list( $head, $tail ) = explode( 'ImageMagick', $swImageMagickInfo );
-                                       list( $swImageMagickVer ) = explode('http://www.imagemagick.org', $tail );
-                                       $software['[http://www.imagemagick.org/ ImageMagick]'] = $swImageMagickVer;
-                               }
-                       } else {
-                               if( function_exists( 'gd_info' ) ) {
-                                       $gdInfo = gd_info();
-                                       if ( strstr( $gdInfo['GD Version'], 'bundled' ) != false ) {
-                                               $gd_URL = 'http://www.php.net/gd';
-                                       } else {
-                                               $gd_URL = 'http://www.libgd.org';
-                                       }
-                                       $software['[' . $gd_URL . ' GD library]'] = $gdInfo['GD Version'];
-                               }
-                       }
-
-                       // Look for SVG converter and print the version info
-                       if ( in_array( 'svg', $wgFileExtensions ) ) {
-                               $swSVGConvName = $wgSVGConverter;
-                               $swSVGConvInfo = '';
-                               $haveSVGConvVer = false;
-                               $pathVar = '$path/';
-                               $binPath = '/usr/bin/';
-                               $execPath = strtok(strstr($wgSVGConverters[$wgSVGConverter],$pathVar), ' ');
-                               $execPath = substr_replace($execPath, '', 0, strlen($pathVar));
-                               $execFullPath = trim($wgSVGConverterPath,'"') . $execPath;
-                               $execBinPath = $binPath . $execPath;
-                               $execPathVal = self::checkExecPath( $execPath );
-                               if (strstr($execFullPath, ' ') != false) {
-                                       $execFullPath = '"' . $execFullPath . '"';
-                               }
-                               if ( !strcmp( $wgSVGConverter, 'ImageMagick') ) {
-                                       // Get version info for ImageMagick
-                                       if ( file_exists( $execBinPath ) )
-                                               $swSVGConvInfo = self::execOutput( $execBinPath . ' -version' );
-                                       else if ( file_exists( trim( $execFullPath, '"' ) ) || ( file_exists( trim( $execFullPath, '"' ) . '.exe' ) ) )
-                                               $swSVGConvInfo = self::execOutput( $execFullPath . ' -version' );
-                                       else if ( $execPathVal != false )
-                                               $swSVGConvInfo = self::execOutput( $execPathVal . $execPath . ' -version' );
-                                       list( $head, $tail ) = explode( 'ImageMagick', $swSVGConvInfo );
-                                       list( $swSVGConvVer ) = explode('http://www.imagemagick.org', $tail );
-                                       $swSVGConvURL = 'http://www.imagemagick.org/';
-                                       $haveSVGConvVer = true;
-                               } else if ( strstr ($execFullPath, 'rsvg') != false ) {
-                                       // Get version info for rsvg
-                                       if ( file_exists( $execBinPath ) )
-                                               $swSVGConvInfo = self::execOutput( $execBinPath . ' -v' );
-                                       else if ( file_exists( trim( $execFullPath, '"' ) ) || ( file_exists( trim( $execFullPath, '"' ) . '.exe' ) ) )
-                                               $swSVGConvInfo = self::execOutput( $execFullPath . ' -v' );
-                                       else if ( $execPathVal != false )
-                                               $swSVGConvInfo = self::execOutput( $execPathVal . $execPath . ' -v' );
-                                       $swSVGConvLine = explode("\n",$swSVGConvInfo ,2);
-                                       $swSVGConvVer = $swSVGConvLine[0];
-                                       $swSVGConvURL = 'http://librsvg.sourceforge.net/';
-                                       $haveSVGConvVer = true;
-                               } else if ( strstr ($execFullPath, 'inkscape') != false ) {
-                                       // Get version info for Inkscape
-                                       if ( file_exists( $execBinPath ) )
-                                               $swSVGConvInfo = self::execOutput( $execBinPath . ' -z -V' );
-                                       else if ( file_exists( trim( $execFullPath, '"' ) ) || ( file_exists( trim( $execFullPath, '"' ) . '.exe' ) ) )
-                                               $swSVGConvInfo = self::execOutput( $execFullPath . ' -z -V' );
-                                       else if ( $execPathVal != false )
-                                               $swSVGConvInfo = self::execOutput( $execPathVal . $execPath . ' -z -V' );
-                                       $swSVGConvLine = explode("\n",$swSVGConvInfo ,2);
-                                       $swSVGConvVer = ltrim( $swSVGConvLine[0], 'Inkscape ' );
-                                       $swSVGConvURL = 'http://www.inkscape.org/';
-                                       $swSVGConvName = ucfirst( $wgSVGConverter );
-                                       $haveSVGConvVer = true;
-                               }
-                               if ( $haveSVGConvVer )
-                                       $software["[$swSVGConvURL $swSVGConvName]"] = $swSVGConvVer;
-                       }
-
-                       // Look for TeX support and print the software version info
-                       if ( $wgUseTeX ) {
-                               $binPath = '/usr/bin/';
-                               $swMathName = Array(
-                                       'ocaml'       => 'OCaml',
-                                       'gs'          => 'Ghostscript',
-                                       'dvips'       => 'Dvips',
-                                       'latex'       => 'LaTeX',
-                                       'imagemagick' => 'ImageMagick',
-                               );
-                               $swMathURL = Array(
-                                       'ocaml'       => 'http://caml.inria.fr/',
-                                       'gs'          => 'http://www.ghostscript.com/',
-                                       'dvips'       => 'http://www.radicaleye.com/dvips.html',
-                                       'latex'       => 'http://www.latex-project.org/',
-                                       'imagemagick' => 'http://www.imagemagick.org/',
-                               );
-                               $swMathExec = Array(
-                                       'ocaml'       => 'ocamlc',
-                                       'gs'          => 'gs',
-                                       'dvips'       => 'dvips',
-                                       'latex'       => 'latex',
-                                       'imagemagick' => 'convert',
-                               );
-                               $swMathParam = Array(
-                                       'ocaml'       => '-version',
-                                       'gs'          => '-v',
-                                       'dvips'       => '-v',
-                                       'latex'       => '-v',
-                                       'imagemagick' => '-version',
-                               );
-                               foreach ( $swMathExec as $swMath => $swMathCmd ) {
-                                       $wBinPath = '';
-                                       if ( file_exists( $binPath . 'whereis' ) ) {
-                                               $swWhereIsInfo = self::execOutput( $binPath . 'whereis -b ' . $swMathCmd );
-                                               $swWhereIsLine = explode( "\n", $swWhereIsInfo, 2);
-                                               $swWhereIsFirstLine = $swWhereIsLine[0];
-                                               $swWhereIsBinPath = explode( ' ', $swWhereIsFirstLine, 3);
-                                               if ( count( $swWhereIsBinPath ) > 1 )
-                                                       $wBinPath = dirname( $swWhereIsBinPath[1] );
-                                       } else {
-                                               $swPathLine = explode( ';', $_SERVER['PATH'] );
-                                               $swPathFound = false;
-                                               foreach( $swPathLine as $swPathDir ) {
-                                                       if ( file_exists( $swPathDir . '/' . $swMathCmd . '.exe' ) && ($swPathFound === false) ) {
-                                                               $wBinPath = $swPathDir . '/';
-                                                               $swPathFound = true;
-                                                       }
-                                               }
-                                       }
-                                       if ( file_exists( $binPath . $swMathCmd ) || file_exists( $wBinPath . $swMathCmd ) ) {
-                                               $swMathInfo = self::execOutput( $swMathCmd . ' ' . $swMathParam[$swMath] );
-                                               $swMathLine = explode( "\n", $swMathInfo, 2);
-                                               $swMathVerInfo = $swMathLine[0];
-                                               if ( !strcmp( $swMath, 'gs' ) )
-                                                       $swMathVerInfo = str_replace( 'GPL Ghostscript ', '', $swMathVerInfo );
-                                               else if ( !strcmp( $swMath, 'dvips' ) ) {
-                                                       $swMathVerParts = explode( ' ' , $swMathVerInfo );
-                                                       $swMathVerInfo = $swMathVerParts[3];
-                                               } else if ( !strcmp( $swMath, 'imagemagick' ) ) {
-                                                       list( $head, $tail ) = explode( 'ImageMagick', $swMathVerInfo );
-                                                       list( $swMathVerInfo ) = explode('http://www.imagemagick.org', $tail );
-                                               }
-                                               $swMathVer[$swMath] = trim( $swMathVerInfo );
-                                               $software["[$swMathURL[$swMath] $swMathName[$swMath]]"] = $swMathVer[$swMath];
-                                       }
-                               }
-                       }
-               }
-
                // Allow a hook to add/remove items
                wfRunHooks( 'SoftwareInfo', array( &$software ) );
 
@@ -352,7 +112,7 @@ class SpecialVersion extends SpecialPage {
                                        <td>" . $name . "</td>
                                        <td>" . $version . "</td>
                                </tr>\n";
-               }
+               }               
                return $out . Xml::closeElement( 'table' );
        }
 
@@ -376,7 +136,7 @@ class SpecialVersion extends SpecialPage {
                wfProfileOut( __METHOD__ );
                return $version;
        }
-
+       
        /**
         * Return a string of the MediaWiki version with a link to SVN revision if
         * available
@@ -447,7 +207,7 @@ class SpecialVersion extends SpecialPage {
                                                isset ( $extension['author'] )         ? $extension['author']      : '',
                                                isset ( $extension['url'] )            ? $extension['url']         : null,
                                                isset ( $extension['description'] )    ? $extension['description'] : '',
-                                               isset ( $extension['descriptionmsg'] ) ? $extension['descriptionmsg'] : null
+                                               isset ( $extension['descriptionmsg'] ) ? $extension['descriptionmsg'] : ''
                                        );
                                }
                        }
@@ -493,20 +253,13 @@ class SpecialVersion extends SpecialPage {
        function formatCredits( $name, $version = null, $subVersion = null, $subVersionCo = null, $subVersionURL = null, $author = null, $url = null, $description = null, $descriptionMsg = null ) {
                $haveSubversion = $subVersion;
                $extension = isset( $url ) ? "[$url $name]" : $name;
-               $version = isset( $version ) ? '<span class="mw-version-ext-version">' . wfMsg( 'version-version', $version ) . '</span>' : '';
+               $version = isset( $version ) ? wfMsg( 'version-version', $version ) : '';
                $subVersion = isset( $subVersion ) ? wfMsg( 'version-svn-revision', $subVersion, $subVersionCo ) : '';
                $subVersion = isset( $subVersionURL ) ? "[$subVersionURL $subVersion]" : $subVersion;
 
                # Look for a localized description
                if( isset( $descriptionMsg ) ) {
-                       if( is_array( $descriptionMsg ) ) {
-                               $descriptionMsgKey = $descriptionMsg[0]; // Get the message key
-                               array_shift( $descriptionMsg ); // Shift out the message key to get the parameters only
-                               array_map( "htmlspecialchars", $descriptionMsg ); // For sanity
-                               $msg = wfMsg( $descriptionMsgKey, $descriptionMsg );
-                       } else {
-                               $msg = wfMsg( $descriptionMsg );
-                       }
+                       $msg = wfMsg( $descriptionMsg );
                        if ( !wfEmptyMsg( $descriptionMsg, $msg ) && $msg != '' ) {
                                $description = $msg;
                        }
@@ -616,7 +369,7 @@ class SpecialVersion extends SpecialPage {
                } else {
                        if( is_object( $list[0] ) )
                                $class = get_class( $list[0] );
-                       else
+                       else 
                                $class = $list[0];
                        return "($class, {$list[1]})";
                }
@@ -631,7 +384,7 @@ class SpecialVersion extends SpecialPage {
         * @param Boolean $extension optional to check the path whether is from
         *                Wikimedia SVN server or not
         * @param Boolean $relPath optional to get the end part of the checkout path
-        * @return mixed revision number as int, end part of the checkout path,
+        * @return mixed revision number as int, end part of the checkout path, 
         *               or false if not a SVN checkout
         */
        public static function getSvnRevision( $dir, $coRev = false, $extension = false, $relPath = false) {