2009-05-29 9 views
3

J'essaie d'écrire un script qui créera un utilisateur dans MediaWiki, afin que je puisse exécuter un travail par lots pour importer une série d'utilisateurs. J'utilise mediawiki-1.12.0.Script pour ajouter un utilisateur à MediaWiki

J'ai eu ce code d'un forum, mais il ne ressemble pas à cela fonctionne avec 1,12 (il est pour 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(); 

Merci!

Répondre

5

Il existe un script createAndPromote dans maintenance/ qui crée des comptes d'utilisateurs et accorde des droits d'administrateur. Vous pouvez adapter cela pour supprimer la partie autorisations.

Alternativement, vous pouvez jeter un oeil à l'extension ImportUsers.

3

J'ai utilisé ce sur Mediawiki 1.7, et il a bien fonctionné pour moi:

#!/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(); 
?> 

je suppose que votre problème a également été l'utilisation de WebStart.php dans votre script, qui n'existait pas dans votre version Mediawiki .

Questions connexes