raven-8.x-2.x-dev/raven.install

raven.install
<?php

/**
 * @file
 * Requirements for Raven module.
 */

use Sentry\Client;
use Sentry\SentrySdk;

/**
 * Implements hook_requirements().
 *
 * @phpstan-ignore-next-line Hook implementations should not duplicate @return
 *   documentation.
 */
function raven_requirements(string $phase): array {
  $requirements['raven_curl'] = [
    'title' => t('cURL PHP extension'),
    'description' => t('Sentry requires the cURL PHP extension to send events.'),
  ];
  if (extension_loaded('curl')) {
    $requirements['raven_curl']['value'] = t('Enabled');
  }
  else {
    $requirements['raven_curl']['value'] = t('Not enabled');
    $requirements['raven_curl']['severity'] = REQUIREMENT_WARNING;
  }
  $requirements['raven_library']['title'] = t('Sentry PHP SDK');
  if (defined(Client::class . '::SDK_VERSION')) {
    $requirements['raven_library']['value'] = Client::SDK_VERSION;
    if ($phase == 'runtime') {
      if ($client = SentrySdk::getCurrentHub()->getClient()) {
        if ($client->getOptions()->getEnvironment()) {
          $requirements['raven_environment'] = [
            'title' => t('Sentry environment'),
            'value' => $client->getOptions()->getEnvironment(),
          ];
        }
        if ($client->getOptions()->getRelease()) {
          $requirements['raven_release'] = [
            'title' => t('Sentry release'),
            'value' => $client->getOptions()->getRelease(),
          ];
        }
        if ($client->getOptions()->getDsn()) {
          $requirements['raven_dsn'] = [
            'description' => t('Sentry client key is configured. Events will be sent to Sentry.'),
            'value' => t('Configured'),
          ];
        }
        else {
          $requirements['raven_dsn'] = [
            'description' => t('Sentry client key is not configured. No events will be sent to Sentry.'),
            'value' => gettype($client->getOptions()->getDsn()),
          ];
        }
        $requirements['raven_dsn']['title'] = t('Sentry DSN');
        $requirements['raven_trace']['title'] = t('Sentry reflection tracing');
        if (Drupal::config('raven.settings')->get('trace')) {
          $requirements['raven_trace']['description'] = t('Sentry reflection tracing is enabled, which may result in sensitive data being logged by Sentry.');
          $requirements['raven_trace']['value'] = t('Enabled');
        }
        else {
          $requirements['raven_trace']['value'] = t('Disabled');
        }
        if (Drupal::config('raven.settings')->get('http_compression')) {
          $requirements['raven_zlib']['title'] = t('Zlib PHP extension');
          $requirements['raven_zlib']['description'] = t('Sentry HTTP request compression requires the Zlib PHP extension.');
          $requirements['raven_zlib']['value'] = extension_loaded('zlib') ? t('Enabled') : t('Not enabled');
        }
      }
      else {
        try {
          Drupal::service('logger.raven')->getClient(FALSE, TRUE);
        }
        catch (Exception $e) {
          $requirements['raven_client'] = [
            'title' => t('Sentry client'),
            'value' => get_class($e),
            'description' => $e->getMessage(),
            'severity' => REQUIREMENT_ERROR,
          ];
        }
      }
      $requirements['raven_excimer']['title'] = t('Excimer PHP extension (optional)');
      $requirements['raven_excimer']['description'] = t('Sentry profiling requires the Excimer PHP extension.');
      $requirements['raven_excimer']['value'] = extension_loaded('excimer') ? t('Enabled') : t('Not enabled');
    }
  }
  else {
    $requirements['raven_library']['description'] = t('Sentry PHP SDK version 4.x is required by Raven module, but is not available. Run <code>composer require drupal/raven</code> to install dependencies automatically (or <code>composer require sentry/sentry:^4</code> to install the missing SDK only).');
    $requirements['raven_library']['severity'] = REQUIREMENT_ERROR;
    $requirements['raven_library']['value'] = t('Not found');
  }
  return $requirements;
}

/**
 * Remove obsolete polyfill_promise config.
 */
function raven_update_8201(): void {
  Drupal::configFactory()->getEditable('raven.settings')
    ->clear('polyfill_promise')
    ->save();
}

/**
 * Remove obsolete send_attempts config.
 */
function raven_update_8301(): void {
  Drupal::configFactory()->getEditable('raven.settings')
    ->clear('send_attempts')
    ->save();
}

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

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