diff --git a/README b/README
index 55f83619..a9306de8 100644
--- a/README
+++ b/README
@@ -28,7 +28,7 @@ http://www.mediawiki.org/wiki/Extension:Replace_Text
== Requirements ==
-This version of the Replace Text extension requires MediaWiki 1.16 or higher.
+This version of the Replace Text extension requires MediaWiki 1.18 or higher.
== Installation ==
diff --git a/ReplaceText.js b/ReplaceText.js
index ddfb218b..ddab7b2d 100644
--- a/ReplaceText.js
+++ b/ReplaceText.js
@@ -1,13 +1,16 @@
function invertSelections() {
- form = document.getElementById('choose_pages');
- num_elements = form.elements.length;
+ 'use strict';
+
+ var form = document.getElementById('choose_pages' ),
+ num_elements = form.elements.length,
+ i,
+ cur_element;
+
for (i = 0; i < num_elements; i++) {
cur_element = form.elements[i];
- if (cur_element.type == "checkbox" && cur_element.id != 'create-redirect' && cur_element.id != 'watch-pages') {
- if (form.elements[i].checked == true)
- form.elements[i].checked = false;
- else
- form.elements[i].checked = true;
+
+ if (cur_element.type === "checkbox" && cur_element.id !== 'create-redirect' && cur_element.id !== 'watch-pages') {
+ form.elements[i].checked = form.elements[i].checked !== true;
}
}
}
diff --git a/ReplaceText.php b/ReplaceText.php
index ddc23cd6..ab330a84 100644
--- a/ReplaceText.php
+++ b/ReplaceText.php
@@ -17,7 +17,7 @@
* replacement, since it is not easily reversible.
*/
-if ( !defined( 'MEDIAWIKI' ) ) die();
+if ( !defined( 'MEDIAWIKI' ) ) { die(); }
// credits
$wgExtensionCredits['specialpage'][] = array(
@@ -46,8 +46,8 @@ $wgAutoloadClasses['ReplaceText'] = $rtgIP . 'SpecialReplaceText.php';
$wgAutoloadClasses['ReplaceTextJob'] = $rtgIP . 'ReplaceTextJob.php';
// This function should really go into a "ReplaceText_body.php" file.
-function rtAddToAdminLinks( &$admin_links_tree ) {
- $general_section = $admin_links_tree->getSection( wfMsg( 'adminlinks_general' ) );
+function rtAddToAdminLinks( ALTree &$admin_links_tree ) {
+ $general_section = $admin_links_tree->getSection( wfMessage( 'adminlinks_general' )->text() );
$extensions_row = $general_section->getRow( 'extensions' );
if ( is_null( $extensions_row ) ) {
diff --git a/ReplaceTextJob.php b/ReplaceTextJob.php
index 484edb12..e05953da 100644
--- a/ReplaceTextJob.php
+++ b/ReplaceTextJob.php
@@ -8,7 +8,6 @@
* @author Ankit Garg
*/
class ReplaceTextJob extends Job {
-
function __construct( $title, $params = '', $id = 0 ) {
parent::__construct( 'replaceText', $title, $params, $id );
}
@@ -45,12 +44,8 @@ class ReplaceTextJob extends Job {
if ( class_exists( 'WatchAction' ) ) {
// Class was added in MW 1.19
WatchAction::doWatch( $new_title, $wgUser );
- } elseif ( class_exists( 'Action' ) ) {
- // Class was added in MW 1.18
- Action::factory( 'watch', new Article( $new_title, 0 ) )->execute();
} else {
- $article = new Article( $new_title, 0 );
- $article->doWatch();
+ Action::factory( 'watch', new WikiPage( $new_title ) )->execute();
}
}
$wgUser = $actual_user;
@@ -66,6 +61,7 @@ class ReplaceTextJob extends Job {
$article_text = $article->fetchContent();
$target_str = $this->params['target_str'];
$replacement_str = $this->params['replacement_str'];
+ // @todo FIXME eh?
$num_matches;
if ( $this->params['use_regex'] ) {
diff --git a/SpecialReplaceText.php b/SpecialReplaceText.php
index bf22e05d..96f3bccd 100644
--- a/SpecialReplaceText.php
+++ b/SpecialReplaceText.php
@@ -1,34 +1,30 @@
isAllowed( 'replacetext' ) ) {
- $wgOut->permissionRequired( 'replacetext' );
- return;
+ if ( !$this->getUser()->isAllowed( 'replacetext' ) ) {
+ throw new PermissionsError( 'replacetext' );
}
- $this->user = $wgUser;
$this->setHeaders();
- if ( method_exists( $wgOut, 'addModuleStyles' ) &&
- !is_null( $wgOut->getResourceLoader()->getModule( 'mediawiki.special' ) ) ) {
- $wgOut->addModuleStyles( 'mediawiki.special' );
+ $out = $this->getOutput();
+ if ( !is_null( $out->getResourceLoader()->getModule( 'mediawiki.special' ) ) ) {
+ $out->addModuleStyles( 'mediawiki.special' );
}
$this->doSpecialReplaceText();
}
- static function getSelectedNamespaces() {
- global $wgRequest;
+ function getSelectedNamespaces() {
$all_namespaces = SearchEngine::searchableNamespaces();
$selected_namespaces = array();
foreach ( $all_namespaces as $ns => $name ) {
- if ( $wgRequest->getCheck( 'ns' . $ns ) ) {
+ if ( $this->getRequest()->getCheck( 'ns' . $ns ) ) {
$selected_namespaces[] = $ns;
}
}
@@ -39,44 +35,45 @@ class ReplaceText extends SpecialPage {
* Helper function to display a hidden field for different versions
* of MediaWiki.
*/
- static function hiddenField( $name, $value ) {
- if ( class_exists( 'Html' ) ) {
- return "\t" . Html::hidden( $name, $value ) . "\n";
- } else {
- return "\t" . Xml::hidden( $name, $value ) . "\n";
- }
+ function hiddenField( $name, $value ) {
+ return "\t" . Html::hidden( $name, $value ) . "\n";
}
function doSpecialReplaceText() {
- global $wgOut, $wgRequest, $wgLang;
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
$linker = class_exists( 'DummyLinker' ) ? new DummyLinker : new Linker;
- $this->target = $wgRequest->getText( 'target' );
- $this->replacement = $wgRequest->getText( 'replacement' );
- $this->use_regex = $wgRequest->getBool( 'use_regex' );
- $this->category = $wgRequest->getText( 'category' );
- $this->prefix = $wgRequest->getText( 'prefix' );
- $this->edit_pages = $wgRequest->getBool( 'edit_pages' );
- $this->move_pages = $wgRequest->getBool( 'move_pages' );
- $this->selected_namespaces = self::getSelectedNamespaces();
+ $this->target = $request->getText( 'target' );
+ $this->replacement = $request->getText( 'replacement' );
+ $this->use_regex = $request->getBool( 'use_regex' );
+ $this->category = $request->getText( 'category' );
+ $this->prefix = $request->getText( 'prefix' );
+ $this->edit_pages = $request->getBool( 'edit_pages' );
+ $this->move_pages = $request->getBool( 'move_pages' );
+ $this->selected_namespaces = $this->getSelectedNamespaces();
- if ( $wgRequest->getCheck( 'continue' ) ) {
+ if ( $request->getCheck( 'continue' ) ) {
if ( $this->target === '' ) {
$this->showForm( 'replacetext_givetarget' );
return;
}
}
- if ( $wgRequest->getCheck( 'replace' ) ) {
+ if ( $request->getCheck( 'replace' ) ) {
$replacement_params = array();
- $replacement_params['user_id'] = $this->user->getId();
+ $replacement_params['user_id'] = $this->getUser()->getId();
$replacement_params['target_str'] = $this->target;
$replacement_params['replacement_str'] = $this->replacement;
$replacement_params['use_regex'] = $this->use_regex;
- $replacement_params['edit_summary'] = wfMsgForContent( 'replacetext_editsummary', $this->target, $this->replacement );
+ $replacement_params['edit_summary'] = $this->msg(
+ 'replacetext_editsummary',
+ $this->target, $this->replacement
+ )->inContentLanguage()->text();
$replacement_params['create_redirect'] = false;
$replacement_params['watch_page'] = false;
- foreach ( $wgRequest->getValues() as $key => $value ) {
+ foreach ( $request->getValues() as $key => $value ) {
if ( $key == 'create-redirect' && $value == '1' ) {
$replacement_params['create_redirect'] = true;
} elseif ( $key == 'watch-pages' && $value == '1' ) {
@@ -84,7 +81,7 @@ class ReplaceText extends SpecialPage {
}
}
$jobs = array();
- foreach ( $wgRequest->getValues() as $key => $value ) {
+ foreach ( $request->getValues() as $key => $value ) {
if ( $value == '1' && $key !== 'replace' && $key !== 'use_regex' ) {
if ( strpos( $key, 'move-' ) !== false ) {
$title = Title::newFromID( substr( $key, 5 ) );
@@ -98,13 +95,22 @@ class ReplaceText extends SpecialPage {
}
Job::batchInsert( $jobs );
- $count = $wgLang->formatNum( count( $jobs ) );
- $wgOut->addWikiMsg( 'replacetext_success', "
",
+ "
",
+ $count
+ );
// Link back
- $wgOut->addHTML( $linker->link( $this->getTitle(), wfMsgHtml( 'replacetext_return' ) ) );
+ $out->addHTML(
+ $linker->link( $this->getTitle(),
+ $this->msg( 'replacetext_return' )->escaped() )
+ );
+
return;
- } elseif ( $wgRequest->getCheck( 'target' ) ) { // very long elseif, look for "end elseif"
+ } elseif ( $request->getCheck( 'target' ) ) { // very long elseif, look for "end elseif"
// first, check that at least one namespace has been
// picked, and that either editing or moving pages
// has been selected
@@ -117,14 +123,20 @@ class ReplaceText extends SpecialPage {
return;
}
- $jobs = array();
$titles_for_edit = array();
$titles_for_move = array();
$unmoveable_titles = array();
// if user is replacing text within pages...
if ( $this->edit_pages ) {
- $res = $this->doSearchQuery( $this->target, $this->selected_namespaces, $this->category, $this->prefix , $this->use_regex );
+ $res = $this->doSearchQuery(
+ $this->target,
+ $this->selected_namespaces,
+ $this->category,
+ $this->prefix,
+ $this->use_regex
+ );
+
foreach ( $res as $row ) {
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
$context = $this->extractContext( $row->old_text, $this->target, $this->use_regex );
@@ -132,18 +144,28 @@ class ReplaceText extends SpecialPage {
}
}
if ( $this->move_pages ) {
- $res = $this->getMatchingTitles( $this->target, $this->selected_namespaces, $this->category, $this->prefix, $this->use_regex );
+ $res = $this->getMatchingTitles(
+ $this->target,
+ $this->selected_namespaces,
+ $this->category,
+ $this->prefix,
+ $this->use_regex
+ );
+
foreach ( $res as $row ) {
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
// see if this move can happen
$cur_page_name = str_replace( '_', ' ', $row->page_title );
+
if ( $this->use_regex ) {
$new_page_name = preg_replace( "/".$this->target."/U", $this->replacement, $cur_page_name );
} else {
$new_page_name = str_replace( $this->target, $this->replacement, $cur_page_name );
}
+
$new_title = Title::makeTitleSafe( $row->page_namespace, $new_page_name );
$err = $title->isValidMoveOperation( $new_title );
+
if ( $title->userCan( 'move' ) && !is_array( $err ) ) {
$titles_for_move[] = $title;
} else {
@@ -151,26 +173,31 @@ class ReplaceText extends SpecialPage {
}
}
}
+
// if no results were found, check to see if a bad
// category name was entered
if ( count( $titles_for_edit ) == 0 && count( $titles_for_move ) == 0 ) {
$bad_cat_name = false;
+
if ( ! empty( $this->category ) ) {
$category_title = Title::makeTitleSafe( NS_CATEGORY, $this->category );
if ( ! $category_title->exists() ) $bad_cat_name = true;
}
+
if ( $bad_cat_name ) {
$link = $linker->link( $category_title, htmlspecialchars( ucfirst( $this->category ) ) );
- $wgOut->addHTML( wfMsgHtml( 'replacetext_nosuchcategory', $link ) );
+ $out->addHTML(
+ $this->msg( 'replacetext_nosuchcategory' )->rawParams( $link )->escaped()
+ );
} else {
if ( $this->edit_pages )
- $wgOut->addWikiMsg( 'replacetext_noreplacement', "
" );
+
if ( $this->move_pages )
- $wgOut->addWikiMsg( 'replacetext_nomove', "
" );
}
// link back to starting form
- //FIXME: raw html message
- $wgOut->addHTML( '
' . $linker->link( $this->getTitle(), wfMsgHtml( 'replacetext_return' ) ) . '
' ); + $out->addHTML( '' . $linker->link( $this->getTitle(), $this->msg( 'replacetext_return' )->escaped() ) . '
' ); } else { // Show a warning message if the replacement // string is either blank or found elsewhere on @@ -179,29 +206,25 @@ class ReplaceText extends SpecialPage { $warning_msg = null; if ( $this->replacement === '' ) { - $warning_msg = wfMsg('replacetext_blankwarning'); + $warning_msg = $this->msg('replacetext_blankwarning')->escaped(); } elseif ( count( $titles_for_edit ) > 0 ) { $res = $this->doSearchQuery( $this->replacement, $this->selected_namespaces, $this->category, $this->prefix, $this->use_regex ); $count = $res->numRows(); if ( $count > 0 ) { - $warning_msg = wfMsgExt( 'replacetext_warning', 'parsemag', - $wgLang->formatNum( $count ), - "{$this->replacement}
" )->text();
}
} elseif ( count( $titles_for_move ) > 0 ) {
$res = $this->getMatchingTitles( $this->replacement, $this->selected_namespaces, $this->category, $this->prefix, $this->use_regex );
$count = $res->numRows();
if ( $count > 0 ) {
- $warning_msg = wfMsgExt( 'replacetext_warning', 'parsemag',
- $wgLang->formatNum( $count ),
- $this->replacement
- );
+ $warning_msg = $this->msg( 'replacetext_warning' )->numParams( $count )
+ ->params( $this->replacement )->text();
}
}
if ( ! is_null( $warning_msg ) ) {
- $wgOut->addWikiText("' ); - $wgOut->addWikiMsg( 'replacetext_originaltext' ); - $wgOut->addHTML( ' | ' );
+
+ $out->addHTML( '
| ||||
' ); + $out->addWikiMsg( 'replacetext_replacementtext' ); + $out->addHTML( ' | ' ); + $out->addHTML( Xml::textarea( 'replacement', $this->replacement, 50, 2, array( 'style' => 'width: auto;' ) ) ); + $out->addHTML( ' |
\n" .
- Xml::checkLabel( wfMsg( 'replacetext_editpages' ), 'edit_pages', 'edit_pages', true ) . '
' .
- Xml::checkLabel( wfMsg( 'replacetext_movepages' ), 'move_pages', 'move_pages' ) .
+ Xml::checkLabel( $this->msg( 'replacetext_editpages' )->text(), 'edit_pages', 'edit_pages', true ) . '
' .
+ Xml::checkLabel( $this->msg( 'replacetext_movepages' )->text(), 'move_pages', 'move_pages' ) .
"
{$this->target}
", "{$this->replacement}
",
$wgLang->formatNum( count( $titles_for_edit ) ) );
foreach ( $titles_for_edit as $title_and_context ) {
+ /**
+ * @var $title Title
+ */
list( $title, $context ) = $title_and_context;
- $wgOut->addHTML(
+ $out->addHTML(
Xml::check( $title->getArticleID(), true ) .
$linker->link( $title ) . " - $context