summaryrefslogtreecommitdiff
path: root/includes/SpecialVersion.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/SpecialVersion.php')
-rw-r--r--includes/SpecialVersion.php97
1 files changed, 63 insertions, 34 deletions
diff --git a/includes/SpecialVersion.php b/includes/SpecialVersion.php
index 8744597a..dba694c0 100644
--- a/includes/SpecialVersion.php
+++ b/includes/SpecialVersion.php
@@ -21,6 +21,8 @@ function wfSpecialVersion() {
}
class SpecialVersion {
+ private $firstExtOpened = true;
+
/**
* main()
*/
@@ -42,16 +44,21 @@ class SpecialVersion {
*/
/**
+ * Return wiki text showing the licence information and third party
+ * software versions (apache, php, mysql).
* @static
*/
function MediaWikiCredits() {
$version = self::getVersion();
$dbr =& wfGetDB( DB_SLAVE );
+ global $wgLanguageNames, $wgLanguageCode;
+ $mwlang = $wgLanguageNames[$wgLanguageCode];
+
$ret =
"__NOTOC__
This wiki is powered by '''[http://www.mediawiki.org/ MediaWiki]''',
- copyright (C) 2001-2006 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
+ copyright (C) 2001-2007 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 and others.
@@ -74,15 +81,17 @@ class SpecialVersion {
* [http://www.php.net/ PHP]: " . phpversion() . " (" . php_sapi_name() . ")
* " . $dbr->getSoftwareLink() . ": " . $dbr->getServerVersion();
- return str_replace( "\t\t", '', $ret );
+ return str_replace( "\t\t", '', $ret ) . "\n";
}
-
+
+ /** Return a string of the MediaWiki version with SVN revision if available */
public static function getVersion() {
global $wgVersion, $IP;
$svn = self::getSvnRevision( $IP );
return $svn ? "$wgVersion (r$svn)" : $wgVersion;
}
+ /** Generate wikitext showing extensions name, URL, author and description */
function extensionCredits() {
global $wgExtensionCredits, $wgExtensionFunctions, $wgParser, $wgSkinExtensionFunction;
@@ -97,10 +106,12 @@ class SpecialVersion {
);
wfRunHooks( 'SpecialVersionExtensionTypes', array( &$this, &$extensionTypes ) );
- $out = "\n* Extensions:\n";
+ $out = "<h2>Extensions</h2>\n";
+ $out .= wfOpenElement('table', array('id' => 'sv-ext') );
+
foreach ( $extensionTypes as $type => $text ) {
if ( count( @$wgExtensionCredits[$type] ) ) {
- $out .= "** $text:\n";
+ $out .= $this->openExtType( $text );
usort( $wgExtensionCredits[$type], array( $this, 'compare' ) );
@@ -119,30 +130,31 @@ class SpecialVersion {
}
if ( count( $wgExtensionFunctions ) ) {
- $out .= "** Extension functions:\n";
- $out .= '***' . $this->listToText( $wgExtensionFunctions ) . "\n";
+ $out .= $this->openExtType('Extension functions');
+ $out .= '<tr><td colspan="3">' . $this->listToText( $wgExtensionFunctions ) . "</td></tr>\n";
}
if ( $cnt = count( $tags = $wgParser->getTags() ) ) {
for ( $i = 0; $i < $cnt; ++$i )
$tags[$i] = "&lt;{$tags[$i]}&gt;";
- $out .= "** Parser extension tags:\n";
- $out .= '***' . $this->listToText( $tags ). "\n";
+ $out .= $this->openExtType('Parser extension tags');
+ $out .= '<tr><td colspan="3">' . $this->listToText( $tags ). "</td></tr>\n";
}
-
+
if( $cnt = count( $fhooks = $wgParser->getFunctionHooks() ) ) {
- $out .= "** Parser function hooks:\n";
- $out .= '***' . $this->listToText( $fhooks ) . "\n";
+ $out .= $this->openExtType('Parser function hooks');
+ $out .= '<tr><td colspan="3">' . $this->listToText( $fhooks ) . "</td></tr>\n";
}
if ( count( $wgSkinExtensionFunction ) ) {
- $out .= "** Skin extension functions:\n";
- $out .= '***' . $this->listToText( $wgSkinExtensionFunction ) . "\n";
+ $out .= $this->openExtType('Skin extension functions');
+ $out .= '<tr><td colspan="3">' . $this->listToText( $wgSkinExtensionFunction ) . "</td></tr>\n";
}
-
+ $out .= wfCloseElement( 'table' );
return $out;
}
+ /** Callback to sort extensions by type */
function compare( $a, $b ) {
if ( $a['name'] === $b['name'] )
return 0;
@@ -151,7 +163,7 @@ class SpecialVersion {
}
function formatCredits( $name, $version = null, $author = null, $url = null, $description = null) {
- $ret = '*** ';
+ $ret = '<tr><td>';
if ( isset( $url ) )
$ret .= "[$url ";
$ret .= "''$name";
@@ -160,13 +172,10 @@ class SpecialVersion {
$ret .= "''";
if ( isset( $url ) )
$ret .= ']';
- if ( isset( $description ) )
- $ret .= ', ' . $description;
- if ( isset( $description ) && isset( $author ) )
- $ret .= ', ';
- if ( isset( $author ) )
- $ret .= ' by ' . $this->listToText( (array)$author );
-
+ $ret .= '</td>';
+ $ret .= "<td>$description</td>";
+ $ret .= "<td>" . $this->listToText( (array)$author ) . "</td>";
+ $ret .= '</tr>';
return "$ret\n";
}
@@ -179,16 +188,36 @@ class SpecialVersion {
if ( count( $wgHooks ) ) {
$myWgHooks = $wgHooks;
ksort( $myWgHooks );
-
- $ret = "* Hooks:\n";
+
+ $ret = "<h2>Hooks</h2>\n"
+ . wfOpenElement('table', array('id' => 'sv-hooks') )
+ . "<tr><th>Hook name</th><th>Subscribed by</th></tr>\n";
+
foreach ($myWgHooks as $hook => $hooks)
- $ret .= "** $hook: " . $this->listToText( $hooks ) . "\n";
+ $ret .= "<tr><td>$hook</td><td>" . $this->listToText( $hooks ) . "</td></tr>\n";
+ $ret .= '</table>';
return $ret;
} else
return '';
}
+ private function openExtType($text, $name = null) {
+ $opt = array( 'colspan' => 3 );
+ $out = '';
+
+ if(!$this->firstExtOpened) {
+ // Insert a spacing line
+ $out .= '<tr class="sv-space">' . wfElement( 'td', $opt ) . "</tr>\n";
+ }
+ $this->firstExtOpened = false;
+
+ if($name) { $opt['id'] = "sv-$name"; }
+
+ $out .= "<tr>" . wfElement( 'th', $opt, $text) . "</tr>\n";
+ return $out;
+ }
+
/**
* @static
*
@@ -207,14 +236,16 @@ class SpecialVersion {
function listToText( $list ) {
$cnt = count( $list );
- if ( $cnt == 1 )
+ if ( $cnt == 1 ) {
// Enforce always returning a string
return (string)$this->arrayToString( $list[0] );
- else {
+ } elseif ( $cnt == 0 ) {
+ return '';
+ } else {
$t = array_slice( $list, 0, $cnt - 1 );
$one = array_map( array( &$this, 'arrayToString' ), $t );
$two = $this->arrayToString( $list[$cnt - 1] );
-
+
return implode( ', ', $one ) . " and $two";
}
}
@@ -227,9 +258,9 @@ class SpecialVersion {
* @return mixed
*/
function arrayToString( $list ) {
- if ( ! is_array( $list ) )
+ if ( ! is_array( $list ) ) {
return $list;
- else {
+ } else {
$class = get_class( $list[0] );
return "($class, {$list[1]})";
}
@@ -237,7 +268,7 @@ class SpecialVersion {
/**
* Retrieve the revision number of a Subversion working directory.
- *
+ *
* @bug 7335
*
* @param string $dir
@@ -281,8 +312,6 @@ class SpecialVersion {
// subversion is release 1.4
return intval( $content[3] );
}
-
- return false;
}
/**#@-*/