From: Chad Horohoe Date: Thu, 31 Jul 2008 02:28:49 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 1.31.0-rc.0~46256 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=0a257c43f7d0149a7df4fde45dc9199c8b0b93da;p=lhc%2Fweb%2Fwiklou.git --- 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; } +