1<?php 2/** 3 * Undelete a page by fetching it from the archive table 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * http://www.gnu.org/copyleft/gpl.html 19 * 20 * @file 21 * @ingroup Maintenance 22 */ 23 24require_once __DIR__ . '/Maintenance.php'; 25 26class Undelete extends Maintenance { 27 public function __construct() { 28 parent::__construct(); 29 $this->addDescription( 'Undelete a page' ); 30 $this->addOption( 'user', 'The user to perform the undeletion', false, true, 'u' ); 31 $this->addOption( 'reason', 'The reason to undelete', false, true, 'r' ); 32 $this->addArg( 'pagename', 'Page to undelete' ); 33 } 34 35 public function execute() { 36 $username = $this->getOption( 'user', false ); 37 $reason = $this->getOption( 'reason', '' ); 38 $pageName = $this->getArg( 0 ); 39 40 $title = Title::newFromText( $pageName ); 41 if ( !$title ) { 42 $this->fatalError( "Invalid title" ); 43 } 44 if ( $username === false ) { 45 $user = User::newSystemUser( 'Command line script', [ 'steal' => true ] ); 46 } else { 47 $user = User::newFromName( $username ); 48 } 49 if ( !$user ) { 50 $this->fatalError( "Invalid username" ); 51 } 52 StubGlobalUser::setUser( $user ); 53 54 $archive = new PageArchive( $title, RequestContext::getMain()->getConfig() ); 55 $this->output( "Undeleting " . $title->getPrefixedDBkey() . '...' ); 56 $archive->undeleteAsUser( [], $user, $reason ); 57 $this->output( "done\n" ); 58 } 59} 60 61$maintClass = Undelete::class; 62require_once RUN_MAINTENANCE_IF_MAIN; 63