Пакетное создание пользователей? - PullRequest
2 голосов
/ 11 ноября 2009

У меня есть список из 600 пользователей с именами, адресами электронной почты и ролями, которые нужно добавить на создаваемый мной сайт drupal.

Пользователям распределены две роли.

Как дополнительная сложность, сайт использует модуль Content Profile, поэтому было бы очень полезно, если бы для каждой новой созданной учетной записи пользователя также был автоматически создан соответствующий узел профиля.

Есть идеи, как создать новых пользователей в пакетном режиме?

Ответы [ 2 ]

3 голосов
/ 11 ноября 2009

Как насчет user_import модуля?

1 голос
/ 13 ноября 2009

У меня было то же самое, и я создал модуль для этого. По сути, он читает пользователя и какую роль получить из файла; в моем случае это был CSV-файл с адресами электронной почты, именем, ролью и другими материалами, необходимыми для профиля контента.

Допустим, вы хотите, чтобы пользователь x@mail.com автоматически заполнил данные его профиля контента: Имя, Фамилия и Город или что-то еще.

В вашем модуле:

прочитать строку из файла создать нового пользователя создайте новый узел (объект stdClass, присвойте ему правильный тип ('profile_data' или любой другой тип вашего профиля контента), заполните оставшуюся часть узла и сохраните.

Образец:

<?php

//create a form with a button to read the CSV file

function bulk_users_submit() {
    $users = 0;
    $handle = fopen(drupal_get_path('module', 'bulk_users') .'/'.DATAFILE, "r");
    if (!$handle) {
        return $users;
    }
    while (($data = fgetcsv($handle)) !== FALSE) {
        //this is similar to what the users.module does
        if (bulk_users_create_user($data)) {
            $users++;
            bulk_users_create_profile($data);
        }
    }
    fclose($handle);
    return $users;
}


function bulk_users_create_profile($user, $data) {
    $node = new stdClass();
    $node->title = t('First and Last Name');
    $node->body = "";
    $node->type = 'first_and_last_name';
    $node->created = time();
    $node->changed = $node->created;
    $node->status = 1;
    $node->promote = 0;
    $node->sticky = 0;
    $node->format = 0;
    $node->uid = $data['uid'];
    $node->language = 'en';
    $node->field_firstname[0]['value'] = $data['firstname'];
    $node->field_lastname[0]['value'] = $data['lastname'];
    node_save($node);
}


?>

не проверено, но идея ясна, я надеюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...