From cbf65feb093f585bb8fbf1adcc74a35d6be0e70a Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 30 Mar 2023 09:46:53 +0300 Subject: [PATCH] before-upgrade script --- upgrades/7.4/scripts/BeforeUpgrade.php | 86 ++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 upgrades/7.4/scripts/BeforeUpgrade.php diff --git a/upgrades/7.4/scripts/BeforeUpgrade.php b/upgrades/7.4/scripts/BeforeUpgrade.php new file mode 100644 index 0000000000..9bf4ffeace --- /dev/null +++ b/upgrades/7.4/scripts/BeforeUpgrade.php @@ -0,0 +1,86 @@ +container = $container; + + $this->processCheckExtensions(); + } + + private function processCheckExtensions(): void + { + $errorMessageList = []; + + $this->processCheckExtension('Advanced Pack', '2.13.9', $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; + } +}