- PVSM.RU - https://www.pvsm.ru -

BUR. Модуль для массовой регистрации пользователей

Приветствую. В работе над одним проектом понадобилось из файла CSV зарегистрировать порядка 50 000 пользователей, с именами пользователей, паролями и другой информацией. Существующие решения [1] не подошли из-за слишком малой кастомизации. Пришлось написать свой «велосипед». Потом возникла идея поделиться с сообществом. Публикация на Drupal.org довольно замороченная процедура, поэтому решил написать на Хабр. Как оказалось, мой «велосипед» подходит для конкретной задачи, но не универсален. Пришлось немного «покумекать» как и что сделать. Итак, представляю модуль BUR (Bulk user registration)

Возможности модуля:

1. Настройка формата файла:

image

2. Сортировка полей для импортируемого файла:

BUR. Модуль для массовой регистрации пользователей

3. Собственно сам импорт:

BUR. Модуль для массовой регистрации пользователей

Как работает модуль?

Есть таблица со следующей структурой:

CREATE TABLE `drupal7_bur_fields_table` (
  `bur_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Field ID',
  `bur_title` varchar(50) NOT NULL COMMENT 'Human-friendly title',
  `bur_user_field` varchar(50) NOT NULL COMMENT 'The field of conformance to the field in the user table',
  `bur_weight` smallint(6) NOT NULL COMMENT 'The serial number of the field',
  `bur_is_data` smallint(6) NOT NULL COMMENT 'Whether the field will be used in array ’data’',
  `bur_dateizm` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Date of change',
  PRIMARY KEY (`bur_id`),
  KEY `bur_weight` (`bur_weight`),
  KEY `bur_is_data` (`bur_is_data`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

В этой таблице содержится информация о структуре импортируемого файла. А именно:

  1. Соответствие полей в файле соответствующему полю из таблицы пользователей;
  2. Порядок расположения этих самых полей в файле;

Также любое поле файла возможно поместить в массив $edit['data']. Для этого при создании поля выбрать «data» и указать ключ/наименование под которым будет добавляться информация:

BUR. Модуль для массовой регистрации пользователей

При первом импорте файла создается временная таблица соответствующая структуре этого файла.
Потом через функцию user_save [2] с использованием Batch API пользователи регистрируются в системе. Если файл не указан, то будут добавляться ранее не добавленные записи из временной таблицы.

При импорте возможно указать дополнительные параметры применяемые при создании новых пользователей:
BUR. Модуль для массовой регистрации пользователей

Ах-да! Кодировка исходного файла должна быть, пока, только в UTF-8. Пароли должны быть не «хэшированы». Если хотите использовать пароли хэшированные с солью, можно взять код функции user_save и «выкинуть» оттуда код, который хэширует и добавляет «соль» к паролю.

Модуль можно скачать здесь [3]. Специально для этого создал аккаунт на Git Hub. Правда еще пока не разобрался как по-отдельности загрузить файлы модуля, чтобы можно было смотреть исходный код. Оставим это на завтра.

Если так подумать, то данный модуль при небольших изменениях можно использовать для «заливки» данных и в другие таблицы.

При создании модуля были использованы следующие материалы:

Модуль распространяется под лицензией BSD.

P.S. Я не считаю себя программистом(я это уже осознал), мне до этого еще далеко, поэтому все замечания по коду, реализации приветствуются.
P.P.S. Я обожаю Друпал.

Автор: servekon

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/drupal/42045

Ссылки в тексте:

[1] Существующие решения: https://drupal.org/project/user_import

[2] user_save: https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_save/7

[3] здесь: https://github.com/servekon/drupal7_bur/releases

[4] Drupal API: https://api.drupal.org

[5] Примеры практически на все случаи жизни: https://drupal.org/project/examples

[6] Источник: http://habrahabr.ru/post/191848/