Autoload Linker, Skin.php, move $wgValidSkinNames to static private at Skin, use...
authorDomas Mituzas <midom@users.mediawiki.org>
Thu, 8 Jun 2006 13:47:38 +0000 (13:47 +0000)
committerDomas Mituzas <midom@users.mediawiki.org>
Thu, 8 Jun 2006 13:47:38 +0000 (13:47 +0000)
includes/Setup.php
includes/Skin.php
includes/SpecialPreferences.php
includes/Title.php

index 3901142..14dad72 100644 (file)
@@ -56,7 +56,6 @@ require_once( 'GlobalFunctions.php' );
 require_once( 'Hooks.php' );
 require_once( 'Namespace.php' );
 require_once( 'User.php' );
-require_once( 'Skin.php' );
 require_once( 'OutputPage.php' );
 require_once( 'MagicWord.php' );
 require_once( 'Block.php' );
index dc14640..bf6c9c3 100644 (file)
@@ -9,27 +9,8 @@ if ( ! defined( 'MEDIAWIKI' ) )
  */
 
 # See skin.txt
-require_once( 'Linker.php' );
 require_once( 'Image.php' );
 
-# Get a list of available skins
-# Build using the regular expression '^(.*).php$'
-# Array keys are all lower case, array value keep the case used by filename
-#
-
-$skinDir = dir( $wgStyleDirectory );
-
-# while code from www.php.net
-while (false !== ($file = $skinDir->read())) {
-       // Skip non-PHP files, hidden files, and '.dep' includes
-       if(preg_match('/^([^.]*)\.php$/',$file, $matches)) {
-               $aSkin = $matches[1];
-               $wgValidSkinNames[strtolower($aSkin)] = $aSkin;
-       }
-}
-$skinDir->close();
-unset($matches);
-
 /**
  * The main skin class that provide methods and properties for all other skins.
  * This base class is also the "Standard" skin.
@@ -44,6 +25,8 @@ class Skin extends Linker {
        var $rcCacheIndex ; # Recent Changes Cache Counter for visibility toggle
        var $rcMoveIndex;
        /**#@-*/
+       
+       private static $validSkinNames;
 
        /** Constructor, call parent constructor */
        function Skin() { parent::Linker(); }
@@ -54,8 +37,31 @@ class Skin extends Linker {
         * @static
         */
        function getSkinNames() {
-               global $wgValidSkinNames;
-               return $wgValidSkinNames;
+               if (!is_array(Skin::$validSkinNames)) {
+                       Skin::initializeSkinNames();
+               }
+               return Skin::$validSkinNames;
+       }
+
+
+       /** Initialize a list of available skins
+        * Build using the regular expression '^(.*).php$'
+        * Array keys are all lower case, array value keep the case used by filename
+        */
+       
+       function initializeSkinNames() {
+               global $wgStyleDirectory;
+               $skinDir = dir( $wgStyleDirectory );
+               
+               # while code from www.php.net
+               while (false !== ($file = $skinDir->read())) {
+                       // Skip non-PHP files, hidden files, and '.dep' includes
+                       if(preg_match('/^([^.]*)\.php$/',$file, $matches)) {
+                               $aSkin = $matches[1];
+                               Skin::$validSkinNames[strtolower($aSkin)] = $aSkin;
+                       }
+               }
+               $skinDir->close();
        }
 
        /**
index 1ade307..704b548 100644 (file)
@@ -444,7 +444,7 @@ class PreferencesForm {
         * @access private
         */
        function mainPrefsForm( $status , $message = '' ) {
-               global $wgUser, $wgOut, $wgLang, $wgContLang, $wgValidSkinNames;
+               global $wgUser, $wgOut, $wgLang, $wgContLang;
                global $wgAllowRealName, $wgImageLimits, $wgThumbLimits;
                global $wgDisableLangConversion;
                global $wgEnotifWatchlist, $wgEnotifUserTalk,$wgEnotifMinorEdits;
@@ -721,9 +721,9 @@ class PreferencesForm {
                $wgOut->addHTML( "<fieldset>\n<legend>\n" . wfMsg('skin') . "</legend>\n" );
                $mptitle = Title::newMainPage();
                $previewtext = wfMsg('skinpreview');
-               # Only show members of $wgValidSkinNames rather than
+               # Only show members of Skin::getSkinNames() rather than
                # $skinNames (skins is all skin names from Language.php)
-               foreach ($wgValidSkinNames as $skinkey => $skinname ) {
+               foreach (Skin::getSkinNames() as $skinkey => $skinname ) {
                        if ( in_array( $skinkey, $wgSkipSkins ) ) {
                                continue;
                        }
index 75acdec..70c0029 100644 (file)
@@ -1163,8 +1163,7 @@ class Title {
         * Check that the corresponding skin exists
         */
        function isValidCssJsSubpage() {
-               global $wgValidSkinNames;
-               return( $this->isCssJsSubpage() && array_key_exists( $this->getSkinFromCssJsSubpage(), $wgValidSkinNames ) );
+               return( $this->isCssJsSubpage() && array_key_exists( $this->getSkinFromCssJsSubpage(), Skin::getSkinNames() ) );
        }
        /**
         * Trim down a .css or .js subpage title to get the corresponding skin name