AvailableUserRolesService.php in Multiple Registration 8
File
src/AvailableUserRolesService.php
View source
<?php
namespace Drupal\multiple_registration;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Entity\EntityTypeManager;
class AvailableUserRolesService {
protected $entityTypeManager;
protected $configFactory;
public function __construct(EntityTypeManager $entityTypeManager, ConfigFactoryInterface $configFactory) {
$this->entityTypeManager = $entityTypeManager;
$this->configFactory = $configFactory;
}
public function getAvailableRoles() {
$roles = user_role_names();
$role_storage = $this->entityTypeManager
->getStorage('user_role');
$admin_role = $role_storage
->getQuery()
->condition('is_admin', TRUE)
->execute();
$admin_role = reset($admin_role);
$notAvalible = [
AccountInterface::ANONYMOUS_ROLE => $roles[AccountInterface::ANONYMOUS_ROLE],
AccountInterface::AUTHENTICATED_ROLE => $roles[AccountInterface::AUTHENTICATED_ROLE],
$admin_role => $roles[$admin_role],
];
return array_diff_assoc($roles, $notAvalible);
}
public function getRegistrationPages() {
$roles = $this
->getAvailableRoles();
if (!empty($roles)) {
$pages_config = $this->configFactory
->getEditable('multiple_registration.create_registration_page_form_config');
$reg_pages = [];
foreach ($roles as $rid => $role_name) {
if ($url = $pages_config
->get('multiple_registration_url_' . $rid)) {
$isHidden = $pages_config
->get('multiple_registration_hidden_' . $rid);
$reg_pages[$rid]['url'] = $url;
$reg_pages[$rid]['role_name'] = $role_name;
$reg_pages[$rid]['hidden'] = $isHidden;
}
}
return $reg_pages;
}
return FALSE;
}
}