2009-05-29 14 views
3

私は一連のユーザをインポートするバッチジョブを実行できるように、MediaWikiでユーザを作成するスクリプトを作成しようとしています。MediaWikiにユーザを追加するスクリプト

私はmediawiki-1.12.0を使用しています。

$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(); 

おかげで(それは1.13のためです)私は、フォーラムからこのコードを得たが、それは1.12で動作するようにそれは見ていません!

答えて

5

maintenance/にはcreateAndPromoteというスクリプトがあり、ユーザーアカウントを作成して管理者権限を付与します。これを適用してパーミッション部分を削除することができます。

または、ImportUsersの拡張機能をご覧ください。

3

私はMediawikiの1.7でこれを使用し、それは私のためによく働い:

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

私はあなたの問題はまたあなたのMediawikiのバージョンに存在していなかったスクリプト内WebStart.phpの使用、だったと思います。

関連する問題