Pergunta

Eu estou tentando escrever um script que irá criar um usuário no MediaWiki, para que eu possa executar um trabalho em lotes para importar uma série de usuários.

Eu estou usando mediawiki-1.12.0.

Eu tenho esse código a partir de um fórum, mas não parece que ele funciona com 1,12 (é de 1,13)

$name = 'Username'; #Username (MUST start with a capital letter)
$pass = 'password'; #Password (plaintext, will be hashed later down)
$email = 'email';   #Email (automatically gets confirmed after the creation process)
$path = "/path/to/mediawiki";
putenv( "MW_INSTALL_PATH={$path}" );
require_once( "{$path}/includes/WebStart.php" );
$pass = User::crypt( $pass );
$user = User::createNew( $name, array( 'password' => $pass, 'email' => $email ) );
$user->confirmEmail();
$user->saveSettings();  
$ssUpdate = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
$ssUpdate->doUpdate();

Obrigado!

Foi útil?

Solução

Há um script createAndPromote em maintenance/ que cria contas de usuário e concede direitos de administrador. Você pode adaptar este para remover a parte permissões.

Como alternativa, você pode dar uma olhada na ImportUsers extensão.

Outras dicas

Eu usei isso em MediaWiki 1.7, e funcionou bem para mim:

#!/usr/bin/php
## Add a user to Mediawiki

<?php

    $domain = 'example.com';
    $mwpath = '/docs/www-wiki';

    if ($argc < 3) {
        die("Missing arguments.\n"
           ."Usage: $0 USER PASSWORD\n");
    }
    $user = $argv[1];
    $pass = $argv[2];

    print "Add user $user with password $pass [y/N]?\n";
    $ans = fgets(STDIN,256);
    if (!  preg_match('/^[yY]/', $ans) ) {
        print "Canceled.\n";
        exit;
    }

    $user = ucfirst(strtolower($user)); // maybe unneeded, because handled in MW functions?


    # Adapted from http://www.mwusers.com/forums/showthread.php?9788-Create-new-user-in-database&p=42931&viewfull=1#post42931

    $path = $mwpath;
    putenv("MW_INSTALL_PATH={$path}");

    #require_once ("{$path}/includes/WebStart.php"); // for version >= 1.14 ?

    # My version 1.7 doesn't have WebStart.php.
    # It seems to work by including the following lines found in index.php
    # Some are probably not needed, but I don't want to do more testing
    define( 'MEDIAWIKI', true );
    require_once( './includes/Defines.php' );
    require_once( './LocalSettings.php' );
    require_once( 'includes/Setup.php' );
    require_once( "includes/Wiki.php" );
    $mediaWiki = new MediaWiki();


    $mwuser=User::newFromName($user);

    if (! is_object($mwuser)) {
        die("Invalid user!\n");
    }

    $mwuser->addToDatabase(); // don't we need a return value to check?
    $mwuser->setPassword( $pass );
    $mwuser->setEmail( strtolower($user) . '@' . $domain );
    $mwuser->confirmEmail();

    #$mwuser->setRealName( $_POST["nome"] );
    #$mwuser->addGroup($_POST["grupo"]);

    $mwuser->saveSettings(); // no return value?
    $ssUpdate = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
    $ssUpdate->doUpdate();
?>

Eu acho que o seu problema era também o uso de WebStart.php em seu script, que não existia em sua versão Mediawiki.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top