http://www.mediawiki.org/wiki/Special:Code/MediaWiki/97460

Revision: 97460
Author:   nikerabbit
Date:     2011-09-19 09:04:39 +0000 (Mon, 19 Sep 2011)
Log Message:
-----------
Partial solution for bug 30972 to avoid query flood.
There is still some, because the Parser doesn't use LinkBatch but does it own 
queries in LinkHolderArray - seriously WTF?

Modified Paths:
--------------
    trunk/phase3/includes/GenderCache.php

Modified: trunk/phase3/includes/GenderCache.php
===================================================================
--- trunk/phase3/includes/GenderCache.php       2011-09-19 08:21:22 UTC (rev 
97459)
+++ trunk/phase3/includes/GenderCache.php       2011-09-19 09:04:39 UTC (rev 
97460)
@@ -96,14 +96,24 @@
         * @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 false;
                }
 
-               foreach ( (array) $users as $index => $value ) {
-                       $users[$index] = strtr( $value, '_', ' ' );
-               }
-
                $dbr = wfGetDB( DB_SLAVE );
                $table = array( 'user', 'user_properties' );
                $fields = array( 'user_name', 'up_value' );
@@ -117,7 +127,6 @@
                }
                $res = $dbr->select( $table, $fields, $conds, $comment, $joins, 
$joins );
 
-               $default = $this->getDefault();
                foreach ( $res as $row ) {
                        $this->cache[$row->user_name] = $row->up_value ? 
$row->up_value : $default;
                }


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to