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

Revision: 76200
Author:   peter17
Date:     2010-11-06 17:35:15 +0000 (Sat, 06 Nov 2010)
Log Message:
-----------
Adding and using globalinterwiki and globalnamespaces tables; that should do it 
for Squid update

Modified Paths:
--------------
    branches/iwtransclusion/phase3/includes/BacklinkCache.php
    branches/iwtransclusion/phase3/includes/GlobalUsageQuery.php
    branches/iwtransclusion/phase3/includes/HTMLCacheUpdate.php
    branches/iwtransclusion/phase3/includes/LinksUpdate.php
    branches/iwtransclusion/phase3/includes/Title.php
    branches/iwtransclusion/phase3/includes/specials/SpecialGlobalFileUsage.php
    
branches/iwtransclusion/phase3/maintenance/archives/patch-globaltemplatelinks.sql

Added Paths:
-----------
    
branches/iwtransclusion/phase3/maintenance/archives/patch-globalinterwiki.sql
    
branches/iwtransclusion/phase3/maintenance/archives/patch-globalnamespaces.sql

Property Changed:
----------------
    branches/iwtransclusion/phase3/


Property changes on: branches/iwtransclusion/phase3
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/REL1_15/phase3:51646
/branches/new-installer/phase3:43664-66004
/branches/sqlite:58211-58321
/trunk/phase3:67506-73220,73222-74205
   + /branches/REL1_15/phase3:51646
/branches/new-installer/phase3:43664-66004
/branches/sqlite:58211-58321
/trunk/phase3:67506-73220,73222-74205,74211-74805

Modified: branches/iwtransclusion/phase3/includes/BacklinkCache.php
===================================================================
--- branches/iwtransclusion/phase3/includes/BacklinkCache.php   2010-11-06 
16:57:21 UTC (rev 76199)
+++ branches/iwtransclusion/phase3/includes/BacklinkCache.php   2010-11-06 
17:35:15 UTC (rev 76200)
@@ -116,10 +116,12 @@
                
                $dbr = $dbr = wfGetDB( DB_SLAVE, array(), $wgGlobalDatabase );
                $res = $dbr->select(
-                       array( 'globaltemplatelinks' ),
-                       array( 'gtl_from_wiki', 'gtl_from_page' ),
+                       array( 'globaltemplatelinks', 'globalinterwiki' ),
+                       array( 'gtl_from_wiki', 'gtl_from_page', 
'gtl_from_title', 'giw_prefix' ),
                        array( 'gtl_to_prefix' => $wgLocalInterwiki, 
'gtl_to_title' => $this->title->getDBkey( ) ),
-                       __METHOD__
+                       __METHOD__,
+                       null,
+                       array( 'gtl_from_wiki = giw_wikiid' )
                );
                return $res;
        }

Modified: branches/iwtransclusion/phase3/includes/GlobalUsageQuery.php
===================================================================
--- branches/iwtransclusion/phase3/includes/GlobalUsageQuery.php        
2010-11-06 16:57:21 UTC (rev 76199)
+++ branches/iwtransclusion/phase3/includes/GlobalUsageQuery.php        
2010-11-06 17:35:15 UTC (rev 76200)
@@ -156,8 +156,12 @@
                }
 
                /* Perform select (Duh.) */
-               $res = $this->db->select( 'globaltemplatelinks',
+               $res = $this->db->select(
                                array(
+                                       'globaltemplatelinks',
+                                       'globalnamespaces'
+                               ),
+                               array(
                                        'gtl_to_title',
                                        'gtl_from_wiki',
                                        'gtl_from_page',
@@ -170,6 +174,9 @@
                                        'ORDER BY' => "gtl_to_title $order, 
gtl_from_wiki $order, gtl_from_page $order",
                                        // Select an extra row to check whether 
we have more rows available
                                        'LIMIT' => $this->limit + 1,
+                               ),
+                               array(
+                                       'gtl_from_namespace = gn_namespace'
                                )
                );
 
@@ -207,7 +214,7 @@
                        
$this->result[$row->gtl_to_title][$row->gtl_from_wiki][] = array(
                                'template'      => $row->gtl_to_title,
                                'id' => $row->gtl_from_page,
-                               'namespace' => $row->gtl_from_namespace,
+                               'namespace' => $row->gn_namespacetext,
                                'title' => $row->gtl_from_title,
                                'wiki' => $row->gtl_from_wiki,
                        );

Modified: branches/iwtransclusion/phase3/includes/HTMLCacheUpdate.php
===================================================================
--- branches/iwtransclusion/phase3/includes/HTMLCacheUpdate.php 2010-11-06 
16:57:21 UTC (rev 76199)
+++ branches/iwtransclusion/phase3/includes/HTMLCacheUpdate.php 2010-11-06 
17:35:15 UTC (rev 76200)
@@ -219,12 +219,18 @@
                global $wgUseFileCache, $wgUseSquid, $wgLocalInterwiki;
                
                $pagesByWiki = array();
+               $titleArray = array();
+               
+               # Sort by WikiID in $pagesByWiki
+               # Create the distant titles for Squid in $titleArray
                foreach ( $distantPageArray as $row ) {
                        $wikiid = $row->gtl_from_wiki;
                        if( !isset( $pagesByWiki[$wikiid] ) ) {
                                $pagesByWiki[$wikiid] = array();
                        }
                        $pagesByWiki[$wikiid][] = $row->gtl_from_page;
+                       
+                       $titleArray[] = Title::makeTitle( 
$row->gtl_from_namespace, $row->gtl_from_title, '', $row->gil_interwiki );
                }
                
                foreach ( $pagesByWiki as $wikiid => $pages ) {
@@ -239,6 +245,12 @@
                                );
                        }
                }
+               
+               # Update squid
+               if ( $wgUseSquid ) {
+                       $u = SquidUpdate::newFromTitles( $titleArray );
+                       $u->doUpdate();
+               }
        }
 }
 

Modified: branches/iwtransclusion/phase3/includes/LinksUpdate.php
===================================================================
--- branches/iwtransclusion/phase3/includes/LinksUpdate.php     2010-11-06 
16:57:21 UTC (rev 76199)
+++ branches/iwtransclusion/phase3/includes/LinksUpdate.php     2010-11-06 
17:35:15 UTC (rev 76200)
@@ -379,7 +379,9 @@
                                $dbw->delete( $table, $where, __METHOD__ );
                        }
                        if ( count( $insertions ) ) {
-                               $dbw->insert( $table, $insertions, __METHOD__, 
'IGNORE' );
+                               $dbw->insert( 'globaltemplatelinks', 
$insertions['globaltemplatelinks'], __METHOD__, 'IGNORE' );
+                               $dbw->insert( 'globalnamespaces', 
$insertions['globalnamespaces'], __METHOD__, 'IGNORE' );
+                               $dbw->insert( 'globalinterwiki', 
$insertions['globalinterwiki'], __METHOD__, 'IGNORE' );
                        }
                }
        }
@@ -433,16 +435,27 @@
                foreach( $this->mDistantTemplates as $prefix => $templatesToNS 
) {
                        foreach( $templatesToNS as $ns => $dbkeys ) {
                                $diffs = isset( $existing[$prefix] ) && isset( 
$existing[$prefix][$ns] ) ? array_diff_key( $dbkeys, $existing[$prefix][$ns] ) 
: $dbkeys;
+                               $interwiki = Interwiki::fetch( $prefix );
+                               $wikiid = $interwiki->getWikiID( );
                                foreach ( $diffs as $dbk => $id ) {
-                                       $arr[] = array(
+                                       $arr['globaltemplatelinks'][] = array(
                                                'gtl_from_wiki'      => 
wfWikiID( ),
                                                'gtl_from_page'      => 
$this->mId,
-                                               'gtl_from_namespace' => 
$this->mTitle->getNsText(),
+                                               'gtl_from_namespace' => 
$this->mTitle->getNamespace(),
                                                'gtl_from_title'     => 
$this->mTitle->getText(),
                                                'gtl_to_prefix'      => $prefix,
                                                'gtl_to_namespace'   => $ns,
                                                'gtl_to_title'       => $dbk
                                        );
+                                       $arr['globalinterwiki'][] = array(
+                                               'giw_wikiid'             => 
$wikiid,
+                                               'giw_prefix'             => 
$prefix
+                                       );
+                                       $arr['globalnamespaces'][] = array(
+                                               'gn_wiki'                       
 => wfWikiID( ),
+                                               'gn_namespace'           => 
$this->mTitle->getNamespace(),
+                                               'gn_namespacetext'       => 
$this->mTitle->getNsText(),
+                                       );
                                }
                        }
                }

Modified: branches/iwtransclusion/phase3/includes/Title.php
===================================================================
--- branches/iwtransclusion/phase3/includes/Title.php   2010-11-06 16:57:21 UTC 
(rev 76199)
+++ branches/iwtransclusion/phase3/includes/Title.php   2010-11-06 17:35:15 UTC 
(rev 76200)
@@ -3123,7 +3123,7 @@
                if ( $wgEnableInterwikiTemplatesTracking && $wgGlobalDatabase ) 
{
                        $dbw2 = wfGetDB( DB_MASTER, array(), $wgGlobalDatabase 
);
                        $dbw2->update( 'globaltemplatelinks',
-                                               array(  'gtl_from_namespace' => 
$nt->getNsText(),
+                                               array(  'gtl_from_namespace' => 
$nt->getNamespace(),
                                                                
'gtl_from_title' => $nt->getText() ),
                                                array ( 'gtl_from_page' => 
$pageid ),
                                                __METHOD__ );

Modified: 
branches/iwtransclusion/phase3/includes/specials/SpecialGlobalFileUsage.php
===================================================================
--- branches/iwtransclusion/phase3/includes/specials/SpecialGlobalFileUsage.php 
2010-11-06 16:57:21 UTC (rev 76199)
+++ branches/iwtransclusion/phase3/includes/specials/SpecialGlobalFileUsage.php 
2010-11-06 17:35:15 UTC (rev 76200)
@@ -6,7 +6,7 @@
 
 class SpecialGlobalFileUsage extends SpecialPage {
        public function __construct() {
-               parent::__construct( 'GlobalFileUsage', 'globalfileusage' );
+               parent::__construct( 'GlobalFileUsage' );
        }
 
        /**

Added: 
branches/iwtransclusion/phase3/maintenance/archives/patch-globalinterwiki.sql
===================================================================
--- 
branches/iwtransclusion/phase3/maintenance/archives/patch-globalinterwiki.sql   
                            (rev 0)
+++ 
branches/iwtransclusion/phase3/maintenance/archives/patch-globalinterwiki.sql   
    2010-11-06 17:35:15 UTC (rev 76200)
@@ -0,0 +1,10 @@
+-- Table associating distant wiki IDs with their interwiki prefixes.
+CREATE TABLE /*_*/globalinterwiki (
+  -- The wiki ID of the wiki
+  giw_wikiid varchar(64) NOT NULL,
+
+  -- The interwiki prefix of that wiki
+  giw_prefix varchar(32) NOT NULL
+
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/giw_index ON /*_*/globalinterwiki (giw_wikiid, 
giw_prefix);

Added: 
branches/iwtransclusion/phase3/maintenance/archives/patch-globalnamespaces.sql
===================================================================
--- 
branches/iwtransclusion/phase3/maintenance/archives/patch-globalnamespaces.sql  
                            (rev 0)
+++ 
branches/iwtransclusion/phase3/maintenance/archives/patch-globalnamespaces.sql  
    2010-11-06 17:35:15 UTC (rev 76200)
@@ -0,0 +1,14 @@
+-- Table listing distant wiki namespace texts.
+CREATE TABLE /*_*/globalnamespaces (
+  -- The wiki ID of the remote wiki
+  gn_wiki varchar(64) NOT NULL,
+
+  -- The namespace ID of the transcluded page on that wiki
+  gn_namespace int NOT NULL,
+
+  -- The namespace text of transcluded page
+  -- Needed for display purposes, since the local namespace ID doesn't 
necessarily match a distant one
+  gn_namespacetext varchar(255) NOT NULL
+
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/gn_index ON /*_*/globalnamespaces (gn_wiki, 
gn_namespace, gn_namespacetext);

Modified: 
branches/iwtransclusion/phase3/maintenance/archives/patch-globaltemplatelinks.sql
===================================================================
--- 
branches/iwtransclusion/phase3/maintenance/archives/patch-globaltemplatelinks.sql
   2010-11-06 16:57:21 UTC (rev 76199)
+++ 
branches/iwtransclusion/phase3/maintenance/archives/patch-globaltemplatelinks.sql
   2010-11-06 17:35:15 UTC (rev 76200)
@@ -9,9 +9,10 @@
   -- The page ID of the calling page on the remote wiki
   gtl_from_page int unsigned NOT NULL,
 
-  -- The namespace name of the calling page on the remote wiki
+  -- The namespace of the calling page on the remote wiki
   -- Needed for display purposes, since the foreign namespace ID doesn't 
necessarily match a local one
-  gtl_from_namespace varchar(255) NOT NULL,
+  -- The link between the namespace and the namespace name is made by the 
globalnamespaces table 
+  gtl_from_namespace int NOT NULL,
 
   -- The title of the calling page on the remote wiki
   -- Needed for display purposes


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to