diff --git a/src/Classes/App.php b/src/Classes/App.php index 14790422..748f484e 100644 --- a/src/Classes/App.php +++ b/src/Classes/App.php @@ -78,6 +78,23 @@ public static function getModulesDirName(): string return self::$modulesDir; } + public static function getMmlcVersion(): string + { + $path = self::getRoot() . '/config/version.json'; + if (!file_exists($path)) { + return ''; + } + + $json = file_get_contents($path); + $version = json_decode($json); + + if (!$version) { + return ''; // Better throw an exception + } + + return $version->version; + } + public static function start(): void { $serverRequest = self::getServerRequest(); diff --git a/src/Classes/Module.php b/src/Classes/Module.php index 90690964..642f3240 100644 --- a/src/Classes/Module.php +++ b/src/Classes/Module.php @@ -451,6 +451,10 @@ public function isCompatible(): bool return false; } + if (!$this->isCompatibleWithMmlc()) { + return false; + } + return true; } @@ -486,6 +490,26 @@ public function isCompatibleWithPhp(): bool return $comparator->satisfiesOr($phpVersionInstalled, $phpVersionContraint); } + /** + * Version 1.20.0 is the last version without isCompatibleWithMmlc() + */ + public function isCompatibleWithMmlc(): bool + { + $mmlcVersionInstalled = App::getMmlcVersion(); + if (!$mmlcVersionInstalled) { + return false; + } + + $mmlc = $this->getMmlc(); + $mmlcVersionContraint = $mmlc['version'] ?? '^1.20.0'; + if (!$mmlcVersionContraint) { + return true; + } + + $comparator = new Comparator(new Parser()); + return $comparator->satisfiesOr($mmlcVersionInstalled, $mmlcVersionContraint); + } + public function getTemplateFiles($file): array { $files = []; diff --git a/src/Classes/ModuleConverter.php b/src/Classes/ModuleConverter.php index 8c60941f..da7439f8 100644 --- a/src/Classes/ModuleConverter.php +++ b/src/Classes/ModuleConverter.php @@ -38,7 +38,8 @@ public static function convertToArray(Module $module): array 'price' => $module->getPrice(), 'autoload' => $module->getAutoload(), 'tags' => $module->getTags(), - 'php' => $module->getPhp() + 'php' => $module->getPhp(), + 'mmlc' => $module->getMmlc() ]; $moduleArray = [ diff --git a/src/Classes/ModuleFactory.php b/src/Classes/ModuleFactory.php index 7b89e4b0..9e999b3b 100644 --- a/src/Classes/ModuleFactory.php +++ b/src/Classes/ModuleFactory.php @@ -85,6 +85,7 @@ public static function createFromArray(array $array): Module $module->setAutoload($autoload); $module->setTags($array['tags'] ?? ''); $module->setPhp($array['php'] ?? []); + $module->setMmlc($array['mmlc'] ?? []); // Module $module->setLocalRootPath($array['localRootPath'] ?? ''); diff --git a/src/Classes/ModuleInfo.php b/src/Classes/ModuleInfo.php index 339157f3..8bf3b06b 100644 --- a/src/Classes/ModuleInfo.php +++ b/src/Classes/ModuleInfo.php @@ -169,13 +169,23 @@ class ModuleInfo * Mit welchen Version von PHP ist das Modul kompatible. * * Beispiel: [ - * 'version' => '^7.4 || ^8.0' + * 'version' => '^7.4.0 || ^8.0.0' * ] * * @var array */ protected $php; + /** + * Mit welchen Version von PHP ist das Modul kompatible. + * + * Beispiel: [ + * 'version' => '^1.20.0' + * ] + * + * @var array + */ + protected $mmlc; public function getName(): string { @@ -372,4 +382,14 @@ public function setPhp(array $value): void { $this->php = $value; } + + public function getMmlc(): array + { + return $this->mmlc; + } + + public function setMmlc(array $value): void + { + $this->mmlc = $value; + } } diff --git a/src/Classes/ViewModels/ModuleViewModel.php b/src/Classes/ViewModels/ModuleViewModel.php index 407a288b..033d9968 100644 --- a/src/Classes/ViewModels/ModuleViewModel.php +++ b/src/Classes/ViewModels/ModuleViewModel.php @@ -13,6 +13,7 @@ namespace RobinTheHood\ModifiedModuleLoaderClient\ViewModels; +use RobinTheHood\ModifiedModuleLoaderClient\App; use RobinTheHood\ModifiedModuleLoaderClient\Module; use RobinTheHood\ModifiedModuleLoaderClient\ModuleStatus; use RobinTheHood\ModifiedModuleLoaderClient\ShopInfo; @@ -203,7 +204,12 @@ public function getCompatibleStrings(): array if (!$this->module->isCompatibleWithPhp()) { $version = phpversion(); - $array[] = "Dieses Modul wurde noch nicht mit deiner PHP Version getestet. Du hast PHP Version $version installiert."; + $array[] = "Dieses Modul wurde noch nicht mit deiner PHP Version getestet. Du verwendest die PHP Version $version."; + } + + if (!$this->module->isCompatibleWithMmlc()) { + $version = App::getMmlcVersion(); + $array[] = "Dieses Modul wurde noch nicht mit deiner MMLC Version getestet. Du verwendest die MMLC Version $version."; } return $array; diff --git a/src/Templates/ModuleInfo.tmpl.php b/src/Templates/ModuleInfo.tmpl.php index 5646af7f..94c404c5 100644 --- a/src/Templates/ModuleInfo.tmpl.php +++ b/src/Templates/ModuleInfo.tmpl.php @@ -284,6 +284,19 @@ +