run(filterByClass: $filterByClass); } #[\Override] public function runByCategory(string $filterByCategory): array { return $this->run(filterByCategory: $filterByCategory); } #[\Override] public function runAll(): array { return $this->run(); } private function run(?string $filterByCategory = null, ?string $filterByClass = null): array { $results = []; $setupChecks = $this->coordinator->getRegistrationContext()->getSetupChecks(); foreach ($setupChecks as $setupCheck) { /** @var ISetupCheck $setupCheckObject */ $setupCheckObject = Server::get($setupCheck->getService()); if ($filterByCategory !== null && $filterByCategory !== $setupCheckObject->getCategory()) { continue; } if ($filterByClass !== null && $filterByClass !== get_class($setupCheckObject)) { continue; } $this->logger->debug('Running check ' . get_class($setupCheckObject)); try { $setupResult = $setupCheckObject->run(); } catch (\Throwable $t) { $setupResult = SetupResult::error("An exception occurred while running the setup check:\n$t"); $this->logger->error('Exception running check ' . get_class($setupCheckObject) . ': ' . $t->getMessage(), ['exception' => $t]); } $setupResult->setName($setupCheckObject->getName()); $category = $setupCheckObject->getCategory(); $results[$category] ??= []; $results[$category][$setupCheckObject::class] = $setupResult; } return $results; } }