You are here

function opigno_moxtra_post_update_update_user_status in Opigno Moxtra 8

Same name and namespace in other branches
  1. 3.x opigno_moxtra.post_update.php \opigno_moxtra_post_update_update_user_status()

Updates users status with Opigno API.

File

./opigno_moxtra.post_update.php, line 14
Contains opigno_moxtra.post_update.

Code

function opigno_moxtra_post_update_update_user_status(&$sandbox) {
  $config = \Drupal::config('opigno_moxtra.settings');
  $org_id = $config
    ->get('org_id');
  $status = $config
    ->get('status');
  if (!empty($org_id) && $status === TRUE) {
    $opigno_api = \Drupal::service('opigno_moxtra.opigno_api');
    if (!isset($sandbox['last_uid'])) {
      $sandbox['last_uid'] = 0;
      $sandbox['current'] = 0;
      $sandbox['total'] = \Drupal::entityQuery('user')
        ->count()
        ->execute();
    }
    $uids = \Drupal::entityQuery('user')
      ->condition('uid', $sandbox['last_uid'], '>')
      ->range(0, 10)
      ->execute();

    /** @var \Drupal\user\Entity\User[] $users */
    $users = User::loadMultiple($uids);
    foreach ($users as $user) {
      $active = $user
        ->isActive() && $user
        ->hasRole(OPIGNO_MOXTRA_COLLABORATIVE_FEATURES_RID);
      if ($active) {
        $data = [
          'uid' => $user
            ->id(),
          'name' => $user
            ->getDisplayName(),
          'timezone' => $user
            ->getTimeZone(),
        ];
        $opigno_api
          ->updateUser($data);
        $opigno_api
          ->enableUser($data);
      }
      else {
        $opigno_api
          ->disableUser($user
          ->id());
      }
      $sandbox['last_uid'] = $user
        ->id();
      $sandbox['current']++;
      $sandbox['#finished'] = $sandbox['current'] / $sandbox['total'];
    }
  }
}