diff --git a/package_manager/src/Event/PreOperationStageEvent.php b/package_manager/src/Event/PreOperationStageEvent.php index 832677a82e8a3454c328e1ad8103622fff9c5ede..e60ef7b28cebaa7827d6cf3ab93359f7777daac5 100644 --- a/package_manager/src/Event/PreOperationStageEvent.php +++ b/package_manager/src/Event/PreOperationStageEvent.php @@ -10,6 +10,32 @@ use Drupal\package_manager\ValidationResult; */ abstract class PreOperationStageEvent extends StageEvent { + /** + * The validation results. + * + * @var \Drupal\package_manager\ValidationResult[] + */ + protected $results = []; + + /** + * Gets the validation results. + * + * @param int|null $severity + * (optional) The severity for the results to return. Should be one of the + * SystemManager::REQUIREMENT_* constants. + * + * @return \Drupal\package_manager\ValidationResult[] + * The validation results. + */ + public function getResults(?int $severity = NULL): array { + if ($severity !== NULL) { + return array_filter($this->results, function ($result) use ($severity) { + return $result->getSeverity() === $severity; + }); + } + return $this->results; + } + /** * Adds error information to the event. */ diff --git a/package_manager/src/Event/StageEvent.php b/package_manager/src/Event/StageEvent.php index 79a26a5ac3c2c430ebcce2d4f5f5262fcf6ce60e..b585eb846c4965e5a4dd738462ad9fbcc3e26649 100644 --- a/package_manager/src/Event/StageEvent.php +++ b/package_manager/src/Event/StageEvent.php @@ -10,13 +10,6 @@ use Symfony\Contracts\EventDispatcher\Event; */ abstract class StageEvent extends Event { - /** - * The validation results. - * - * @var \Drupal\package_manager\ValidationResult[] - */ - protected $results = []; - /** * The stage which fired this event. * @@ -44,23 +37,4 @@ abstract class StageEvent extends Event { return $this->stage; } - /** - * Gets the validation results. - * - * @param int|null $severity - * (optional) The severity for the results to return. Should be one of the - * SystemManager::REQUIREMENT_* constants. - * - * @return \Drupal\package_manager\ValidationResult[] - * The validation results. - */ - public function getResults(?int $severity = NULL): array { - if ($severity !== NULL) { - return array_filter($this->results, function ($result) use ($severity) { - return $result->getSeverity() === $severity; - }); - } - return $this->results; - } - } diff --git a/package_manager/src/Stage.php b/package_manager/src/Stage.php index 756a45a23f7b301760d8a60fce43d31383bb2ec0..4c71210753039c20e25c62ccd079bb7b02258422 100644 --- a/package_manager/src/Stage.php +++ b/package_manager/src/Stage.php @@ -14,6 +14,7 @@ use Drupal\package_manager\Event\PostRequireEvent; use Drupal\package_manager\Event\PreApplyEvent; use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\Event\PreDestroyEvent; +use Drupal\package_manager\Event\PreOperationStageEvent; use Drupal\package_manager\Event\PreRequireEvent; use Drupal\package_manager\Event\StageEvent; use Drupal\package_manager\Exception\StageException; @@ -341,9 +342,11 @@ class Stage { try { $this->eventDispatcher->dispatch($event); - $results = $event->getResults(); - if ($results) { - $error = new StageValidationException($results); + if ($event instanceof PreOperationStageEvent) { + $results = $event->getResults(); + if ($results) { + $error = new StageValidationException($results); + } } } catch (\Throwable $error) {