From b520bfb771c29daa421abc5be646e9dfbf7f678b Mon Sep 17 00:00:00 2001 From: Aryeh Gregor Date: Tue, 8 Dec 2009 19:32:17 +0000 Subject: [PATCH] Rename some extauth functions and fields Per Code Review at . One of the changes was a database field, and updaters might have to be written for pgsql and DB2. --- includes/ExternalUser.php | 14 +++++++------- includes/specials/SpecialUserlogin.php | 2 +- maintenance/archives/patch-eu_local_id.sql | 3 +++ maintenance/archives/patch-external_user.sql | 2 +- maintenance/ibm_db2/tables.sql | 8 ++++---- maintenance/postgres/tables.sql | 2 +- maintenance/tables.sql | 2 +- maintenance/updaters.inc | 14 ++++++++++++++ 8 files changed, 32 insertions(+), 15 deletions(-) create mode 100644 maintenance/archives/patch-eu_local_id.sql diff --git a/includes/ExternalUser.php b/includes/ExternalUser.php index 18a50f360d..c58519cea5 100644 --- a/includes/ExternalUser.php +++ b/includes/ExternalUser.php @@ -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 +} diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php index 6d1a2d9e23..d78cdea398 100644 --- a/includes/specials/SpecialUserlogin.php +++ b/includes/specials/SpecialUserlogin.php @@ -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 index 0000000000..bb59d06734 --- /dev/null +++ b/maintenance/archives/patch-eu_local_id.sql @@ -0,0 +1,3 @@ +ALTER TABLE /*_*/external_user +CHANGE COLUMN eu_wiki_id +eu_local_id int unsigned NOT NULL; diff --git a/maintenance/archives/patch-external_user.sql b/maintenance/archives/patch-external_user.sql index db8ffc6ca5..176b46d4ad 100644 --- a/maintenance/archives/patch-external_user.sql +++ b/maintenance/archives/patch-external_user.sql @@ -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 diff --git a/maintenance/ibm_db2/tables.sql b/maintenance/ibm_db2/tables.sql index c203104bfa..71c161c618 100644 --- a/maintenance/ibm_db2/tables.sql +++ b/maintenance/ibm_db2/tables.sql @@ -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); diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index 673060ab6a..31c1ea4e49 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -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 ); diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 37d6c9d3e8..e8b0e1a5e7 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -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 diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index fd3bebd194..5708e48104 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -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 -- 2.20.1