SolrConfigForm.php in Search API Solr 8.3
File
src/Form/SolrConfigForm.php
View source
<?php
namespace Drupal\search_api_solr\Form;
use Drupal\Component\Utility\Html;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Datetime\DateFormatterInterface;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\search_api\SearchApiException;
use Drupal\search_api\ServerInterface;
use Drupal\search_api_solr\Plugin\search_api\backend\SearchApiSolrBackend;
use Drupal\search_api_solr\Utility\Utility as SearchApiSolrUtility;
use Symfony\Component\DependencyInjection\ContainerInterface;
class SolrConfigForm extends FormBase {
protected $dateFormatter;
public function __construct(DateFormatterInterface $date_formatter) {
$this->dateFormatter = $date_formatter;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('date.formatter'));
}
public function getFormId() {
return 'solr_config_form';
}
public function buildForm(array $form, FormStateInterface $form_state, ServerInterface $search_api_server = NULL) {
$form['#title'] = $this
->t('List of configuration files found');
try {
$files_list = $search_api_server ? SearchApiSolrUtility::getServerFiles($search_api_server) : [];
if (empty($files_list)) {
$form['info']['#markup'] = $this
->t('No files found.');
return $form;
}
$form['files_tabs'] = [
'#type' => 'vertical_tabs',
];
foreach ($files_list as $file_name => $file_info) {
$escaped_file_name = Html::escape($file_name);
$form['files'][$file_name] = [
'#type' => 'details',
'#title' => $escaped_file_name,
'#group' => 'files_tabs',
];
$data = '<h3>' . $escaped_file_name . '</h3>';
if (isset($file_info['modified'])) {
$data .= '<p><em>' . $this
->t('Last modified: @time.', [
'@time' => $this->dateFormatter
->format(strtotime($file_info['modified'])),
]) . '</em></p>';
}
if ($file_info['size'] > 0) {
$backend = $search_api_server
->getBackend();
$file_data = $backend
->getSolrConnector()
->getFile($file_name);
$data .= '<pre><code>' . Html::escape($file_data
->getBody()) . '</code></pre>';
}
else {
$data .= '<p><em>' . $this
->t('The file is empty.') . '</em></p>';
}
$form['files'][$file_name]['data']['#markup'] = $data;
}
} catch (SearchApiException $e) {
watchdog_exception('search_api_solr', $e, '%type while retrieving config files of Solr server @server: @message in %function (line %line of %file).', [
'@server' => $search_api_server
->label(),
]);
$form['info']['#markup'] = $this
->t('An error occured while trying to load the list of files.');
}
return $form;
}
public function submitForm(array &$form, FormStateInterface $form_state) {
}
public function access(ServerInterface $search_api_server) {
return AccessResult::allowedIf($search_api_server
->hasValidBackend() && $search_api_server
->getBackend() instanceof SearchApiSolrBackend)
->addCacheableDependency($search_api_server);
}
}