Newer
Older

Lucas Hedding
committed
<?php
/**
* @file
* Contains hook implementations for Automatic Updates.

Lucas Hedding
committed
*/
use Drupal\automatic_updates\CronUpdater;
use Drupal\automatic_updates\Validation\AdminReadinessMessages;
use Drupal\Core\Form\FormStateInterface;

Lucas Hedding
committed
use Drupal\Core\Url;

Lucas Hedding
committed
/**
* Implements hook_page_top().
*/
function automatic_updates_page_top() {
/** @var \Drupal\automatic_updates\Validation\AdminReadinessMessages $readiness_messages */
$readiness_messages = \Drupal::classResolver(AdminReadinessMessages::class);
$readiness_messages->displayAdminPageMessages();
}
/**
* Implements hook_cron().
*/
function automatic_updates_cron() {
/** @var \Drupal\automatic_updates\CronUpdater $cron_updater */
$cron_updater = \Drupal::classResolver(CronUpdater::class);
$cron_updater->handleCron();
/** @var \Drupal\automatic_updates\Validation\ReadinessValidationManager $checker_manager */
$checker_manager = \Drupal::service('automatic_updates.readiness_validation_manager');
$last_results = $checker_manager->getResults();
$last_run_time = $checker_manager->getLastRunTime();
// Do not run readiness checks more than once an hour unless there are no
// results available.
if ($last_results === NULL || !$last_run_time || \Drupal::time()->getRequestTime() - $last_run_time > 3600) {
$checker_manager->run();

Lucas Hedding
committed
}

Lucas Hedding
committed
}
/**
* Implements hook_modules_installed().
*/
function automatic_updates_modules_installed() {
// Run the readiness checkers if needed when any modules are installed in
// case they provide readiness checker services.
/** @var \Drupal\automatic_updates\Validation\ReadinessValidationManager $checker_manager */
$checker_manager = \Drupal::service('automatic_updates.readiness_validation_manager');
$checker_manager->runIfNoStoredResults();
}
/**
* Implements hook_modules_uninstalled().
*/
function automatic_updates_modules_uninstalled() {
// Run the readiness checkers if needed when any modules are uninstalled in
// case they provided readiness checker services.
/** @var \Drupal\automatic_updates\Validation\ReadinessValidationManager $checker_manager */
$checker_manager = \Drupal::service('automatic_updates.readiness_validation_manager');
$checker_manager->runIfNoStoredResults();
}

Lucas Hedding
committed
/**
* Implements hook_form_FORM_ID_alter() for 'update_manager_update_form'.

Lucas Hedding
committed
*/
function automatic_updates_form_update_manager_update_form_alter(&$form, FormStateInterface $form_state, $form_id) {
// Remove current message that core updates are not supported with a link to
// use this modules form.
if (isset($form['manual_updates']['#rows']['drupal']['data']['title'])) {

Kunal Sachdev
committed
$current_route = \Drupal::routeMatch()->getRouteName();
if ($current_route === 'update.module_update') {
$redirect_route = 'automatic_updates.module_update';
}
elseif ($current_route === 'update.report_update') {
$redirect_route = 'automatic_updates.report_update';
}
if (!empty($redirect_route)) {
$core_updates_message = t(
'<h2>Core updates required</h2>Drupal core updates are supported by the enabled <a href="@url">Automatic Updates module</a>',
['@url' => Url::fromRoute($redirect_route)->toString()]
);
$form['manual_updates']['#prefix'] = $core_updates_message;
}