Fix broken r72956 with another approach
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Tue, 14 Sep 2010 09:23:43 +0000 (09:23 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Tue, 14 Sep 2010 09:23:43 +0000 (09:23 +0000)
includes/ResourceLoaderModule.php

index 990a814..e7fc1cf 100644 (file)
@@ -740,28 +740,26 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
                if ( isset( $this->modifiedTime[$hash] ) ) {
                        return $this->modifiedTime[$hash];
                }
+
                $titles = array();
                foreach ( $this->getPages( $context ) as $page => $options ) {
-                       $titles[] = Title::makeTitle( $options['ns'], $page );
+                       $titles[$options['ns']][$page] = true;
                }
-               // Do batch existence check
-               // TODO: This would work better if page_touched were loaded by this as well
-               $lb = new LinkBatch( $titles );
-               $lb->setCaller( __METHOD__ );
-               $lb->execute();
+
                $modifiedTime = 1; // wfTimestamp() interprets 0 as "now"
 
-               $ids = array();
-               foreach ( $titles as $title ) {
-                       if ( $title->exists() ) {
-                               $ids[] = $title->getArticleId();
+               if ( $titles ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $latest = $dbr->selectField( 'page', 'MAX(page_touched)',
+                               $dbr->makeWhereFrom2d( $titles, 'page_namespace', 'page_title' ),
+                               __METHOD__ );
+
+                       if ( $latest ) {
+                               $modifiedTime = wfTimestamp( TS_UNIX, $modifiedTime );
                        }
                }
 
-               $dbr = wfGetDB( DB_SLAVE );
-               $modifiedTime = $dbr->selectField( 'page', 'MAX(page_touched)', array( 'page_id' => $ids ), __METHOD__ );
-
-               return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $modifiedTime );
+               return $this->modifiedTime[$hash] = $modifiedTime;
        }
 }