X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fsystem%2Fsrc%2FForm%2FCronForm.php;fp=web%2Fcore%2Fmodules%2Fsystem%2Fsrc%2FForm%2FCronForm.php;h=d4726aac575220a81e8f8dcbc6dd8844716d5c2a;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/system/src/Form/CronForm.php b/web/core/modules/system/src/Form/CronForm.php new file mode 100644 index 000000000..d4726aac5 --- /dev/null +++ b/web/core/modules/system/src/Form/CronForm.php @@ -0,0 +1,166 @@ +state = $state; + $this->cron = $cron; + $this->dateFormatter = $date_formatter; + $this->moduleHandler = $module_handler; + } + + /** + * {@inheritdoc} + */ + protected function getEditableConfigNames() { + return ['system.cron']; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('config.factory'), + $container->get('state'), + $container->get('cron'), + $container->get('date.formatter'), + $container->get('module_handler') + ); + } + + /** + * {@inheritdoc} + */ + public function getFormId() { + return 'system_cron_settings'; + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state) { + $form['description'] = [ + '#markup' => '

' . t('Cron takes care of running periodic tasks like checking for updates and indexing content for search.') . '

', + ]; + $form['run'] = [ + '#type' => 'submit', + '#value' => t('Run cron'), + ]; + $status = '

' . $this->t('Last run: %time ago.', ['%time' => $this->dateFormatter->formatTimeDiffSince($this->state->get('system.cron_last'))]) . '

'; + $form['status'] = [ + '#markup' => $status, + ]; + + $cron_url = $this->url('system.cron', ['key' => $this->state->get('system.cron_key')], ['absolute' => TRUE]); + $form['cron_url'] = [ + '#markup' => '

' . t('To run cron from outside the site, go to @cron', [':cron' => $cron_url, '@cron' => $cron_url]) . '

', + ]; + + if (!$this->moduleHandler->moduleExists('automated_cron')) { + $form['automated_cron'] = [ + '#markup' => $this->t('Enable the Automated Cron module to allow cron execution at the end of a server response.'), + ]; + } + + $form['cron'] = [ + '#title' => t('Cron settings'), + '#type' => 'details', + '#open' => TRUE, + ]; + + $form['cron']['logging'] = [ + '#type' => 'checkbox', + '#title' => t('Detailed cron logging'), + '#default_value' => $this->config('system.cron')->get('logging'), + '#description' => 'Run times of individual cron jobs will be written to watchdog', + ]; + + $form['actions']['#type'] = 'actions'; + $form['actions']['submit'] = [ + '#type' => 'submit', + '#value' => t('Save configuration'), + '#button_type' => 'primary', + ]; + + return $form; + } + + /** + * Runs cron and reloads the page. + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + $this->config('system.cron') + ->set('logging', $form_state->getValue('logging')) + ->save(); + drupal_set_message(t('The configuration options have been saved.')); + + // Run cron manually from Cron form. + if ($this->cron->run()) { + drupal_set_message(t('Cron ran successfully.')); + } + else { + drupal_set_message(t('Cron run failed.'), 'error'); + } + + } + +}