View source
<?php
namespace Drupal\db_maintenance\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;
class DbMaintenanceAdminSettings extends ConfigFormBase {
public function getFormId() {
return 'db_maintenance_admin_settings';
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$config = $this
->config('db_maintenance.settings');
foreach (Element::children($form) as $variable) {
$config
->set($variable, $form_state
->getValue($form[$variable]['#parents']));
}
$config
->save();
if (method_exists($this, '_submitForm')) {
$this
->_submitForm($form, $form_state);
}
parent::submitForm($form, $form_state);
}
protected function getEditableConfigNames() {
return [
'db_maintenance.settings',
];
}
public function buildForm(array $form, \Drupal\Core\Form\FormStateInterface $form_state) {
global $databases;
drupal_add_css(drupal_get_path('module', 'db_maintenance') . '/db_maintenance.css');
$form = [];
$form['db_maintenance_log'] = [
'#type' => 'checkbox',
'#title' => 'Log OPTIMIZE queries',
'#default_value' => variable_get('db_maintenance_log', 0),
'#description' => t('If enabled, a watchdog entry will be made each time tables are optimized, containing information which tables were involved.'),
];
$options = [
0 => t('Run during every cron'),
3600 => t('Hourly'),
7200 => t('Bi-Hourly'),
86400 => t('Daily'),
172800 => t('Bi-Daily'),
604800 => t('Weekly'),
1209600 => t('Bi-Weekly'),
2592000 => t('Monthly'),
5184000 => t('Bi-Monthly'),
];
$form['db_maintenance_cron_frequency'] = [
'#type' => 'select',
'#title' => t('Optimize tables'),
'#options' => $options,
'#default_value' => variable_get('db_maintenance_cron_frequency', 86400),
'#description' => t('Select how often database tables should be optimized.') . ' ' . l(t('Optimize now.'), 'db_maintenance/optimize'),
];
$options = [];
$states = [
'visible' => [
':input[name="db_maintenance_all_tables"]' => [
'checked' => FALSE,
],
],
];
$form['db_maintenance_all_tables'] = [
'#type' => 'checkbox',
'#title' => t('Optimize all tables'),
'#default_value' => variable_get('db_maintenance_all_tables', 0),
'#description' => t('Automatically optimize all tables in the database(s) without having to select them first.'),
];
foreach ($databases as $db => $connection) {
$options = _db_maintenance_list_tables($db);
$form['db_maintenance_table_list_' . $connection['default']['database']] = [
'#type' => 'select',
'#title' => t('Tables in the !db database', [
'!db' => $connection['default']['database'] == 'default' ? 'Drupal' : $connection['default']['database'],
]),
'#options' => $options,
'#default_value' => variable_get('db_maintenance_table_list_' . $connection['default']['database'], ''),
'#description' => t('Selected tables will be optimized during cron runs.'),
'#multiple' => TRUE,
'#attributes' => [
'size' => 17,
],
'#states' => $states,
];
}
return parent::buildForm($form, $form_state);
}
}