You are here

ulogin.module in uLogin (advanced version) 8

Same filename and directory in other branches
  1. 6 ulogin.module
  2. 7 ulogin.module

Main file for the uLogin module.

File

ulogin.module
View source
<?php

/**
 * @file
 * Main file for the uLogin module.
 */
use Drupal\ulogin\UloginHelper;
use Drupal\user\UserInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Entity\EntityInterface;

/**
 * Implements hook_hook_info().
 */
function ulogin_hook_info() {
  $hooks['ulogin_username_alter'] = [
    'group' => 'ulogin',
  ];
  return $hooks;
}

/**
 * Implements hook_ENTITY_TYPE_insert().
 */
function ulogin_user_insert(EntityInterface $entity) {
  global $_ulogin_data;

  // The user is being created.
  if (!empty($entity
    ->id()) && !empty($_ulogin_data)) {
    foreach ($_ulogin_data as $key => $val) {
      \Drupal::service('user.data')
        ->set('ulogin', $entity
        ->id(), $key, $val);
    }
    if (!empty($_ulogin_data['email'])) {

      // Email_confirm: if email was manually entered - set temporary email.
      if (!empty($_ulogin_data['manual']) && in_array('email', explode(',', $_ulogin_data['manual'])) && \Drupal::config('ulogin.settings')
        ->get('email_confirm') && \Drupal::moduleHandler()
        ->moduleExists('email_confirm')) {
        $entity
          ->set('mail', preg_replace('/^(.+)@/', '$1+not_confirmed@', $_ulogin_data['email']));
      }
      else {
        $entity
          ->set('mail', $_ulogin_data['email']);
      }
      $entity
        ->save();
    }
  }
}

/**
 * Implements hook_user_delete().
 */
function ulogin_user_delete(EntityInterface $entity) {
  UloginHelper::identityDeleteByUid($entity
    ->id());
}

/**
 * Implements hook_form_alter().
 */
function ulogin_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $form_ids = array_merge(array_filter(\Drupal::config('ulogin.settings')
    ->get('forms') ?: [
    'user_login_form',
    'user_register_form',
  ]), [
    'comment_comment_form',
  ]);
  if (\Drupal::currentUser()
    ->hasPermission('use ulogin') && \Drupal::currentUser()
    ->isAnonymous() && in_array($form_id, $form_ids)) {
    $form['ulogin'] = [
      '#type' => 'ulogin_widget',
    ];
  }
}

/**
 * Implements hook_theme().
 */
function ulogin_theme($existing, $type, $theme, $path) {
  return [
    'ulogin_widget' => [
      'render element' => 'element',
      'template' => 'ulogin_widget',
    ],
    'ulogin_widget_id' => [
      'render element' => 'element',
      'template' => 'ulogin_widget_id',
    ],
    'ulogin_widget_window' => [
      'render element' => 'element',
      'template' => 'ulogin_widget_window',
    ],
    'ulogin_widget_buttons' => [
      'render element' => 'element',
      'template' => 'ulogin_widget_buttons',
    ],
  ];
}

/**
 * Implements hook_user_format_name_alter().
 */
function ulogin_user_format_name_alter(&$name, $account) {

  // Don't alter anonymous users or objects that do not have any user ID.
  if (empty($account
    ->id())) {
    return;
  }
  $ulogin_pattern = \Drupal::config('ulogin.settings')
    ->get('display_name') ?: '[user:ulogin:first_name] [user:ulogin:last_name]';
  if (!empty($ulogin_pattern) && !\Drupal::moduleHandler()
    ->moduleExists('realname')) {
    if (!empty(\Drupal::service('user.data')
      ->get('ulogin', $account
      ->id()))) {
      $pattern = str_replace('[user:name]', $account
        ->getAccountName(), $ulogin_pattern);
      $ulogin_name = \Drupal::token()
        ->replace($ulogin_pattern, [
        'user' => $account,
      ], [
        'clear' => TRUE,
      ]);
      $name = trim(strip_tags($ulogin_name));
    }
  }
}

/**
 * Implements hook_realname_alter().
 */
function ulogin_realname_alter(&$realname, $account) {
  if (!empty(\Drupal::service('user.data')
    ->get('ulogin', $account
    ->id())) && \Drupal::config('ulogin.settings')
    ->get('override_realname')) {
    $ulogin_pattern = \Drupal::config('ulogin.settings')
      ->get('display_name') ?: '[user:ulogin:first_name] [user:ulogin:last_name]';
    $pattern = str_replace('[user:name]', $realname, $ulogin_pattern);
    $ulogin_name = \Drupal::token()
      ->replace($pattern, [
      'user' => $account,
    ], [
      'clear' => TRUE,
    ]);
    $realname = trim(strip_tags($ulogin_name));
  }
}

/**
 * Implements hook_email_registration_name().
 */
function ulogin_email_registration_name(UserInterface $account) {
  global $_ulogin_data;
  if (!empty($_ulogin_data) || !empty(\Drupal::service('user.data')
    ->get('ulogin', $account
    ->id()))) {
    return $account
      ->label();
  }
  return NULL;
}