From aff0d9c1e819bb0a28d43f3cb862e1816cbf96ba Mon Sep 17 00:00:00 2001 From: SofianeLasri <alasri250@gmail.com> Date: Mon, 16 Aug 2021 15:45:20 +0200 Subject: [PATCH] =?UTF-8?q?15H45=20-=20Gestion=20de=20la=20racine=20de=20l?= =?UTF-8?q?'url=20am=C3=A9lior=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vbcms-core/functions.php | 84 ++++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 25 deletions(-) diff --git a/vbcms-core/functions.php b/vbcms-core/functions.php index 5087700..5d09cd2 100644 --- a/vbcms-core/functions.php +++ b/vbcms-core/functions.php @@ -17,36 +17,70 @@ function loadModule($type, $moduleAlias, $moduleParams){ if ($type=="client") { if($moduleAlias != "none"){ - // On cherche le module correspondant à l'alias clientAccess dans la liste des modules activés - $response = $bdd->prepare("SELECT * FROM `vbcms-activatedExtensions` WHERE clientAccess=? AND type='module'"); - $response->execute([$moduleAlias]); - $response = $response->fetch(PDO::FETCH_ASSOC); + // Dans un premier temps on va regarder si un module gère l'index + $isExistAModuleHandleClientRoot = $bdd->query("SELECT * FROM `vbcms-activatedExtensions` WHERE clientAccess='' AND type='module'")->fetch(PDO::FETCH_ASSOC); - if (!empty($response)) { - //include $GLOBALS['vbcmsRootPath'].'/vbcms-content/modules'.$response["path"]."/pageHandler.php"; // Le module appelé va se charger du reste - $calledmodule = new module($response["name"]); - $calledmodule->call($moduleParams, $type); - } else { - // Aucun module d'activé ne se charge de ce chemin - if (empty($moduleAlias)) { - // Ici on est donc sur l'index du site - // Si aucun module ne s'en charge, on va afficher la page par défaut - include $GLOBALS['vbcmsRootPath'].'/vbcms-core/defaultPages/index.php'; - } else { - // Il s'agit peut-être d'une page du module gérant l'index du site Internet - // Nous allons donc vérifier si un module gère l'index, puis on va l'éxecuter - $response = $bdd->query("SELECT * FROM `vbcms-activatedExtensions` WHERE clientAccess='' AND type='module'")->fetch(PDO::FETCH_ASSOC); - - if (!empty($response)) { - // On a trouvé un module qui gère l'index, au cas où cet alias n'existe pas, ce sera ce module qui gérera la page 404 + if(!empty($isExistAModuleHandleClientRoot)){ + // Un modèle gère l'index + // On va donc l'appeler pour savoir s'il gère cette url + + $rootModuleParameters = $moduleParams; // Je duplique la liste des paramètres pour ce module + array_unshift($rootModuleParameters,$moduleAlias); // Et je lui ajoute en premier ce que cette fonction considère comme un alias + // J'ai fais ça car vu que ce module gère la racine de l'url, elle n'a pas d'alias. Donc le premier paramètre n'est pas un alias. + + $calledmodule = new module($isExistAModuleHandleClientRoot["name"]); + $calledmodule->call($rootModuleParameters, $type); // Ressort simplement 404 s'il ne gère pas cette page + $modulePageContent = ob_get_clean(); // Je récupère la sortie pour ensuite la comparer + + if($modulePageContent == "404"){ + // Ce module ne gère donc pas l'url + + // On va donc vérifier s'il existe un module qui gère cet alias + $response = $bdd->prepare("SELECT * FROM `vbcms-activatedExtensions` WHERE clientAccess=? AND type='module'"); + $response->execute([$moduleAlias]); + $response = $response->fetch(PDO::FETCH_ASSOC); + + if(!empty($response)){ + // Il existe, on va donc l'appeler $calledmodule = new module($response["name"]); $calledmodule->call($moduleParams, $type); - //include $GLOBALS['vbcmsRootPath'].'/vbcms-content/modules'.$response["path"]."/pageHandler.php"; // Le module appelé va se charger du reste + $modulePageContent = ob_get_clean(); // Pour récupérer la sortie + if($modulePageContent == "404"){ + // On va afficher sa page 404 si l'extension renvoie 404 + array_unshift($moduleParams, "404"); // On ajoute 404 en premier afin que l'ext affiche la page 404 + $calledmodule->call($moduleParams, $type); + } else { + echo $modulePageContent; + } } else { - // Si on arrive ici c'est qu'il n'y a vraiment aucun module qui gère cet alias - show404($type); + // Aucune extension ne gère ce lien, on va donc appeler la page 404 de l'extension gérant cet alias + array_unshift($moduleParams, "404"); // On ajoute 404 en premier afin que l'ext affiche la page 404 + $calledmodule->call($moduleParams, $type); } - + } else { + echo $modulePageContent; + } + } else { + // Aucune extension ne gère l'index + // On va donc vérifier s'il existe un module qui gère cet alias + $response = $bdd->prepare("SELECT * FROM `vbcms-activatedExtensions` WHERE clientAccess=? AND type='module'"); + $response->execute([$moduleAlias]); + $response = $response->fetch(PDO::FETCH_ASSOC); + + if(!empty($response)){ + // Il existe, on va donc l'appeler + $calledmodule = new module($response["name"]); + $modulePageContent = $calledmodule->call($moduleParams, $type); + if($modulePageContent == "404"){ + // On va afficher sa page 404 si l'extension renvoie 404 + array_unshift($moduleParams, "404"); // On ajoute 404 en premier afin que l'ext affiche la page 404 + $calledmodule->call($moduleParams, $type); + } else { + echo $modulePageContent; + } + } else { + // Aucune extension ne gère cet alias + show404($type); } } } else show404($type); -- GitLab