function search_api_solr_requirements in Search API Solr 8.2
Same name and namespace in other branches
- 8.3 search_api_solr.install \search_api_solr_requirements()
- 8 search_api_solr.install \search_api_solr_requirements()
- 7 search_api_solr.install \search_api_solr_requirements()
- 4.x search_api_solr.install \search_api_solr_requirements()
Implements hook_requirements().
1 call to search_api_solr_requirements()
- search_api_solr_help in ./
search_api_solr.module - Implements hook_help().
File
- ./
search_api_solr.install, line 12
Code
function search_api_solr_requirements($phase) {
$requirements = [];
if ($phase == 'install') {
if (!class_exists('\\Solarium\\Core\\Client\\Request')) {
$requirements['search_api_solr_library'] = [
'description' => t('Solr search requires the solarium/solarium library.'),
'severity' => REQUIREMENT_ERROR,
];
}
}
elseif ($phase == 'runtime') {
$servers = search_api_solr_get_servers();
$count = 0;
$unavailable = 0;
$multiple_indexes = 0;
$last = NULL;
foreach ($servers as $server_id => $server) {
if (!$server
->getBackend()
->isAvailable()) {
++$unavailable;
$last = $server;
}
$indexes = $server
->getIndexes();
if (count($indexes) > 1) {
$active = 0;
foreach ($indexes as $index) {
if ($index
->status()) {
++$active;
}
}
if ($active > 1) {
++$multiple_indexes;
}
}
++$count;
}
if (!$count) {
return [];
}
$requirements['search_api_solr'] = [
'title' => \Drupal::translation()
->translate('Solr servers'),
'value' => \Drupal::translation()
->formatPlural($count, '1 server', '@count servers'),
];
if ($unavailable) {
if ($unavailable == 1) {
$requirements['search_api_solr']['description'] = \Drupal::translation()
->translate('The Solr server of <a href=":url">%name</a> could not be reached.', [
':url' => Url::fromRoute('entity.search_api_server.canonical', [
'search_api_server' => $last
->id(),
])
->toString(),
'%name' => $last
->label(),
]);
}
else {
$requirements['search_api_solr']['description'] = \Drupal::translation()
->translate('@count Solr servers could not be reached.', [
'@count' => $unavailable,
]);
}
$requirements['search_api_solr']['severity'] = REQUIREMENT_ERROR;
}
else {
$requirements['search_api_solr']['description'] = \Drupal::translation()
->formatPlural($count, 'The Solr server could be reached.', 'All @count Solr servers could be reached.');
$requirements['search_api_solr']['severity'] = REQUIREMENT_OK;
}
$requirements['search_api_solr_multiple_indexes'] = [
'title' => \Drupal::translation()
->translate('Solr servers with multiple indexes'),
'value' => \Drupal::translation()
->formatPlural($count, '1 server', '@count servers'),
];
if ($multiple_indexes) {
// @todo Warn if autocomplete uses an implementation that is not suitable
// for multiple indexes per core. But we need the possibility to turn that
// off if the user acknowledged it because he might really want to have
// it like this as a feature.
}
foreach ($servers as $server) {
$backend = $server
->getBackend();
if ($backend instanceof SolrMultilingualBackendInterface) {
$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(),
]),
];
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;
}