Rename some extauth functions and fields
authorAryeh Gregor <simetrical@users.mediawiki.org>
Tue, 8 Dec 2009 19:32:17 +0000 (19:32 +0000)
committerAryeh Gregor <simetrical@users.mediawiki.org>
Tue, 8 Dec 2009 19:32:17 +0000 (19:32 +0000)
Per Code Review at
<http://www.mediawiki.org/wiki/Special:Code/MediaWiki/53497#c4633>.  One
of the changes was a database field, and updaters might have to be
written for pgsql and DB2.

includes/ExternalUser.php
includes/specials/SpecialUserlogin.php
maintenance/archives/patch-eu_local_id.sql [new file with mode: 0644]
maintenance/archives/patch-external_user.sql
maintenance/ibm_db2/tables.sql
maintenance/postgres/tables.sql
maintenance/tables.sql
maintenance/updaters.inc

index 18a50f3..c58519c 100644 (file)
@@ -105,7 +105,7 @@ abstract class ExternalUser {
 
                $dbr = wfGetDB( DB_SLAVE );
                $id = $dbr->selectField( 'external_user', 'eu_external_id',
-                       array( 'eu_wiki_id' => $user->getId() ), __METHOD__ );
+                       array( 'eu_local_id' => $user->getId() ), __METHOD__ );
                if ( $id === false ) {
                        return false;
                }
@@ -242,7 +242,7 @@ abstract class ExternalUser {
         * @param $pref string
         * @return mixed String or false
         */
-       public static function prefMessage( $pref ) {
+       public static function getPrefMessage( $pref ) {
                return false;
        }
 
@@ -277,11 +277,11 @@ abstract class ExternalUser {
         *
         * @param $id int user_id
         */
-       public final function link( $id ) {
+       public final function linkToLocal( $id ) {
                $dbw = wfGetDB( DB_MASTER );
                $dbw->replace( 'external_user',
-                       array( 'eu_wiki_id', 'eu_external_id' ),
-                       array( 'eu_wiki_id' => $id,
+                       array( 'eu_local_id', 'eu_external_id' ),
+                       array( 'eu_local_id' => $id,
                                   'eu_external_id' => $this->getId() ),
                        __METHOD__ );
        }
@@ -299,8 +299,8 @@ abstract class ExternalUser {
                        array( 'eu_external_id' => $this->getId() )
                );
                return $row
-                       ? User::newFromId( $row->eu_wiki_id )
+                       ? User::newFromId( $row->eu_local_id )
                        : null;
        }
        
-}
\ No newline at end of file
+}
index 6d1a2d9..d78cdea 100644 (file)
@@ -371,7 +371,7 @@ class LoginForm {
                $wgAuth->initUser( $u, $autocreate );
 
                if ( $this->mExtUser ) {
-                       $this->mExtUser->link( $u->getId() );
+                       $this->mExtUser->linkToLocal( $u->getId() );
                        $email = $this->mExtUser->getPref( 'emailaddress' );
                        if ( $email && !$this->mEmail ) {
                                $u->setEmail( $email );
diff --git a/maintenance/archives/patch-eu_local_id.sql b/maintenance/archives/patch-eu_local_id.sql
new file mode 100644 (file)
index 0000000..bb59d06
--- /dev/null
@@ -0,0 +1,3 @@
+ALTER TABLE /*_*/external_user
+CHANGE COLUMN eu_wiki_id
+eu_local_id int unsigned NOT NULL;
index db8ffc6..176b46d 100644 (file)
@@ -1,6 +1,6 @@
 CREATE TABLE /*_*/external_user (
   -- Foreign key to user_id
-  eu_wiki_id int unsigned NOT NULL PRIMARY KEY,
+  eu_local_id int unsigned NOT NULL PRIMARY KEY,
 
   -- Some opaque identifier provided by the external database
   eu_external_id varchar(255) binary NOT NULL
index c203104..71c161c 100644 (file)
@@ -248,16 +248,16 @@ CREATE INDEX externallinks_index   ON externallinks (el_index);
 --
 CREATE TABLE external_user (
   -- Foreign key to user_id
-  eu_wiki_id                   BIGINT NOT NULL PRIMARY KEY,
+  eu_local_id                  BIGINT NOT NULL PRIMARY KEY,
 
   -- Some opaque identifier provided by the external database
   eu_external_id               VARCHAR(255) NOT NULL
 );
 CREATE UNIQUE INDEX eu_external_id_idx
        ON external_user (eu_external_id)
-       INCLUDE (eu_wiki_id);
-CREATE UNIQUE INDEX eu_wiki_id_idx
-       ON external_user (eu_wiki_id)
+       INCLUDE (eu_local_id);
+CREATE UNIQUE INDEX eu_local_id_idx
+       ON external_user (eu_local_id)
        INCLUDE (eu_external_id);
 
 
index 673060a..31c1ea4 100644 (file)
@@ -201,7 +201,7 @@ CREATE INDEX externallinks_from_to ON externallinks (el_from,el_to);
 CREATE INDEX externallinks_index   ON externallinks (el_index);
 
 CREATE TABLE external_user (
-  eu_wiki_id     INTEGER  NOT NULL  PRIMARY KEY,
+  eu_local_id     INTEGER  NOT NULL  PRIMARY KEY,
   eu_external_id TEXT
 );
 
index 37d6c9d..e8b0e1a 100644 (file)
@@ -580,7 +580,7 @@ CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
 --
 CREATE TABLE /*_*/external_user (
   -- Foreign key to user_id
-  eu_wiki_id int unsigned NOT NULL PRIMARY KEY,
+  eu_local_id int unsigned NOT NULL PRIMARY KEY,
 
   -- Some opaque identifier provided by the external database
   eu_external_id varchar(255) binary NOT NULL
index fd3bebd..5708e48 100644 (file)
@@ -165,6 +165,9 @@ $wgUpdates = array(
                array( 'add_index', 'log_search',    'ls_field_val',     'patch-log_search-rename-index.sql' ),
                array( 'add_index', 'change_tag',    'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
                array( 'add_field', 'redirect',      'rd_interwiki',     'patch-rd_interwiki.sql' ),
+               // A field changed name mid-release cycle, so fix it for anyone using
+               // trunk
+               array( 'rename_eu_wiki_id' ),
        ),
 
        'sqlite' => array(
@@ -1328,6 +1331,17 @@ function do_log_search_population() {
        wfOut( "Done populating log_search table.\n" );
 }
 
+function rename_eu_wiki_id() {
+       global $wgDatabase;
+       wfOut( "Renaming eu_wiki_id -> eu_local_id... " );
+       if ( $wgDatabase->fieldExists( 'external_user', 'eu_local_id' ) ) {
+               wfOut( "already done.\n" );
+               return;
+       }
+       $wgDatabase->sourceFile( archive( 'patch-eu_local_id.sql' ) );
+       wfOut( "ok\n" );
+}
+
 /***********************************************************************
  * Start PG stuff
  * TODO: merge with above