strict(); // if ($measure) echo ("Global definitions : ".(get_microtime()-$start_time)."
"); // Récupération de la variable "page" // La variable $page sélectionne la page demandée // La page réllement affichée dépend de plusieurs choses : // - les droits associés à cette page // - l'existence de la page // - la réusite de la création de la page demandée // - etc ... if ( (isset($HTTP_GET_VARS)) and (isset($HTTP_GET_VARS["page"])) ) { $page = $HTTP_GET_VARS["page"]; } // if ($measure) echo ("Getting the page variable : ".(get_microtime()-$start_time)."
"); // Templates utilitaires $tpl->define( array ( 'mainPage' => "mainPage.tpl", 'login' => "login.tpl", 'loginFailed' => "loginFailed.tpl", 'loginInfo' => "loginInfo.tpl", 'menuItem' => "menuItem.tpl", 'menuCategory' => "menuCategory.tpl", 'restrictedAccess' => "restrictedAccess.tpl", 'pageNotFound' => "pageNotFound.tpl" ) ); // if ($measure) echo ("Defining page templates : ".(get_microtime()-$start_time)."
"); // L'appel à la fonction definePages() permet de définir les templates de pages // (contenu) et de récupérer les droits d'accès pour chaque page ("PUBLIC ou PRIVATE") $pages = getPages(); // if ($measure) echo ("Getting pages : ".(get_microtime()-$start_time)."
"); foreach($pages as $pageName=>$pageDescription) { $tpl->define( array($pageName => $pageDescription["target"]) ); } // if ($measure) echo ("Assigning page templates : ".(get_microtime()-$start_time)."
"); // On regarde si l'utilisateur s'est autentifié (s'il s'est connecté grâce à son login/mot de passe) $login = getLogin(); $password = getPassword(); $isUserAuthentified = auth($login, $password); global $donneeAutentifiee; // if ($measure) echo ("Get login info : ".(get_microtime()-$start_time)."
"); // Création de la page de login en fonction de l'état de connexion if ($isUserAuthentified) { // L'auteur est actuellement logué // On vérifie s'il ne serait pas en train d'essayer de se déloguer if (isset($HTTP_POST_VARS) and isset($HTTP_POST_VARS["action"]) and ($HTTP_POST_VARS["action"]=="logout")) { // S'il se délogue on détruit la session session_destroy(); $tpl->parse('TEMPLATE_LOGIN', "login"); $page = "accueil"; } else { // Sinon on affiche les données de sa connection en cours $tpl->assign('USER_LOGIN', $donneeAutentifiee["login"]); $tpl->assign('TEMPLATE_PERMISSIONS', $donneeAutentifiee["typeCompte"]); $tpl->parse('TEMPLATE_LOGIN', "loginInfo"); } } else { if (($login != "") or ($password != "")) { // On affiche le formulaire de connection (avec indiquation d'une erreur) $tpl->parse('TEMPLATE_LOGIN', "loginFailed"); } else { // On affiche le formulaire de connection $tpl->parse('TEMPLATE_LOGIN', "login"); } } // Assignation par défaut du template de scripts à vide. Ce template est peut etre // reassigne plus tard, en fonction du contexte $tpl->assign('TEMPLATE_SCRIPTS', ''); // if ($measure) echo ("Creating login tab : ".(get_microtime()-$start_time)."
"); // On execute les actions demandées, s'il y en a, car elles peuvent // conditioner le contenu qui va être affiché. L'action logout // est traitée séparément // Attention, la variable $page peut elle même être modifiée // à la suite d'une action, donc il vaut mieux ne pas manuellement // positionner la variable $page s'il n'existe pas de $HTTP_GET_VARS["page"] // (c'est probablement fait exprès, pour que la page dépende directement du résultat de l'action) processActions(); // if ($measure) echo ("Processing actions : ".(get_microtime()-$start_time)."
"); // Création du menu createMenu($page); // if ($measure) echo ("Creating menu : ".(get_microtime()-$start_time)."
"); // Création de la page de contenu, en fonction // des droits d'accès de l'utilisateur if (isset($pages[$page])) { $accessGranted = false; // L'accès à la page peut être permis si : // - la page est publique // - le compte de l'utilisateur donne droit à l'accès à cette page // (pour le dernier cas, il faut que $donneeAutentifiee[TYPE_ACCES] // soit égal à 1, où TYPE_ACCES est le type d'accès nécessité pour la page. // Le type d'accès est définit individuellement pour chaque page) if ($pages[$page]["access"]=="PUBLIC") { // Car la page était publique $accessGranted = true; } elseif (isUserAuthorised($pages[$page]["access"])) { // Car la page était accessible à partir du compte de l'utilisateur $accessGranted = true; } if ($accessGranted == true) { // Création de la page // Il s'agit de la gestion du contenu // dynamique d'une page, si la page en contient createPage($page); // On assemble le contenu final de la page $tpl->parse('TEMPLATE_MAIN_CONTENT', $page); } else { $tpl->assign(array('TEMPLATE_TARGET_PAGE' => $page)); $tpl->parse('TEMPLATE_MAIN_CONTENT', "restrictedAccess"); } } else { // La page ne semble pas exister. // On affiche le template pageNotFound comme contenu $tpl->parse('TEMPLATE_MAIN_CONTENT', "pageNotFound"); } // if ($measure) echo ("Creating content : ".(get_microtime()-$start_time)."
"); // La page ciblée par le login sera la page qui a été demandée précédemment (avec toutes les variables GET) $targetpage = "$page"; foreach ($HTTP_GET_VARS as $variable=>$value) { $targetpage = $targetpage ."&$variable=$value"; } $tpl->assign('TEMPLATE_TARGET_PAGE', $targetpage); // Calcul du temps d'exécution du script /// \todo trouver une méthode pour que ce temps inclus l'exécution de la commande parse et FastPrint des templates $tpl->assign('TEMPLATE_SCRIPT_EXECUTION_TIME', get_microtime()-$start_time); // Assemblage final qui donne la totalite de la page web affichée // contenant : // - le menu // - le formulaire de login // - la page de contenu $tpl->parse('MAIN_PAGE', "mainPage"); // On affiche la page sur le browser $tpl->FastPrint(); // Et c'est tout. } // Appel de la fonction principale du site main(); // fin exit; ?>