diff options
Diffstat (limited to 'includes/SpecialVersion.php')
-rw-r--r-- | includes/SpecialVersion.php | 97 |
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] = "<{$tags[$i]}>"; - $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; } /**#@-*/ |