@@ -51,25 +51,31 @@ public function initContent()
5151 parent ::initContent ();
5252
5353 $ suggestedModules = Module::getSuggestedModules ();
54+ $ modulesDirOnDisk = Module::getModulesDirOnDisk ();
55+ $ localModuleNames = array ();
5456
55- $ modulesToAdd = array ();
56- $ dirModules = ModuleCore::getModulesOnDisk ();
57- $ modules_name = array_column ($ suggestedModules , 'name ' );
58- foreach ($ dirModules as $ mod ) {
59- if (($ id = array_search ($ mod ->name , $ modules_name )) !== false ) {
60- if ($ mod ->installed ) {
61- unset($ suggestedModules [$ id ]);
62- } else {
63- $ suggestedModules [$ id ]->not_on_disk = false ;
64- }
65- } else {
66- if (!$ mod ->installed ) {
67- $ modulesToAdd [] = $ mod ;
57+ foreach ($ modulesDirOnDisk as $ moduleName ) {
58+ $ localModuleNames [Tools::strtolower ($ moduleName )] = true ;
59+ }
60+
61+ $ modules = array ();
62+
63+ foreach ($ suggestedModules as $ suggestedModule ) {
64+ $ moduleName = Tools::strtolower ($ suggestedModule ->name );
65+ if (isset ($ localModuleNames [$ moduleName ])) {
66+ continue ;
67+ }
68+ if (!empty ($ suggestedModule ->compatibility )) {
69+ $ minVersion = isset ($ suggestedModule ->compatibility ['from ' ]) ? $ suggestedModule ->compatibility ['from ' ] : null ;
70+ $ maxVersion = isset ($ suggestedModule ->compatibility ['to ' ]) ? $ suggestedModule ->compatibility ['to ' ] : null ;
71+
72+ if (($ minVersion && version_compare (_QLOAPPS_VERSION_ , $ minVersion , '< ' )) || ($ maxVersion && version_compare (_QLOAPPS_VERSION_ , $ maxVersion , '> ' ))) {
73+ continue ;
6874 }
6975 }
70- }
7176
72- $ modules = array_merge ($ suggestedModules , $ modulesToAdd );
77+ $ modules [] = $ suggestedModule ;
78+ }
7379
7480 $ link_admin_modules = $ this ->context ->link ->getAdminLink ('AdminModules ' , true );
7581 foreach ($ modules as $ key => $ module ) {
0 commit comments