Moved GenderCache to cache/
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Tue, 10 Jan 2012 07:39:51 +0000 (07:39 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Tue, 10 Jan 2012 07:39:51 +0000 (07:39 +0000)
includes/AutoLoader.php
includes/GenderCache.php [deleted file]
includes/cache/GenderCache.php [new file with mode: 0644]

index 72e9090..61ae868 100644 (file)
@@ -89,7 +89,6 @@ $wgAutoloadLocalClasses = array(
        'FormAction' => 'includes/Action.php',
        'FormOptions' => 'includes/FormOptions.php',
        'FormSpecialPage' => 'includes/SpecialPage.php',
-       'GenderCache' => 'includes/GenderCache.php',
        'HashtableReplacer' => 'includes/StringUtils.php',
        'HistoryBlob' => 'includes/HistoryBlob.php',
        'HistoryBlobCurStub' => 'includes/HistoryBlob.php',
@@ -366,6 +365,7 @@ $wgAutoloadLocalClasses = array(
        'DependencyWrapper' => 'includes/cache/CacheDependency.php',
        'FileCacheBase' => 'includes/cache/FileCacheBase.php',
        'FileDependency' => 'includes/cache/CacheDependency.php',
+       'GenderCache' => 'includes/cache/GenderCache.php',
        'GlobalDependency' => 'includes/cache/CacheDependency.php',
        'HTMLCacheUpdate' => 'includes/cache/HTMLCacheUpdate.php',
        'HTMLCacheUpdateJob' => 'includes/cache/HTMLCacheUpdate.php',
diff --git a/includes/GenderCache.php b/includes/GenderCache.php
deleted file mode 100644 (file)
index 342f8db..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-
-/**
- * Caches user genders when needed to use correct namespace aliases.
- * @author Niklas Laxström
- * @since 1.18
- */
-class GenderCache {
-       protected $cache = array();
-       protected $default;
-       protected $misses = 0;
-       protected $missLimit = 1000;
-
-       /**
-        * @return GenderCache
-        */
-       public static function singleton() {
-               static $that = null;
-               if ( $that === null ) {
-                       $that = new self();
-               }
-               return $that;
-       }
-
-       protected function __construct() {}
-
-       /**
-        * Returns the default gender option in this wiki.
-        * @return String
-        */
-       protected function getDefault() {
-               if ( $this->default === null ) {
-                       $this->default = User::getDefaultOption( 'gender' );
-               }
-               return $this->default;
-       }
-
-       /**
-        * Returns the gender for given username.
-        * @param $username String: username
-        * @param $caller String: the calling method
-        * @return String
-        */
-       public function getGenderOf( $username, $caller = '' ) {
-               global $wgUser;
-
-               $username = strtr( $username, '_', ' ' );
-               if ( !isset( $this->cache[$username] ) ) {
-
-                       if ( $this->misses >= $this->missLimit && $wgUser->getName() !== $username ) {
-                               if( $this->misses === $this->missLimit ) {
-                                       $this->misses++;
-                                       wfDebug( __METHOD__ . ": too many misses, returning default onwards\n" );
-                               }
-                               return $this->getDefault();
-
-                       } else {
-                               $this->misses++;
-                               if ( !User::isValidUserName( $username ) ) {
-                                       $this->cache[$username] = $this->getDefault();
-                               } else {
-                                       $this->doQuery( $username, $caller );
-                               }
-                       }
-
-               }
-
-               /* Undefined if there is a valid username which for some reason doesn't
-                * exist in the database.
-                */
-               return isset( $this->cache[$username] ) ? $this->cache[$username] : $this->getDefault();
-       }
-
-       /**
-        * Wrapper for doQuery that processes raw LinkBatch data.
-        *
-        * @param $data
-        * @param $caller
-        */
-       public function doLinkBatch( $data, $caller = '' ) {
-               $users = array();
-               foreach ( $data as $ns => $pagenames ) {
-                       if ( !MWNamespace::hasGenderDistinction( $ns ) ) continue;
-                       foreach ( array_keys( $pagenames ) as $username ) {
-                               if ( isset( $this->cache[$username] ) ) continue;
-                               $users[$username] = true;
-                       }
-               }
-
-               $this->doQuery( array_keys( $users ), $caller );
-       }
-
-       /**
-        * Preloads genders for given list of users.
-        * @param $users List|String: usernames
-        * @param $caller String: the calling method
-        */
-       public function doQuery( $users, $caller = '' ) {
-               $default = $this->getDefault();
-
-               foreach ( (array) $users as $index => $value ) {
-                       $name = strtr( $value, '_', ' ' );
-                       if ( isset( $this->cache[$name] ) ) {
-                               // Skip users whose gender setting we already know
-                               unset( $users[$index] );
-                       } else {
-                               $users[$index] = $name;
-                               // For existing users, this value will be overwritten by the correct value
-                               $this->cache[$name] = $default;
-                       }
-               }
-
-               if ( count( $users ) === 0 ) {
-                       return;
-               }
-
-               $dbr = wfGetDB( DB_SLAVE );
-               $table = array( 'user', 'user_properties' );
-               $fields = array( 'user_name', 'up_value' );
-               $conds = array( 'user_name' => $users );
-               $joins = array( 'user_properties' =>
-                       array( 'LEFT JOIN', array( 'user_id = up_user', 'up_property' => 'gender' ) ) );
-
-               $comment = __METHOD__;
-               if ( strval( $caller ) !== '' ) {
-                       $comment .= "/$caller";
-               }
-               $res = $dbr->select( $table, $fields, $conds, $comment, $joins, $joins );
-
-               foreach ( $res as $row ) {
-                       $this->cache[$row->user_name] = $row->up_value ? $row->up_value : $default;
-               }
-       }
-
-}
diff --git a/includes/cache/GenderCache.php b/includes/cache/GenderCache.php
new file mode 100644 (file)
index 0000000..342f8db
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * Caches user genders when needed to use correct namespace aliases.
+ * @author Niklas Laxström
+ * @since 1.18
+ */
+class GenderCache {
+       protected $cache = array();
+       protected $default;
+       protected $misses = 0;
+       protected $missLimit = 1000;
+
+       /**
+        * @return GenderCache
+        */
+       public static function singleton() {
+               static $that = null;
+               if ( $that === null ) {
+                       $that = new self();
+               }
+               return $that;
+       }
+
+       protected function __construct() {}
+
+       /**
+        * Returns the default gender option in this wiki.
+        * @return String
+        */
+       protected function getDefault() {
+               if ( $this->default === null ) {
+                       $this->default = User::getDefaultOption( 'gender' );
+               }
+               return $this->default;
+       }
+
+       /**
+        * Returns the gender for given username.
+        * @param $username String: username
+        * @param $caller String: the calling method
+        * @return String
+        */
+       public function getGenderOf( $username, $caller = '' ) {
+               global $wgUser;
+
+               $username = strtr( $username, '_', ' ' );
+               if ( !isset( $this->cache[$username] ) ) {
+
+                       if ( $this->misses >= $this->missLimit && $wgUser->getName() !== $username ) {
+                               if( $this->misses === $this->missLimit ) {
+                                       $this->misses++;
+                                       wfDebug( __METHOD__ . ": too many misses, returning default onwards\n" );
+                               }
+                               return $this->getDefault();
+
+                       } else {
+                               $this->misses++;
+                               if ( !User::isValidUserName( $username ) ) {
+                                       $this->cache[$username] = $this->getDefault();
+                               } else {
+                                       $this->doQuery( $username, $caller );
+                               }
+                       }
+
+               }
+
+               /* Undefined if there is a valid username which for some reason doesn't
+                * exist in the database.
+                */
+               return isset( $this->cache[$username] ) ? $this->cache[$username] : $this->getDefault();
+       }
+
+       /**
+        * Wrapper for doQuery that processes raw LinkBatch data.
+        *
+        * @param $data
+        * @param $caller
+        */
+       public function doLinkBatch( $data, $caller = '' ) {
+               $users = array();
+               foreach ( $data as $ns => $pagenames ) {
+                       if ( !MWNamespace::hasGenderDistinction( $ns ) ) continue;
+                       foreach ( array_keys( $pagenames ) as $username ) {
+                               if ( isset( $this->cache[$username] ) ) continue;
+                               $users[$username] = true;
+                       }
+               }
+
+               $this->doQuery( array_keys( $users ), $caller );
+       }
+
+       /**
+        * Preloads genders for given list of users.
+        * @param $users List|String: usernames
+        * @param $caller String: the calling method
+        */
+       public function doQuery( $users, $caller = '' ) {
+               $default = $this->getDefault();
+
+               foreach ( (array) $users as $index => $value ) {
+                       $name = strtr( $value, '_', ' ' );
+                       if ( isset( $this->cache[$name] ) ) {
+                               // Skip users whose gender setting we already know
+                               unset( $users[$index] );
+                       } else {
+                               $users[$index] = $name;
+                               // For existing users, this value will be overwritten by the correct value
+                               $this->cache[$name] = $default;
+                       }
+               }
+
+               if ( count( $users ) === 0 ) {
+                       return;
+               }
+
+               $dbr = wfGetDB( DB_SLAVE );
+               $table = array( 'user', 'user_properties' );
+               $fields = array( 'user_name', 'up_value' );
+               $conds = array( 'user_name' => $users );
+               $joins = array( 'user_properties' =>
+                       array( 'LEFT JOIN', array( 'user_id = up_user', 'up_property' => 'gender' ) ) );
+
+               $comment = __METHOD__;
+               if ( strval( $caller ) !== '' ) {
+                       $comment .= "/$caller";
+               }
+               $res = $dbr->select( $table, $fields, $conds, $comment, $joins, $joins );
+
+               foreach ( $res as $row ) {
+                       $this->cache[$row->user_name] = $row->up_value ? $row->up_value : $default;
+               }
+       }
+
+}