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;
}

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

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