/**
* Reassign edits from a user or IP address to another user
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @ingroup Maintenance
* @author Rob Church <robchur@gmail.com>
* @licence GNU General Public Licence 2.0 or later
*/
-require_once( "Maintenance.php" );
+require_once( dirname(__FILE__) . '/Maintenance.php' );
class ReassignEdits extends Maintenance {
public function __construct() {
parent::__construct();
$this->mDescription = "Reassign edits from one user to another";
- $this->addParam( "force", "Reassign even if the target user doesn't exist" );
- $this->addParam( "norc", "Don't update the recent changes table" );
- $this->addParam( "report", "Print out details of what would be changed, but don't update it" );
- $this->addArgs( array( 'from', 'to' ) );
+ $this->addOption( "force", "Reassign even if the target user doesn't exist" );
+ $this->addOption( "norc", "Don't update the recent changes table" );
+ $this->addOption( "report", "Print out details of what would be changed, but don't update it" );
+ $this->addArg( 'from', 'Old user to take edits from' );
+ $this->addArg( 'to', 'New user to give edits to' );
}
public function execute() {
if( $this->hasArg(0) && $this->hasArg(1) ) {
# Set up the users involved
- $from =& $this->initialiseUser( $this->getArg(0) );
- $to =& $this->initialiseUser( $this->getArg(1) );
+ $from = $this->initialiseUser( $this->getArg(0) );
+ $to = $this->initialiseUser( $this->getArg(1) );
# If the target doesn't exist, and --force is not set, stop here
if( $to->getId() || $this->hasOption('force') ) {
# Reassign the edits
$report = $this->hasOption('report');
- $count = $this->reassignEdits( $from, $to, !$this->hasOption('norc'), $report );
+ $count = $this->doReassignEdits( $from, $to, !$this->hasOption('norc'), $report );
# If reporting, and there were items, advise the user to run without --report
if( $report )
$this->output( "Run the script again without --report to update.\n" );
} else {
$ton = $to->getName();
- $this->error( "User '{$ton}' not found.\n" );
+ $this->error( "User '{$ton}' not found." );
}
}
}
* @param $report Don't change things; just echo numbers
* @return integer Number of entries changed, or that would be changed
*/
- private function reassignEdits( &$from, &$to, $rc = false, $report = false ) {
+ private function doReassignEdits( &$from, &$to, $rc = false, $report = false ) {
$dbw = wfGetDB( DB_MASTER );
- $dbw->immediateBegin();
+ $dbw->begin();
# Count things
$this->output( "Checking current edits..." );
if( $total ) {
# Reassign edits
$this->output( "\nReassigning current edits..." );
- $res = $dbw->update( 'revision', userSpecification( $to, 'rev_user', 'rev_user_text' ), $this->userConditions( $from, 'rev_user', 'rev_user_text' ), __METHOD__ );
+ $res = $dbw->update( 'revision', $this->userSpecification( $to, 'rev_user', 'rev_user_text' ), $this->userConditions( $from, 'rev_user', 'rev_user_text' ), __METHOD__ );
$this->output( "done.\nReassigning deleted edits..." );
- $res = $dbw->update( 'archive', userSpecification( $to, 'ar_user', 'ar_user_text' ), $this->userConditions( $from, 'ar_user', 'ar_user_text' ), __METHOD__ );
+ $res = $dbw->update( 'archive', $this->userSpecification( $to, 'ar_user', 'ar_user_text' ), $this->userConditions( $from, 'ar_user', 'ar_user_text' ), __METHOD__ );
$this->output( "done.\n" );
# Update recent changes if required
if( $rc ) {
}
}
- $dbw->immediateCommit();
+ $dbw->commit();
return (int)$total;
}