You are here

function search_api_solr_multilingual_requirements in Search API Multilingual Solr Search 8

Implements hook_requirements().

File

./search_api_solr_multilingual.install, line 11
Install, update, and uninstall functions for Search API Multilingual Solr.

Code

function search_api_solr_multilingual_requirements($phase) {
  $requirements = [];
  if ($phase == 'runtime') {
    $storage = \Drupal::entityTypeManager()
      ->getStorage('search_api_server');

    /** @var \Drupal\search_api\ServerInterface[] $servers */
    if ($servers = $storage
      ->loadByProperties([
      'backend' => 'search_api_solr_multilingual',
    ])) {
      foreach ($servers as $server) {
        $key = 'search_api_solr_multilingual_' . $server
          ->id();
        $requirements[$key] = [
          'title' => t('Multilingual Solr Server'),
          'value' => t('Schema complete'),
          'severity' => REQUIREMENT_OK,
          'description' => t('Schema on server <a href=":url">@server</a> contains all required language-specific fields.', [
            ':url' => $server
              ->toUrl('canonical')
              ->toString(),
            '@server' => $server
              ->label(),
          ]),
        ];

        /** @var \Drupal\search_api_solr_multilingual\SolrMultilingualBackendInterface $backend */
        $backend = $server
          ->getBackend();
        if ($backend
          ->isAvailable()) {
          $stats = $backend
            ->getSchemaLanguageStatistics();
          if ($missing_languages = array_filter($stats, function ($state) {
            return !$state;
          })) {
            $requirements[$key]['value'] = t('Schema incomplete');
            $requirements[$key]['severity'] = $backend
              ->hasLanguageUndefinedFallback() ? REQUIREMENT_WARNING : REQUIREMENT_ERROR;
            $requirements[$key]['description'] = t('There are some language-specific field types missing in schema of Solr server <a href=":url">@server</a>: @languages.', [
              ':url' => $server
                ->toUrl('canonical')
                ->toString(),
              '@server' => $server
                ->label(),
              '@languages' => implode(', ', array_keys($missing_languages)),
            ]);
          }
        }
        else {
          $requirements[$key]['value'] = t('Not reachable');
          $requirements[$key]['severity'] = REQUIREMENT_ERROR;
          $requirements[$key]['description'] = t('Solr server <a href=":url">@server</a> is not reachable.', [
            ':url' => $server
              ->toUrl('canonical')
              ->toString(),
            '@server' => $server
              ->label(),
          ]);
        }
      }
    }
  }
  return $requirements;
}