Manual talk:CreateAndPromote.php

From mediawiki.org

Helpful page[edit]

CreateUser (without promote)[edit]

I created a version of this maintenance script (createUser.php) that just creates a user, but doesn't do any promotion. I added settings of the user's real name as well. I hope this is helpful to people.

<?php

/**
 * Maintenance script to create an account
 *
 * 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>
 */

require_once( dirname(__FILE__) . '/Maintenance.php' );

class CreateUser extends Maintenance {

        public function __construct() {
                parent::__construct();
                $this->mDescription = "Create a new user account";
                $this->addArg( "username", "Username of new user" );
                $this->addArg( "password", "Password to set" );
                $this->addArg( "realname", "Real name for user" );
        }

        public function execute() {
                $username = $this->getArg(0);
                $password = $this->getArg(1);
                $realname = $this->getArg(2);

                $this->output( wfWikiID() . ": Creating 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 );
                }

                # Set real name
                $user->setRealName( $realname );

                # Insert the account into the database
                $user->addToDatabase();
                $user->saveSettings();

                # Increment site_stats.ss_users
                $ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
                $ssu->doUpdate();

                $this->output( "done.\n" );
        }
}

$maintClass = "CreateUser";
require_once( DO_MAINTENANCE );

Dmulter 17:19, 11 January 2011 (UTC)Reply

In current versions, createAndPromote.php can be used to create a new user without promoting him. And on the other hand the script can also be used to modify an existing user. So the script neither necessarily has to create a user, nor does it necessarily promote one. In that regard, the script name got somewhat misleading. I added that to the manual page. --87.123.39.116 17:58, 22 February 2016 (UTC)Reply

Batch Create[edit]

Is there any way to use this script to create multiple users without having to execute it over and over again? --Zackmann08 (talk) 14:45, 17 July 2012 (UTC)Reply

Maybe create a script that puts the list of users in an array and then does a shell_exec foreach of them? Leucosticte (talk) 00:32, 30 December 2013 (UTC)Reply

No change in user group unless re-saving user settings? (MW 1.26.2)[edit]

I realized that in MW 1.26.2 no change to the granted user group occurs unless you save once user preferences. A bug or expected behaviour? --Andreas P. 23:19, 7 March 2016 (UTC)Reply

I have not tested this, but first having to save the preferences in Special:Preferences before a change in group memberships takes effect surely is not expected behaviour. When the script finished running, the user immediately is member of the new groups. If this change in group membership took place, but is not displaying in the Preferences, then I guess the problem is somewhere else. Maybe a caching problem? --87.123.49.6 12:22, 2 May 2016 (UTC)Reply

Remove some usergroups[edit]

Is there any way to remove some usergroups from certain user using that script? or remove all groups, except listed? Ibutakov.smartec (talk) 17:32, 23 March 2016 (UTC)Reply

No, the current version of this script cannot be used to remove groups. --87.123.49.6 12:20, 2 May 2016 (UTC)Reply