function UpdateHooks::pageTop
Implements hook_page_top().
File
-
core/
modules/ update/ src/ Hook/ UpdateHooks.php, line 65
Class
- UpdateHooks
- Hook implementations for update.
Namespace
Drupal\update\HookCode
public function pageTop() {
/** @var \Drupal\Core\Routing\AdminContext $admin_context */
$admin_context = \Drupal::service('router.admin_context');
$route_match = \Drupal::routeMatch();
if ($admin_context->isAdminRoute($route_match->getRouteObject()) && \Drupal::currentUser()->hasPermission('view update notifications')) {
$route_name = \Drupal::routeMatch()->getRouteName();
switch ($route_name) {
// These pages don't need additional nagging.
case 'update.theme_update':
case 'update.module_update':
case 'update.status':
case 'update.report_update':
case 'update.settings':
case 'system.status':
case 'system.theme_install':
case 'update.confirmation_page':
case 'system.batch_page.html':
return;
// If we are on the appearance or modules list, display a detailed report
// of the update status.
case 'system.themes_page':
case 'system.modules_list':
$verbose = TRUE;
break;
}
\Drupal::moduleHandler()->loadInclude('update', 'install');
$status = update_requirements('runtime');
foreach ([
'core',
'contrib',
] as $report_type) {
$type = 'update_' . $report_type;
// hook_requirements() supports render arrays therefore we need to render
// them before using
// \Drupal\Core\Messenger\MessengerInterface::addStatus().
if (isset($status[$type]['description']) && is_array($status[$type]['description'])) {
$status[$type]['description'] = \Drupal::service('renderer')->renderInIsolation($status[$type]['description']);
}
if (!empty($verbose)) {
if (isset($status[$type]['severity'])) {
if ($status[$type]['severity'] == REQUIREMENT_ERROR) {
\Drupal::messenger()->addError($status[$type]['description']);
}
elseif ($status[$type]['severity'] == REQUIREMENT_WARNING) {
\Drupal::messenger()->addWarning($status[$type]['description']);
}
}
}
else {
if (isset($status[$type]) && isset($status[$type]['reason']) && $status[$type]['reason'] === UpdateManagerInterface::NOT_SECURE) {
\Drupal::messenger()->addError($status[$type]['description']);
}
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.