o365-2.0.3/o365.install

o365.install
<?php

/**
 * @file
 * Contains o365.install.
 */

use Drupal\Core\Site\Settings;

/**
 * Implements hook_install().
 */
function o365_install() {
  module_set_weight('o365', 100);
}

/**
 * Implements hook_requirements().
 *
 * Display information about the Microsoft 365 values in the settings.php.
 */
function o365_requirements($phase) {
  $requirements = [];

  if ($phase === 'runtime') {
    $settings = Settings::get('o365');
    $value = t('Everything is configured properly.');
    $severity = REQUIREMENT_OK;

    /** @var \Drupal\o365\O365ConnectorInterface[] $o365_connectors */
    $o365_connectors = \Drupal::entityTypeManager()
      ->getStorage('o365_connector')
      ->loadMultiple();

    $build = [];
    foreach ($o365_connectors as $o365_connector) {
      if (empty($settings)) {
        $value = t('There are no Microsoft 365 API settings provided in the settings.php file. Please consult the documentation.');
        $severity = REQUIREMENT_ERROR;
        break;
      }
      $connector_id = $o365_connector->id();
      $connector_label = $o365_connector->label();
      $connector_args = [
        '@connector_id' => $connector_id,
        '%o365_connector' => $connector_label,
      ];
      $issues = [];
      if (empty($settings[$connector_id])) {
        $issues[] = t("Please provide a <code>\$settings['o365']['@connector_id']</code> entry in your settings.php file.", $connector_args);
        $severity = REQUIREMENT_ERROR;
      }
      else {
        if (!isset($settings[$connector_id]['client_id'], $settings[$connector_id]['client_secret'], $settings[$connector_id]['tenant_id'])) {
          $severity = REQUIREMENT_ERROR;

          if (!isset($settings[$connector_id]['client_id'])) {
            $issues[] = t('The client ID has not been provided.', $connector_args);
          }

          if (!isset($settings[$connector_id]['client_secret'])) {
            $issues[] = t('The client secret has not been provided.', $connector_args);
          }

          if (!isset($settings[$connector_id]['tenant_id'])) {
            $issues[] = t('The tenant ID has not been provided.', $connector_args);
          }
        }
      }
      if ($issues) {
        $build[] = [
          '#theme' => 'item_list',
          '#title' => $connector_label,
          '#items' => $issues,
        ];
      }
    }

    if ($build) {
      /** @var \Drupal\Core\Render\RendererInterface $renderer */
      $renderer = \Drupal::service('renderer');
      // Doing a manual version_compare() rather than DeprecationHelper because
      // D9 is still being supported.
      if (version_compare(\Drupal::VERSION, '10.3', '>=')) {
        $output = $renderer->renderInIsolation($build);
      }
      else {
        // @phpstan-ignore method.deprecated
        $output = $renderer->renderPlain($build);
      }
    }
    else {
      $output = $value;
    }
    $requirements['o365'] = [
      'title' => t('Microsoft 365 Connector'),
      'value' => $output,
      'severity' => $severity,
    ];
  }

  return $requirements;
}

/**
 * Removed.
 */
function o365_update_8001() {
}

/**
 * Set module weight.
 */
function o365_update_8002() {
  module_set_weight('o365', 100);
}

/**
 * Removed.
 */
function o365_update_8003() {
}

/**
 * Removed.
 */
function o365_update_8004() {
}

/**
 * Remove field base definition.
 */
function o365_update_9001() {
  $update_manager = \Drupal::entityDefinitionUpdateManager();
  $definition = $update_manager->getFieldStorageDefinition('o365_id', 'user');

  if (!empty($definition)) {
    $update_manager->uninstallFieldStorageDefinition($definition);
  }
}

/**
 * Install the "Microsoft 365 connector" entity type.
 */
function o365_update_10001() {
  $update_manager = \Drupal::entityDefinitionUpdateManager();
  $entity_type = \Drupal::entityTypeManager()->getDefinition('o365_connector');
  $update_manager->installEntityType($entity_type);
}

/**
 * Generate default "Microsoft 365 connector" entity.
 */
function o365_update_10002() {
  $default_settings = \Drupal::config('o365.api_settings');
  $redirect_login = $default_settings->get('redirect_login') ?? '';
  $auth_scopes = $default_settings->get('auth_scopes') ?? '';
  $entity_storage = \Drupal::entityTypeManager()->getStorage('o365_connector');
  if (($redirect_login || $auth_scopes) && !$entity_storage->load('default')) {
    $entity_storage
      ->create([
        'id' => 'default',
        'label' => 'Microsoft 365',
        'status' => TRUE,
        'redirect_login' => $redirect_login,
        'auth_scopes' => $auth_scopes,
      ])
      ->save();

    return t('Created a default Microsoft o365 connector.');
  }
}

/**
 * Remove the redundant "redirect_login" and "auth_scopes" configs.
 */
function o365_update_10003() {
  $config = \Drupal::configFactory()->getEditable('o365.api_settings');
  $config
    ->clear('redirect_login')
    ->clear('auth_scopes')
    ->save(TRUE);
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc