Newer
Older
<?php
namespace Drupal\views_ui\Form;
Angie Byron
committed
use Drupal\Core\Form\ConfigFormBase;
Dries Buytaert
committed
use Drupal\Core\Form\FormStateInterface;
catch
committed
use Drupal\views\Views;
Angie Byron
committed
/**
* Form builder for the advanced admin settings page.
*/
Angie Byron
committed
class AdvancedSettingsForm extends ConfigFormBase {
/**
* {@inheritdoc}
Alex Pott
committed
public function getFormId() {
return 'views_ui_admin_settings_advanced';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return ['views.settings'];
}
* {@inheritdoc}
Dries Buytaert
committed
public function buildForm(array $form, FormStateInterface $form_state) {
$form = parent::buildForm($form, $form_state);
Alex Pott
committed
$config = $this->config('views.settings');
$form['cache'] = [
'#type' => 'details',
'#title' => $this->t('Caching'),
Angie Byron
committed
'#open' => TRUE,
];
$form['cache']['skip_cache'] = [
'#type' => 'checkbox',
'#title' => $this->t('Disable views data caching'),
'#description' => $this->t("Views caches data about tables, modules and views available, to increase performance. By checking this box, Views will skip this cache and always rebuild this data when needed. This can have a serious performance impact on your site."),
Angie Byron
committed
'#default_value' => $config->get('skip_cache'),
];
$form['cache']['clear_cache'] = [
'#type' => 'submit',
'#value' => $this->t("Clear Views' cache"),
'#submit' => ['::cacheSubmit'],
];
$form['debug'] = [
'#type' => 'details',
'#title' => $this->t('Debugging'),
Angie Byron
committed
'#open' => TRUE,
];
$form['debug']['sql_signature'] = [
'#type' => 'checkbox',
'#title' => $this->t('Add Views signature to all SQL queries'),
'#description' => $this->t("All Views-generated queries will include the name of the views and display 'view-name:display-name' as a string at the end of the SELECT clause. This makes identifying Views queries in database server logs simpler, but should only be used when troubleshooting."),
Angie Byron
committed
'#default_value' => $config->get('sql_signature'),
];
catch
committed
$options = Views::fetchPluginNames('display_extender');
if (!empty($options)) {
$form['extenders'] = [
'#type' => 'details',
Angie Byron
committed
'#open' => TRUE,
];
$form['extenders']['display_extenders'] = [
'#title' => $this->t('Display extenders'),
Angie Byron
committed
'#default_value' => array_filter($config->get('display_extenders')),
'#options' => $options,
'#type' => 'checkboxes',
'#description' => $this->t('Select extensions of the views interface.')
];
}
return $form;
}
/**
* {@inheritdoc}
Dries Buytaert
committed
public function submitForm(array &$form, FormStateInterface $form_state) {
Alex Pott
committed
$this->config('views.settings')
Alex Pott
committed
->set('skip_cache', $form_state->getValue('skip_cache'))
->set('sql_signature', $form_state->getValue('sql_signature'))
->set('display_extenders', $form_state->getValue('display_extenders', []))
->save();
Angie Byron
committed
parent::submitForm($form, $form_state);
}
/**
* Submission handler to clear the Views cache.
*/
public function cacheSubmit() {
views_invalidate_cache();
drupal_set_message($this->t('The cache has been cleared.'));