*/ require_once( __DIR__ . '/Maintenance.php' ); /** * Maintenance script to create an account and grant it administrator rights. * * @ingroup Maintenance */ class CreateAndPromote extends Maintenance { public function __construct() { parent::__construct(); $this->mDescription = "Create a new user account"; $this->addOption( "sysop", "Grant the account sysop rights" ); $this->addOption( "bureaucrat", "Grant the account bureaucrat rights" ); $this->addArg( "username", "Username of new user" ); $this->addArg( "password", "Password to set" ); } public function execute() { $username = $this->getArg( 0 ); $password = $this->getArg( 1 ); $this->output( wfWikiID() . ": Creating and promoting User:{$username}..." ); $user = User::newFromName( $username ); if ( !is_object( $user ) ) { $this->error( "invalid username.", true ); } elseif ( 0 != $user->idForName() ) { $this->error( "account exists.", true ); } # Try to set the password try { $user->setPassword( $password ); } catch ( PasswordError $pwe ) { $this->error( $pwe->getText(), true ); } # Insert the account into the database $user->addToDatabase(); $user->saveSettings(); # Promote user if ( $this->hasOption( 'sysop' ) ) { $user->addGroup( 'sysop' ); } if ( $this->hasOption( 'bureaucrat' ) ) { $user->addGroup( 'bureaucrat' ); } # Increment site_stats.ss_users $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 ); $ssu->doUpdate(); $this->output( "done.\n" ); } } $maintClass = "CreateAndPromote"; require_once( RUN_MAINTENANCE_IF_MAIN );