solrlog-1.0.1/solrlog.install
solrlog.install
<?php
/**
* @file
* Schema changing functions of Solr Log module.
*/
use Drupal\Core\Link;
use Drupal\Core\Url;
use Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend;
/**
* Implements hook_install().
*/
function solrlog_install() {
// Use first available Solr server for logging.
$solr_servers = \Drupal::entityTypeManager()
->getStorage('search_api_server')
->loadByProperties(['backend' => 'search_api_solr']);
if (empty($solr_servers)) {
\Drupal::messenger()->addWarning(t('Solr servers not found.'));
return;
}
\Drupal::configFactory()->getEditable('solrlog.settings')
->set('server', array_key_first($solr_servers))
->save();
}
/**
* Implements hook_uninstall().
*/
function solrlog_uninstall() {
// Delete all Solr documents related to module.
// This part copies SolariumTrait::getConnector()
$server = \Drupal::config('solrlog.settings')
->get('server');
if (!$server) {
return NULL;
}
try {
$backend = \Drupal::entityTypeManager()
->getStorage('search_api_server')
->load($server)
->getBackend();
if (!$backend instanceof SearchApiSolrBackend) {
return NULL;
}
}
catch (\Throwable) {
return NULL;
}
$connector = $backend->getSolrConnector();
$query = $connector->getUpdateQuery();
$query->addDeleteQuery('ss_module_id:solrlog')
->addCommit();
$connector->execute($query);
}
/**
* Implements hook_requirements().
*/
function solrlog_requirements($phase) {
$requirements = [];
if ($phase === 'runtime') {
$server = \Drupal::config('solrlog.settings')
->get('server');
$requirements['solrlog.server'] = [
'title' => t('Solr log server'),
'value' => $server ? t('Using @server', ['@server' => $server]) : 'No server configured',
'severity' => REQUIREMENT_WARNING,
'description' => Link::fromTextAndUrl(
t('Solr log settings'),
Url::fromRoute('solrlog.settings')
),
];
}
return $requirements;
}
