class AdvbanSettingsForm in Advanced ban 8
Configure advban settings for this site.
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\Core\Form\ConfigFormBase uses ConfigFormBaseTrait
- class \Drupal\advban\Form\AdvbanSettingsForm
- class \Drupal\Core\Form\ConfigFormBase uses ConfigFormBaseTrait
Expanded class hierarchy of AdvbanSettingsForm
1 string reference to 'AdvbanSettingsForm'
File
- src/
Form/ AdvbanSettingsForm.php, line 15
Namespace
Drupal\advban\FormView source
class AdvbanSettingsForm extends ConfigFormBase {
/**
* IP Manager variable.
*
* @var \Drupal\advban\AdvbanIpManagerInterface
*/
protected $ipManager;
/**
* Constructs a \Drupal\system\ConfigFormBase object.
*
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The factory for configuration objects.
* @param \Drupal\advban\AdvbanIpManagerInterface $ip_manager
* Store AdvbanIpManagerInterface manager.
*/
public function __construct(ConfigFactoryInterface $config_factory, AdvbanIpManagerInterface $ip_manager) {
parent::__construct($config_factory);
$this->ipManager = $ip_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('config.factory'), $container
->get('advban.ip_manager'));
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'advban_admin_settings';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return [
'advban.settings',
];
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this
->config('advban.settings');
$form['advban_expiry_durations'] = [
'#type' => 'textarea',
'#title' => $this
->t('Expiry durations'),
'#default_value' => $config
->get('expiry_durations'),
'#description' => $this
->t("Must be in a format that <a href='@strtotime'>PHP's strtotime function</a> can interpret.", [
'@strtotime' => 'https://php.net/manual/function.strtotime.php',
]),
'#required' => TRUE,
];
$expiry_durations = $this->ipManager
->expiryDurations();
$default_expiry_duration = $config
->get('default_expiry_duration');
$expiry_durations_index = $this->ipManager
->expiryDurationIndex($expiry_durations, $default_expiry_duration);
$form['advban_default_expiry_duration'] = [
'#title' => $this
->t('Default IP ban expiry duration'),
'#type' => 'select',
'#options' => [
AdvbanHelper::ADVBAN_NEVER => $this
->t('Never'),
] + $expiry_durations,
'#default_value' => $expiry_durations_index,
'#description' => $this
->t('Select default expiration duration for ban.'),
];
$form['advban_save_last_expiry_duration'] = [
'#title' => $this
->t('Save last IP ban expiry duration'),
'#type' => 'checkbox',
'#default_value' => $config
->get('save_last_expiry_duration'),
'#description' => $this
->t('Change default expiry duration after each IP ban.'),
];
$form['advban_range_ip_format'] = [
'#title' => $this
->t('Range IP format'),
'#type' => 'textfield',
'#default_value' => $config
->get('range_ip_format') ?: '@ip_start ... @ip_end',
'#description' => $this
->t('Range IP format for IP list. Use @ip_start, @ip_end variables.'),
];
$form['advban_ban_text'] = [
'#title' => $this
->t('Ban text'),
'#type' => 'textarea',
'#default_value' => $config
->get('advban_ban_text') ?: '@ip has been banned',
'#description' => $this
->t('Format ban text. Use @ip variable.'),
];
$form['advban_ban_expire_text'] = [
'#title' => $this
->t('Ban text with expire'),
'#type' => 'textarea',
'#default_value' => $config
->get('advban_ban_expire_text') ?: '@ip has been banned up to @expiry_date',
'#description' => $this
->t('Format ban text with expire date. Use @ip, @expiry_date variables.'),
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, FormStateInterface $form_state) {
// Expiry durations validate.
$arr_advban_expiry_durations = explode("\n", $form_state
->getValue('advban_expiry_durations'));
// Check for wrong time formats.
foreach ($arr_advban_expiry_durations as $key => $duration) {
if (!strtotime($duration)) {
$form_state
->setErrorByName('advban_expiry_durations', $this
->t('Expiry time formats has wrong expiry time %duration.', [
'%duration' => $duration,
]));
}
$arr_advban_expiry_durations[$key] = trim($arr_advban_expiry_durations[$key]);
}
// Check for expiry durations doubles.
if (count($arr_advban_expiry_durations) != count(array_flip($arr_advban_expiry_durations))) {
$form_state
->setErrorByName('advban_expiry_durations', $this
->t('Expiry durations has dublicated items'));
}
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$this
->config('advban.settings')
->set('expiry_durations', $form_state
->getValue('advban_expiry_durations'))
->set('default_expiry_duration', $this->ipManager
->expiryDurations($form_state
->getValue('advban_default_expiry_duration')))
->set('save_last_expiry_duration', $form_state
->getValue('advban_save_last_expiry_duration'))
->set('range_ip_format', $form_state
->getValue('advban_range_ip_format'))
->set('advban_ban_text', $form_state
->getValue('advban_ban_text'))
->set('advban_ban_expire_text', $form_state
->getValue('advban_ban_expire_text'))
->save();
parent::submitForm($form, $form_state);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AdvbanSettingsForm:: |
protected | property | IP Manager variable. | |
AdvbanSettingsForm:: |
public | function |
Form constructor. Overrides ConfigFormBase:: |
|
AdvbanSettingsForm:: |
public static | function |
Instantiates a new instance of this class. Overrides ConfigFormBase:: |
|
AdvbanSettingsForm:: |
protected | function |
Gets the configuration names that will be editable. Overrides ConfigFormBaseTrait:: |
|
AdvbanSettingsForm:: |
public | function |
Returns a unique string identifying the form. Overrides FormInterface:: |
|
AdvbanSettingsForm:: |
public | function |
Form submission handler. Overrides ConfigFormBase:: |
|
AdvbanSettingsForm:: |
public | function |
Form validation handler. Overrides FormBase:: |
|
AdvbanSettingsForm:: |
public | function |
Constructs a \Drupal\system\ConfigFormBase object. Overrides ConfigFormBase:: |
|
ConfigFormBaseTrait:: |
protected | function | Retrieves a configuration object. | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormBase:: |
protected | property | The config factory. | 1 |
FormBase:: |
protected | property | The request stack. | 1 |
FormBase:: |
protected | property | The route match. | |
FormBase:: |
protected | function | Gets the config factory for this form. | 1 |
FormBase:: |
private | function | Returns the service container. | |
FormBase:: |
protected | function | Gets the current user. | |
FormBase:: |
protected | function | Gets the request object. | |
FormBase:: |
protected | function | Gets the route match. | |
FormBase:: |
protected | function | Gets the logger for a specific channel. | |
FormBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
FormBase:: |
public | function | Resets the configuration factory. | |
FormBase:: |
public | function | Sets the config factory for this form. | |
FormBase:: |
public | function | Sets the request stack object to use. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |