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.
$dbr = wfGetDB( DB_SLAVE );
$id = $dbr->selectField( 'external_user', 'eu_external_id',
$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;
}
if ( $id === false ) {
return false;
}
* @param $pref string
* @return mixed String or false
*/
* @param $pref string
* @return mixed String or false
*/
- public static function prefMessage( $pref ) {
+ public static function getPrefMessage( $pref ) {
*
* @param $id int user_id
*/
*
* @param $id int user_id
*/
- public final function link( $id ) {
+ public final function linkToLocal( $id ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->replace( 'external_user',
$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__ );
}
'eu_external_id' => $this->getId() ),
__METHOD__ );
}
array( 'eu_external_id' => $this->getId() )
);
return $row
array( 'eu_external_id' => $this->getId() )
);
return $row
- ? User::newFromId( $row->eu_wiki_id )
+ ? User::newFromId( $row->eu_local_id )
-}
\ No newline at end of file
$wgAuth->initUser( $u, $autocreate );
if ( $this->mExtUser ) {
$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 );
$email = $this->mExtUser->getPref( 'emailaddress' );
if ( $email && !$this->mEmail ) {
$u->setEmail( $email );
--- /dev/null
+ALTER TABLE /*_*/external_user
+CHANGE COLUMN eu_wiki_id
+eu_local_id int unsigned NOT NULL;
CREATE TABLE /*_*/external_user (
-- Foreign key to user_id
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
-- Some opaque identifier provided by the external database
eu_external_id varchar(255) binary NOT NULL
--
CREATE TABLE external_user (
-- Foreign key to user_id
--
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)
-- 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);
INCLUDE (eu_external_id);
CREATE INDEX externallinks_index ON externallinks (el_index);
CREATE TABLE external_user (
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,
--
CREATE TABLE /*_*/external_user (
-- Foreign key to user_id
--
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
-- Some opaque identifier provided by the external database
eu_external_id varchar(255) binary NOT NULL
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' ),
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' ),
wfOut( "Done populating log_search table.\n" );
}
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
/***********************************************************************
* Start PG stuff
* TODO: merge with above