function update_authorize_update_batch_finished
Same name in other branches
- 7.x modules/update/update.authorize.inc \update_authorize_update_batch_finished()
- 9 core/modules/update/update.authorize.inc \update_authorize_update_batch_finished()
- 8.9.x core/modules/update/update.authorize.inc \update_authorize_update_batch_finished()
- 10 core/modules/update/update.authorize.inc \update_authorize_update_batch_finished()
Batch callback: Performs actions when the authorized update batch is done.
This processes the results and stashes them into SESSION such that authorize.php will render a report. Also responsible for putting the site back online and clearing the update status storage after a successful update.
Parameters
bool $success: TRUE if the batch operation was successful; FALSE if there were errors.
array $results: An associative array of results from the batch operation.
1 string reference to 'update_authorize_update_batch_finished'
- update_authorize_run_update in core/
modules/ update/ update.authorize.inc - Updates existing projects when invoked by authorize.php.
File
-
core/
modules/ update/ update.authorize.inc, line 148
Code
function update_authorize_update_batch_finished($success, $results) {
foreach ($results['log'] as $messages) {
if (!empty($messages['#abort'])) {
$success = FALSE;
}
}
$offline = \Drupal::state()->get('system.maintenance_mode');
$session = \Drupal::request()->getSession();
// Unset the variable since it is no longer needed.
$maintenance_mode = $session->remove('maintenance_mode');
if ($success) {
// Now that the update completed, we need to clear the available update data
// and recompute our status, so prevent show bogus results.
_update_authorize_clear_update_status();
// Take the site out of maintenance mode if it was previously that way.
if ($offline && $maintenance_mode === FALSE) {
\Drupal::state()->set('system.maintenance_mode', FALSE);
$page_message = [
'message' => t('Update was completed successfully. Your site has been taken out of maintenance mode.'),
'type' => 'status',
];
}
else {
$page_message = [
'message' => t('Update was completed successfully.'),
'type' => 'status',
];
}
}
elseif (!$offline) {
$page_message = [
'message' => t('Update failed! See the log below for more information.'),
'type' => 'error',
];
}
else {
$page_message = [
'message' => t('Update failed! See the log below for more information. Your site is still in maintenance mode.'),
'type' => 'error',
];
}
// Since we're doing an update of existing code, always add a task for
// running update.php.
$url = Url::fromRoute('system.db_update');
$results['tasks'][] = t('Your modules have been downloaded and updated.');
$results['tasks'][] = [
'#type' => 'link',
'#url' => $url,
'#title' => t('Run database updates'),
// Since this is being called outside of the primary front controller,
// the base_url needs to be set explicitly to ensure that links are
// relative to the site root.
// @todo Simplify with https://www.drupal.org/node/2548095
'#options' => [
'absolute' => TRUE,
'base_url' => $GLOBALS['base_url'],
],
'#access' => $url->access(\Drupal::currentUser()),
];
// Set all these values into the SESSION so authorize.php can display them.
$session->set('authorize_results', [
'success' => $success,
'page_message' => $page_message,
'messages' => $results['log'],
'tasks' => $results['tasks'],
]);
$session->set('authorize_page_title', t('Update manager'));
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.