From 0a257c43f7d0149a7df4fde45dc9199c8b0b93da Mon Sep 17 00:00:00 2001 From: Chad Horohoe Date: Thu, 31 Jul 2008 02:28:49 +0000 Subject: [PATCH] --- includes/Article.php | 6 +++++- includes/EditPage.php | 15 +++++++++++++++ languages/messages/MessagesEn.php | 2 ++ maintenance/archives/patch-rd_fragment.sql | 4 ++++ maintenance/archives/patch-rd_interwiki.sql | 4 ++++ maintenance/tables.sql | 2 ++ maintenance/updaters.inc | 5 +++++ 7 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 maintenance/archives/patch-rd_fragment.sql create mode 100644 maintenance/archives/patch-rd_interwiki.sql diff --git a/includes/Article.php b/includes/Article.php index a01469d42b..58abadd185 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -103,7 +103,9 @@ class Article { $dbw->replace('redirect', array('rd_from'), array( 'rd_from' => $this->getID(), 'rd_namespace' => $retval->getNamespace(), - 'rd_title' => $retval->getDBKey() + 'rd_title' => $retval->getDBKey(), + 'rd_interwiki' => $retval->getInterwiki(), + 'rd_fragment' => $retval->getFragment(), ), __METHOD__); return $retval; } @@ -1182,6 +1184,8 @@ class Article { 'rd_namespace' => $redirectTitle->getNamespace(), 'rd_title' => $redirectTitle->getDBkey(), 'rd_from' => $this->getId(), + 'rd_interwiki' => $redirectTitle->getInterwiki(), + 'rd_fragment' => $redirectTitle->getFragment(), ); $dbw->replace( 'redirect', array( 'rd_from' ), $set, __METHOD__ ); diff --git a/includes/EditPage.php b/includes/EditPage.php index 585e156d64..83aa90b966 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -41,6 +41,7 @@ class EditPage { const AS_SPAM_ERROR = 232; const AS_IMAGE_REDIRECT_ANON = 233; const AS_IMAGE_REDIRECT_LOGGED = 234; + const AS_DOUBLE_REDIRECT = 235; var $mArticle; var $mTitle; @@ -58,6 +59,7 @@ class EditPage { var $kblength = false; var $missingComment = false; var $missingSummary = false; + var $doubleRedirect = false; var $allowBlankSummary = false; var $autoSumm = ''; var $hookError = ''; @@ -927,6 +929,11 @@ class EditPage { return self::AS_HOOK_ERROR; } + # Are we creating a double redirect? + if ( $redirectTitle = Title::newFromRedirect( $this->textbox1 ) && $redirectTitle->isRedirect() ) { + $this->doubleRedirect = $redirectTitle; + } + # Handle the user preference to force summaries here, but not for null edits if( $this->section != 'new' && !$this->allowBlankSummary && $wgUser->getOption( 'forceeditsummary') && 0 != strcmp($oldtext, $text) && @@ -1087,6 +1094,11 @@ class EditPage { $wgOut->wrapWikiMsg( '
$1
', 'missingcommenttext' ); } + if ( $this->doubleRedirect instanceof Title ) { + $wgOut->wrapWikiMsg( '
$1
', + array( 'creatingdoubleredirect', $this->mTitle->getText(), $this->doubleRedirect->getText() ) ); + } + if( $this->missingSummary && $this->section != 'new' ) { $wgOut->wrapWikiMsg( '
$1
', 'missingsummary' ); } @@ -1361,6 +1373,9 @@ END // mode will show an extra newline. A bit annoying. $encodedtext .= "\n"; } + if ( $this->doubleRedirect instanceof Title ) { + $wgOut->addHTML( Xml::hidden( 'wpIgnoreDoubleRedirect', true ) ); + } $wgOut->addHTML( << 'Please enter a comment below.', 'missingcommentheader' => "'''Reminder:''' You have not provided a subject/headline for this comment. If you click Save again, your edit will be saved without one.", +'creatingdoubleredirect' => "'''Caution:''' You are attempting to redirect this page to [[$1]], but it redirects to +[[$2]]. Redirects that redirect two or more times do not work.", 'summary-preview' => 'Summary preview', 'subject-preview' => 'Subject/headline preview', 'blockedtitle' => 'User is blocked', diff --git a/maintenance/archives/patch-rd_fragment.sql b/maintenance/archives/patch-rd_fragment.sql new file mode 100644 index 0000000000..ec22854b3e --- /dev/null +++ b/maintenance/archives/patch-rd_fragment.sql @@ -0,0 +1,4 @@ +-- Add fragment (section link) column to redirect table + +ALTER TABLE /*$wgDBprefix*/redirect + ADD rd_fragment varchar(255) binary DEFAULT NULL; \ No newline at end of file diff --git a/maintenance/archives/patch-rd_interwiki.sql b/maintenance/archives/patch-rd_interwiki.sql new file mode 100644 index 0000000000..a99d8b46ec --- /dev/null +++ b/maintenance/archives/patch-rd_interwiki.sql @@ -0,0 +1,4 @@ +-- Add interwiki column to redirect table + +ALTER TABLE /*$wgDBprefix*/redirect + ADD rd_interwiki varchar(32) default NULL; \ No newline at end of file diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 11ed7cb253..31b47cdbde 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -1157,6 +1157,8 @@ CREATE TABLE /*$wgDBprefix*/redirect ( -- goes by. rd_namespace int NOT NULL default '0', rd_title varchar(255) binary NOT NULL default '', + rd_interwiki varchar(32) default NULL, + rd_fragment varchar(255) binary DEFAULT NULL, PRIMARY KEY rd_from (rd_from), KEY rd_ns_title (rd_namespace,rd_title,rd_from) diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index b121f2f263..f1693a2901 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -143,6 +143,10 @@ $wgMysqlUpdates = array( array( 'maybe_do_profiling_memory_update' ), array( 'do_filearchive_indices_update' ), array( 'update_password_format' ), + + // 1.14 + array( 'add_field', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ), + array( 'add_field', 'redirect', 'rd_fragment', 'patch-rd_fragment.sql' ), ); @@ -1716,3 +1720,4 @@ function do_postgres_updates() { return; } + -- 2.20.1