private $firstExtOpened = true;
function __construct(){
- parent::__construct( 'Version' );
+ parent::__construct( 'Version' );
}
/**
} else {
$wgOut->addHTML( '<div dir="ltr">' );
}
- $text =
+ $text =
$this->MediaWikiCredits() .
$this->softwareInformation() .
$this->extensionCredits();
$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
*/
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
* @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 ) );
<td>" . $name . "</td>
<td>" . $version . "</td>
</tr>\n";
- }
+ }
return $out . Xml::closeElement( 'table' );
}
wfProfileOut( __METHOD__ );
return $version;
}
-
+
/**
* Return a string of the MediaWiki version with a link to SVN revision if
* available
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'] : ''
);
}
}
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;
}
} else {
if( is_object( $list[0] ) )
$class = get_class( $list[0] );
- else
+ else
$class = $list[0];
return "($class, {$list[1]})";
}
* @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) {