container = $container; $this->processCheckExtensions(); } private function processCheckExtensions(): void { $errorMessageList = []; $this->processCheckExtension('Advanced Pack', '2.13.9', $errorMessageList); $this->processCheckExtension('Real Estate', '1.6.2', $errorMessageList); if (!count($errorMessageList)) { return; } $message = implode("\n\n", $errorMessageList); throw new Error($message); } private function processCheckExtension(string $name, string $minVersion, array &$errorMessageList): void { $em = $this->container->get('entityManager'); $extension = $em->getRDBRepository('Extension') ->where([ 'name' => $name, 'isInstalled' => true, ]) ->findOne(); if (!$extension) { return; } $version = $extension->get('version'); if (version_compare($version, $minVersion, '>=')) { return; } $message = "EspoCRM 7.4 is not compatible with '{$name}' extension of versions lower than {$minVersion}. " . "Please upgrade the extension or uninstall it."; $errorMessageList[] = $message; } }