BulkUserRegistration.php in Bulk User Registration 8
File
src/BulkUserRegistration.php
View source
<?php
namespace Drupal\bulk_user_registration;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\user\Entity\User;
use Drupal\user\RoleInterface;
use Drupal\user\UserInterface;
class BulkUserRegistration implements BulkUserRegistrationInterface {
protected $languageManager;
protected $moduleHandler;
protected $fieldNames = [];
public function __construct(LanguageManagerInterface $languageManager, ModuleHandlerInterface $moduleHandler) {
$this->languageManager = $languageManager;
$this->moduleHandler = $moduleHandler;
}
public function createUser(array $userData, $defaultRole) {
$langcode = \Drupal::languageManager()
->getDefaultLanguage()
->getId();
$user = User::create();
$user
->setUsername($userData[self::FIELD_USER_NAME]);
$user
->setEmail($userData[self::FIELD_EMAIL]);
$user
->set('init', $userData[self::FIELD_EMAIL]);
$user
->set('langcode', $langcode);
$user
->set('preferred_langcode', $langcode);
$user
->set('preferred_admin_langcode', $langcode);
$user
->enforceIsNew();
if (!$userData[self::FIELD_STATUS]) {
$user
->block();
}
else {
$user
->activate();
}
$roles = [];
$csvRoles = explode(',', $userData[self::FIELD_ROLE]);
$allowedRoles = $this
->getAllowedRoles();
foreach ($csvRoles as $csvRole) {
$csvRole = trim($csvRole);
if (isset($allowedRoles[$csvRole])) {
$roles[] = $csvRole;
}
}
$roles = array_filter(array_unique($roles));
$roles = empty($roles) ? [
$defaultRole,
] : $roles;
foreach ($roles as $role) {
$this
->addRole($user, $role);
}
\Drupal::moduleHandler()
->invokeAll('bulk_user_registration_user_presave', [
$user,
$userData,
]);
$user
->save();
return $user;
}
public function getFieldNames() {
if (count($this->fieldNames) == 0) {
$fieldNames = [];
$extraFields = $this->moduleHandler
->invokeAll('bulk_user_registration_extra_fields');
foreach ($this
->getStandardFields() as $name) {
$fieldNames[$name] = FALSE;
}
foreach ($extraFields as $name) {
if (!isset($fieldNames[$name])) {
$fieldNames[$name] = TRUE;
}
}
$this->fieldNames = $fieldNames;
}
return $this->fieldNames;
}
protected function addRole(UserInterface $user, $role) {
if (!in_array($role, [
RoleInterface::AUTHENTICATED_ID,
RoleInterface::ANONYMOUS_ID,
])) {
$user
->addRole($role);
}
}
protected function getAllowedRoles() {
$allowedRoles = \Drupal::config('bulk_user_registration.settings')
->get('allowed_roles');
return array_intersect_key(user_role_names(TRUE), array_flip(array_filter($allowedRoles)));
}
protected function getStandardFields() {
return [
self::FIELD_USER_NAME,
self::FIELD_EMAIL,
self::FIELD_STATUS,
self::FIELD_ROLE,
];
}
}