Issue #2903183 by amateescu, jkovell, dawehner: Don't run cron after updating cron settings
parent
64ffc1ff4d
commit
0846b231ef
|
@ -16,6 +16,7 @@ use Drupal\Core\Form\ConfigFormBaseTrait;
|
|||
* Configure cron settings for this site.
|
||||
*/
|
||||
class CronForm extends FormBase {
|
||||
|
||||
use ConfigFormBaseTrait;
|
||||
|
||||
/**
|
||||
|
@ -104,6 +105,7 @@ class CronForm extends FormBase {
|
|||
$form['run'] = [
|
||||
'#type' => 'submit',
|
||||
'#value' => t('Run cron'),
|
||||
'#submit' => ['::runCron'],
|
||||
];
|
||||
$status = '<p>' . $this->t('Last run: %time ago.', ['%time' => $this->dateFormatter->formatTimeDiffSince($this->state->get('system.cron_last'))]) . '</p>';
|
||||
$form['status'] = [
|
||||
|
@ -145,22 +147,25 @@ class CronForm extends FormBase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Runs cron and reloads the page.
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
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.
|
||||
/**
|
||||
* Form submission handler for running cron manually.
|
||||
*/
|
||||
public function runCron(array &$form, FormStateInterface $form_state) {
|
||||
if ($this->cron->run()) {
|
||||
drupal_set_message(t('Cron ran successfully.'));
|
||||
drupal_set_message($this->t('Cron ran successfully.'));
|
||||
}
|
||||
else {
|
||||
drupal_set_message(t('Cron run failed.'), 'error');
|
||||
drupal_set_message($this->t('Cron run failed.'), 'error');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -105,9 +105,19 @@ class CronRunTest extends WebTestBase {
|
|||
// the time will start at 1 January 1970.
|
||||
$this->assertNoText('years');
|
||||
|
||||
$this->drupalPostForm(NULL, [], t('Save configuration'));
|
||||
$this->assertText(t('The configuration options have been saved.'));
|
||||
$cron_last = time() - 200;
|
||||
\Drupal::state()->set('system.cron_last', $cron_last);
|
||||
|
||||
$this->drupalPostForm(NULL, [], 'Save configuration');
|
||||
$this->assertText('The configuration options have been saved.');
|
||||
$this->assertUrl('admin/config/system/cron');
|
||||
|
||||
// Check that cron does not run when saving the configuration form.
|
||||
$this->assertEqual($cron_last, \Drupal::state()->get('system.cron_last'), 'Cron does not run when saving the configuration form.');
|
||||
|
||||
// Check that cron runs when triggered manually.
|
||||
$this->drupalPostForm(NULL, [], 'Run cron');
|
||||
$this->assertTrue($cron_last < \Drupal::state()->get('system.cron_last'), 'Cron runs when triggered manually.');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue