Скрипт для добавления пользователя в MediaWiki - PullRequest
3 голосов
/ 30 мая 2009

Я пытаюсь написать скрипт, который создаст пользователя в MediaWiki, чтобы я мог запустить пакетное задание для импорта группы пользователей.

Я использую mediawiki-1.12.0.

Я получил этот код с форума, но, похоже, он не работает с 1.12 (это для 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();

Спасибо!

Ответы [ 2 ]

5 голосов
/ 30 мая 2009

В maintenance/ есть скрипт createAndPromote, который создает учетные записи пользователей и предоставляет права администратора. Вы можете адаптировать это, чтобы удалить часть разрешений.

Кроме того, вы можете взглянуть на расширение ImportUsers.

3 голосов
/ 12 июня 2010

Я использовал это в 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();
?>

Полагаю, вашей проблемой было также использование WebStart.php в вашем скрипте, которого не было в вашей версии Mediawiki.

...