diff --git a/src/Classes/ModuleConverter.php b/src/Classes/ModuleConverter.php index 31a77166..dcb650fa 100644 --- a/src/Classes/ModuleConverter.php +++ b/src/Classes/ModuleConverter.php @@ -25,6 +25,7 @@ public static function convertToArray(Module $module): array 'sourceDir' => $module->getSourceDir(), 'sourceMmlcDir' => $module->getSourceMmlcDir(), 'version' => $module->getVersion(), + 'date' => $module->getDate(), 'shortDescription' => $module->getShortDescription(), 'description' => $module->getDescription(), 'developer' => $module->getDeveloper(), diff --git a/src/Classes/ModuleFactory.php b/src/Classes/ModuleFactory.php index 20691b0a..b5e0be8e 100644 --- a/src/Classes/ModuleFactory.php +++ b/src/Classes/ModuleFactory.php @@ -79,6 +79,7 @@ public static function createFromArray(array $array): Module $module->setSourceDir($array['sourceDir'] ?? self::DIR_MODULE_SRC); $module->setSourceMmlcDir($array['sourceMmlcDir'] ?? self::DIR_MODULE_SRC_MMLC); $module->setVersion($array['version'] ?? 'auto'); + $module->setDate($array['date'] ?? 'unknown'); $module->setShortDescription($array['shortDescription'] ?? ''); $module->setDescription($array['description'] ?? ''); $module->setDeveloper($array['developer'] ?? ''); diff --git a/src/Classes/ModuleInfo.php b/src/Classes/ModuleInfo.php index 8f1eff2f..47e3d4ed 100644 --- a/src/Classes/ModuleInfo.php +++ b/src/Classes/ModuleInfo.php @@ -66,6 +66,13 @@ class ModuleInfo */ protected $version; + /** + * Beispiel: 2023-06-20 19:42:32 + * + * @var string + */ + protected $date; + /** * Eine Kurzbeschreibung des Moduls in menschen lesbarer Form. * @@ -247,6 +254,16 @@ public function setVersion(string $value): void $this->version = $value; } + public function getDate(): string + { + return $this->date; + } + + public function setDate(string $value): void + { + $this->date = $value; + } + public function getShortDescription(): string { return $this->shortDescription; diff --git a/src/Classes/ModuleSorter.php b/src/Classes/ModuleSorter.php index df3f1e11..8f0f890c 100644 --- a/src/Classes/ModuleSorter.php +++ b/src/Classes/ModuleSorter.php @@ -82,4 +82,31 @@ public static function sortByVersion(array $modules): array }); return $modules; } + + /** + * @param Module[] $modules + * @return Module[] Return a array of modules sorted by version. + */ + public static function sortByDate(array $modules): array + { + usort($modules, function (Module $moduleA, Module $moduleB): int { + $dateA = $moduleA->getDate(); + if ($dateA === 'unknown') { + $dateA = '0000-00-00 00:00:00'; + } + + $dateB = $moduleB->getDate(); + if ($dateB === 'unknown') { + $dateB = '0000-00-00 00:00:00'; + } + + if ($dateA < $dateB) { + return 1; + } elseif ($dateA > $dateB) { + return -1; + } + return 0; + }); + return $modules; + } } diff --git a/src/Classes/ViewModels/ModuleViewModel.php b/src/Classes/ViewModels/ModuleViewModel.php index 2cec002e..fae5a649 100644 --- a/src/Classes/ViewModels/ModuleViewModel.php +++ b/src/Classes/ViewModels/ModuleViewModel.php @@ -169,6 +169,11 @@ public function getVersion(): string return $this->module->getVersion(); } + public function getDate(): string + { + return $this->module->getDate(); + } + public function isRemote(): bool { return $this->module->isRemote(); diff --git a/src/Templates/ModuleInfo.tmpl.php b/src/Templates/ModuleInfo.tmpl.php index 37c9f40e..13152c49 100644 --- a/src/Templates/ModuleInfo.tmpl.php +++ b/src/Templates/ModuleInfo.tmpl.php @@ -254,6 +254,11 @@