annotate core/modules/statistics/src/StatisticsSettingsForm.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\statistics;
Chris@0 4
Chris@0 5 use Drupal\Core\Extension\ModuleHandlerInterface;
Chris@0 6 use Drupal\Core\Form\ConfigFormBase;
Chris@0 7 use Drupal\Core\Config\ConfigFactoryInterface;
Chris@0 8 use Drupal\Core\Form\FormStateInterface;
Chris@0 9 use Symfony\Component\DependencyInjection\ContainerInterface;
Chris@0 10
Chris@0 11 /**
Chris@0 12 * Configure statistics settings for this site.
Chris@0 13 */
Chris@0 14 class StatisticsSettingsForm extends ConfigFormBase {
Chris@0 15
Chris@0 16 /**
Chris@0 17 * The module handler.
Chris@0 18 *
Chris@0 19 * @var \Drupal\Core\Extension\ModuleHandlerInterface
Chris@0 20 */
Chris@0 21 protected $moduleHandler;
Chris@0 22
Chris@0 23 /**
Chris@0 24 * Constructs a \Drupal\statistics\StatisticsSettingsForm object.
Chris@0 25 *
Chris@0 26 * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
Chris@0 27 * The factory for configuration objects.
Chris@0 28 * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
Chris@0 29 * The module handler.
Chris@0 30 */
Chris@0 31 public function __construct(ConfigFactoryInterface $config_factory, ModuleHandlerInterface $module_handler) {
Chris@0 32 parent::__construct($config_factory);
Chris@0 33
Chris@0 34 $this->moduleHandler = $module_handler;
Chris@0 35 }
Chris@0 36
Chris@0 37 /**
Chris@0 38 * {@inheritdoc}
Chris@0 39 */
Chris@0 40 public static function create(ContainerInterface $container) {
Chris@0 41 return new static(
Chris@0 42 $container->get('config.factory'),
Chris@0 43 $container->get('module_handler')
Chris@0 44 );
Chris@0 45 }
Chris@0 46
Chris@0 47 /**
Chris@0 48 * {@inheritdoc}
Chris@0 49 */
Chris@0 50 public function getFormId() {
Chris@0 51 return 'statistics_settings_form';
Chris@0 52 }
Chris@0 53
Chris@0 54 /**
Chris@0 55 * {@inheritdoc}
Chris@0 56 */
Chris@0 57 protected function getEditableConfigNames() {
Chris@0 58 return ['statistics.settings'];
Chris@0 59 }
Chris@0 60
Chris@0 61 /**
Chris@0 62 * {@inheritdoc}
Chris@0 63 */
Chris@0 64 public function buildForm(array $form, FormStateInterface $form_state) {
Chris@0 65 $config = $this->config('statistics.settings');
Chris@0 66
Chris@0 67 // Content counter settings.
Chris@0 68 $form['content'] = [
Chris@0 69 '#type' => 'details',
Chris@0 70 '#title' => t('Content viewing counter settings'),
Chris@0 71 '#open' => TRUE,
Chris@0 72 ];
Chris@0 73 $form['content']['statistics_count_content_views'] = [
Chris@0 74 '#type' => 'checkbox',
Chris@0 75 '#title' => t('Count content views'),
Chris@0 76 '#default_value' => $config->get('count_content_views'),
Chris@0 77 '#description' => t('Increment a counter each time content is viewed.'),
Chris@0 78 ];
Chris@0 79
Chris@0 80 return parent::buildForm($form, $form_state);
Chris@0 81 }
Chris@0 82
Chris@0 83 /**
Chris@0 84 * {@inheritdoc}
Chris@0 85 */
Chris@0 86 public function submitForm(array &$form, FormStateInterface $form_state) {
Chris@0 87 $this->config('statistics.settings')
Chris@0 88 ->set('count_content_views', $form_state->getValue('statistics_count_content_views'))
Chris@0 89 ->save();
Chris@0 90
Chris@0 91 // The popular statistics block is dependent on these settings, so clear the
Chris@0 92 // block plugin definitions cache.
Chris@0 93 if ($this->moduleHandler->moduleExists('block')) {
Chris@0 94 \Drupal::service('plugin.manager.block')->clearCachedDefinitions();
Chris@0 95 }
Chris@0 96
Chris@0 97 parent::submitForm($form, $form_state);
Chris@0 98 }
Chris@0 99
Chris@0 100 }