class BatchProcessor in Automatic Updates 8.2
A batch processor for updates.
Hierarchy
- class \Drupal\automatic_updates\BatchProcessor
Expanded class hierarchy of BatchProcessor
2 files declare their use of BatchProcessor
- UpdateReady.php in src/
Form/ UpdateReady.php - UpdaterForm.php in src/
Form/ UpdaterForm.php
File
- src/
BatchProcessor.php, line 12
Namespace
Drupal\automatic_updatesView source
class BatchProcessor {
/**
* Gets the updater service.
*
* @return \Drupal\automatic_updates\Updater
* The updater service.
*/
protected static function getUpdater() : Updater {
return \Drupal::service('automatic_updates.updater');
}
/**
* Records messages from a throwable, then re-throws it.
*
* @param \Throwable $error
* The caught exception.
* @param array $context
* The current context of the batch job.
*
* @throws \Throwable
* The caught exception, which will always be re-thrown once its messages
* have been recorded.
*/
protected static function handleException(\Throwable $error, array &$context) : void {
$error_messages = [
$error
->getMessage(),
];
if ($error instanceof UpdateException) {
foreach ($error
->getValidationResults() as $result) {
$messages = $result
->getMessages();
if (count($messages) > 1) {
array_unshift($messages, $result
->getSummary());
}
$error_messages = array_merge($error_messages, $messages);
}
}
foreach ($error_messages as $error_message) {
$context['results']['errors'][] = $error_message;
}
throw $error;
}
/**
* Calls the updater's begin() method.
*
* @param string[] $project_versions
* The project versions to be staged in the update, keyed by package name.
* @param array $context
* The current context of the batch job.
*
* @see \Drupal\automatic_updates\Updater::begin()
*/
public static function begin(array $project_versions, array &$context) : void {
try {
static::getUpdater()
->begin($project_versions);
} catch (\Throwable $e) {
static::handleException($e, $context);
}
}
/**
* Calls the updater's stageVersions() method.
*
* @param array $context
* The current context of the batch job.
*
* @see \Drupal\automatic_updates\Updater::stage()
*/
public static function stage(array &$context) : void {
try {
static::getUpdater()
->stage();
} catch (\Throwable $e) {
static::handleException($e, $context);
}
}
/**
* Calls the updater's commit() method.
*
* @param array $context
* The current context of the batch job.
*
* @see \Drupal\automatic_updates\Updater::commit()
*/
public static function commit(array &$context) : void {
try {
static::getUpdater()
->commit();
} catch (\Throwable $e) {
static::handleException($e, $context);
}
}
/**
* Calls the updater's clean() method.
*
* @param array $context
* The current context of the batch job.
*
* @see \Drupal\automatic_updates\Updater::clean()
*/
public static function clean(array &$context) : void {
try {
static::getUpdater()
->clean();
} catch (\Throwable $e) {
static::handleException($e, $context);
}
}
/**
* Finishes the stage batch job.
*
* @param bool $success
* Indicate that the batch API tasks were all completed successfully.
* @param array $results
* An array of all the results.
* @param array $operations
* A list of the operations that had not been completed by the batch API.
*/
public static function finishStage(bool $success, array $results, array $operations) : ?RedirectResponse {
if ($success) {
return new RedirectResponse(Url::fromRoute('automatic_updates.confirmation_page', [], [
'absolute' => TRUE,
])
->toString());
}
static::handleBatchError($results);
return NULL;
}
/**
* Finishes the commit batch job.
*
* @param bool $success
* Indicate that the batch API tasks were all completed successfully.
* @param array $results
* An array of all the results.
* @param array $operations
* A list of the operations that had not been completed by the batch API.
*/
public static function finishCommit(bool $success, array $results, array $operations) : ?RedirectResponse {
if ($success) {
\Drupal::messenger()
->addMessage('Update complete!');
// @todo redirect to update.php?
return new RedirectResponse(Url::fromRoute('update.status', [], [
'absolute' => TRUE,
])
->toString());
}
static::handleBatchError($results);
return NULL;
}
/**
* Handles a batch job that finished with errors.
*
* @param array $results
* The batch results.
*/
protected static function handleBatchError(array $results) : void {
if (isset($results['errors'])) {
foreach ($results['errors'] as $error) {
\Drupal::messenger()
->addError($error);
}
}
else {
\Drupal::messenger()
->addError("Update error");
}
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BatchProcessor:: |
public static | function | Calls the updater's begin() method. | |
BatchProcessor:: |
public static | function | Calls the updater's clean() method. | |
BatchProcessor:: |
public static | function | Calls the updater's commit() method. | |
BatchProcessor:: |
public static | function | Finishes the commit batch job. | |
BatchProcessor:: |
public static | function | Finishes the stage batch job. | |
BatchProcessor:: |
protected static | function | Gets the updater service. | |
BatchProcessor:: |
protected static | function | Handles a batch job that finished with errors. | |
BatchProcessor:: |
protected static | function | Records messages from a throwable, then re-throws it. | |
BatchProcessor:: |
public static | function | Calls the updater's stageVersions() method. |