Как экспортировать пользователей в CSV-файл?
Я хотел бы экспортировать пользователей в CSV в Drupal 7. Я полагаю, что могу использовать модуль Для экспорта данных , но я не уверен, как это сделать, или если это правильный модуль, который я хотел бы.
4 answers
Да, Экспорт данных просмотров - ваш лучший выбор.
Создайте представление, отображающее пользователей, и добавьте отображение страницы. Добавьте нужные поля в свой экспорт и измените любые дополнительные настройки, которые вы хотите.
Затем добавьте отображение типа Экспорт данных и установите его для прикрепления к отображению страницы. Таким образом, он добавит ссылку на загрузку файла на эту страницу (вы, вероятно, также можете пропустить отображение страницы и добавить только отображение экспорта данных с определенным путем).
Выберите свой формат экспорта (CSV) в настройках формата. Если у вас много пользователей, обязательно выберите пакетную операцию в разделе "Настройки экспорта данных".
Также рекомендуется требовать определенного разрешения или роли для доступа к представлению.
Да, Экспорт данных представлений является правильным модулем, но если у вас большие файлы данных, вам необходимо увеличить соответствующие ограничения PHP, такие как: PHP max_execution_time
и memory_limit
, если вы не используете пакетный процесс, так что все должно быть в порядке. Вам следует увеличить ограничения, особенно при использовании экспорта через drush, который поддерживается (обратите внимание, что он использует отдельный файл настроек PHP).
Чтобы экспортировать пользователей с помощью пользовательской функции, проверьте: Как я могу экспортировать всех пользователей в формате CSV?
Который является в основном следующий пользовательский код, который вы можете использовать в некоторой функции обратного вызова:
drupal_add_http_header('Content-Type', 'text/csv');
drupal_add_http_header('Content-Disposition', 'attachment; filename=users.csv');
$results = db_query("SELECT * FROM {users}");
$csvdata = 'Uid,Username,Email' . PHP_EOL;
foreach ($results as $record) {
$row = array();
$row[] = $record->uid;
$row[] = $record->name;
$row[] = $record->mail;
$csvdata .= implode(',', $row) . PHP_EOL;
}
print $csvdata;
drupal_exit();
Еще одним вариантом решения этих требований является использование модуля Forena, как описано ниже.
Представленные отчеты
После того, как вы установите/включите его, вы получите эти готовые Администрирование Drupal отчеты, которые поставляются вместе с ним (среди многих других отчетов):
1) Активные пользователи
+-----------+-----------------------+-------------------------+---------+
| User | Email | Last Logged in | Actions |
+-----------+-----------------------+-------------------------+---------+
| Webmaster | [email protected] | Sun, 03/27/2016 - 18:39 | logs |
| Admin | [email protected] | Thu, 04/07/2016 - 12:47 | logs |
| Pierre | [email protected] | Fri, 04/01/2016 - 18:19 | logs |
+-----------+-----------------------+-------------------------+---------+
Используя гиперссылку "Журналы" (в столбце "Действия"), вы получаете новый отчет (= Журналы для пользователя), показывающий самый последний журнал записи для выбранного пользователя с "типом", "сообщением", "отметкой времени" и последующей гиперссылкой ("подробности"), которая покажет дополнительные сведения для выбранной записи журнала (такие как "серьезность", "имя хоста" и т. Д.).
2) Детали роли
После выбора любой из доступных ролей (= параметр отчета) вы получите отчет, который выглядит как в этом примере:
+-----------+---------+------------------------------+
| User Name | User Id | Actions |
+-----------+---------+------------------------------+
| Admin | 1 | View Profile Edit Profile |
| Webmaster | 8 | View Profile Edit Profile |
+-----------+---------+------------------------------+
Гиперссылки Просмотр профиля/Редактирование профиля можно использовать для фактического просмотра/редактирования профиля выбранного пользователь.
Настройка/клонирование доставленных отчетов
При необходимости, если вы хотите настроить эти отчеты, вы можете использовать его функции написания отчетов. Например, его средство создания отчетов WYSIWYG и/или конструктор запросов Forena (поставляется с Forena в качестве подмодуля), чтобы сначала создать запрос/отчет, соответствующий вашим потребностям. Для видеоурока об этом инструменте написания запросов, проверьте Определите блоки данных с дополнительными фильтрами.
Результатом всего этого может быть табличный вывод и/или диаграмма. После того, как содержимое отчета будет соответствовать спецификациям, вы можете сохранить его в виде (например) CSV-файла. Другими поддерживаемыми форматами для сохранения отчета являются XLS, DOC, HTML, PDF и т.д.
Демонстрационные видеоматериалы и учебные пособия
Видео-демонстрации и учебные пособия содержат довольно много ссылок на живые демонстрации о Forena.
Для включения пользовательских полей от ваших пользователей вы можете использовать:
drupal_add_http_header('Content-Type', 'text/csv');
drupal_add_http_header('Content-Disposition', 'attachment; filename=users.csv');
$csvdata = 'Uid,Username,Email,Firstname' . PHP_EOL;
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'user');
$result = $query->execute();
$uids = array_keys($result['user']);
// THIS IS YOUR ARRAY OF UIDS.
$users = user_load_multiple($uids);
foreach ($users as $record) {
$row = array();
$row[] = $record->uid;
$row[] = $record->name;
$row[] = $record->mail;
// Custom fields, for example
$row[] = $record->field_first_name_user['und'][0]['value'] ?? '';
$csvdata .= implode(',', $row) . PHP_EOL;
}
print $csvdata;
drupal_exit();
Надеюсь, это поможет!