You are here

public static function UloginHelper::userSave in uLogin (advanced version) 8

Internal functions.

1 call to UloginHelper::userSave()
UloginController::uloginCallback in src/Controller/UloginController.php
Call back for login and registration.

File

src/UloginHelper.php, line 102

Class

UloginHelper
Ulogin Helper class.

Namespace

Drupal\ulogin

Code

public static function userSave($data, $uid = NULL) {
  if ($uid) {
    $account = User::load($uid);
  }
  else {
    $account = \Drupal::currentUser();
  }
  UloginHelper::identitySave($data, $uid);
  $user_save_trigger = FALSE;

  // Save user picture.
  if (\Drupal::config('ulogin.settings')
    ->get('user_pictures') && \Drupal::config('ulogin.settings')
    ->get('pictures')) {
    $photo_url = '';
    if (!empty($data['photo_big']) && $data['photo_big'] != 'http://ulogin.ru/img/photo_big.png') {
      $photo_url = $data['photo_big'];
    }
    elseif (!empty($data['photo']) && $data['photo'] != 'http://ulogin.ru/img/photo.png') {
      $photo_url = $data['photo'];
    }
    if ($photo_url) {
      $photo = \Drupal::httpClient()
        ->get($photo_url);
      $file = file_save_data($photo
        ->getBody()
        ->getContents());

      // To make user_save() to process the file and move it.
      $file
        ->set('status', 0);
      $account
        ->set('user_picture', $file);
      $user_save_trigger = TRUE;
    }
  }

  // Email_confirm: if email was manually entered - trigger email change confirmation.
  if (!empty($data['email']) && !empty($data['manual']) && in_array('email', explode(',', $data['manual'])) && \Drupal::config('ulogin.settings')
    ->get('email_confirm') && \Drupal::moduleHandler()
    ->moduleExists('email_confirm')) {
    $account
      ->set('mail', $data['email']);
    $user_save_trigger = TRUE;
    if ($uid) {

      // Backup original user.
      $user_backup = \Drupal::currentUser();

      // Replace user with fake one so that email_confirm module works without notices.
      $user = $account;
    }
  }
  if ($user_save_trigger) {

    // Hack to remove one notice from Legal module.
    if (\Drupal::moduleHandler()
      ->moduleExists('legal')) {
      $account
        ->set('legal_accept', NULL);
    }
    $account
      ->save();
  }

  // Return original user back.
  if (isset($user_backup)) {
    \Drupal::currentUser()
      ->setAccount($user_backup);
  }
}