container = $container; $this->processCheckExtensions(); } private function processCheckExtensions(): void { $errorMessageList = []; $this->processCheckExtension('Advanced Pack', '2.8.0', $errorMessageList); $this->processCheckExtension('Sales Pack', '1.1.4', $errorMessageList); $this->processCheckExtension('Outlook Integration', '1.2.5', $errorMessageList); $this->processCheckExtension('MailChimp Integration', '1.0.8', $errorMessageList); $this->processCheckExtension('Real Estate', '1.5.0', $errorMessageList); $this->processCheckExtension('VoIP Integration', '1.17.3', $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->getRepository('Extension') ->where([ 'name' => $name, 'isInstalled' => true, ]) ->findOne(); if (!$extension) { return; } $version = $extension->get('version'); if (version_compare($version, $minVersion, '>=')) { return; } $message = "EspoCRM 7.0 is not compatible with '{$name}' extension of a version lower than {$minVersion}. " . "Please upgrade the extension or uninstall it. Then run the upgrade command again."; $errorMessageList[] = $message; } }