easychart-8.x-3.5/src/Form/SettingsForm.php
src/Form/SettingsForm.php
<?php namespace Drupal\easychart\Form; use Drupal\Core\Form\ConfigFormBase; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Drupal\Core\Form\FormStateInterface; /** * Settings form. */ class SettingsForm extends ConfigFormBase { /** * Date formatter. * * @var \Drupal\Core\Datetime\DateFormatterInterface */ protected $dateFormatter; /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { $instance = parent::create($container); $instance->dateFormatter = $container->get('date.formatter'); return $instance; } /** * {@inheritdoc} */ public function getFormId(): string { return 'easychart_admin_settings_form'; } /** * {@inheritdoc} */ protected function getEditableConfigNames(): array { return [ 'easychart.settings', ]; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL): array { $config = $this->config('easychart.settings'); $options = [3600, 10800, 21600, 43200, 86400, 604800]; $form['url_update_frequency'] = [ '#type' => 'select', '#options' => [0 => $this->t('Never')] + array_map( [$this->dateFormatter, 'formatInterval'], array_combine($options, $options) ), '#title' => $this->t('External data update interval'), '#description' => $this->t('Data from external csv files are cached for performance reasons. Decide how often this data should be refreshed.'), '#default_value' => $config->get('url_update_frequency'), ]; return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $values = $form_state->getValues(); $this->config('easychart.settings') ->set('url_update_frequency', $values['url_update_frequency']) ->save(); } }