Wikini
Déroulement de wakka.php
- Verification PHP >= 4.1.0 (il faut le tableau $_REQUEST)
- Désactivation des magics quotes (escape des guillemets de source externe) et suppression des slashes (stripslashes) sur les $_POST, $_GET et $_COOKIE respectivement variables transmise par la méthode GET (?var=hhhh) POST (formulaire) et par cookie (setcookie).
- Chargement configuration par défaut.
- [Optimisation] : ne pas charger s'il y a déja un fichier de configuration défini et si il est valide.
- Chargement fichier de configuration a partir de la variable d'environnement WAKKA_CONFIG sinon utilisation de wakka.config.php
- [Optimisation] : ne pas tester WAKKA_CONFIG.
- Fusion des variables de configuration avec la configuration par défaut.
- Si fichier "locked" présent alors PHP_AUTH (autorisation) sur user admin et mot de passe dans le fichier locked.
- Detection premiere installation ou changement de version et appel setup/default.php si changement.
- Demarrage session
- Lecture de la variable wakka et recupération du nom de la page et du nom de la méthode (une des methodes de handlers/page/...)
- Instantiation de l'objet Wakka et appel de la méthode Run avec comme argument page et méthode.
- [Optimisation] : pas d'appel DB si utilisation du cache.
- Run :
- Dans 1/3 des cas, maintenance de la base ($this->maintenance()) :
- suppression, pour toutes les pages, de tous les "referrers" dont la date de création est inferieure à la date du jour - durée de conservation referrers (referrers_purge_time (en jour))
- suppression des pages qui ne sont pas la dernière version et dont la date de création est inférieure à la date du jour - durée de conservation des pages.
- [Optimisation] : à ne faire qu'une fois par jour ? à ne faire qu'à des moments où la charge serveur est faible ?
- Lecture du fichier interwiki
- [Optimisation] : est ce bien utile ? à faire seulement si le contenu de la page contient un interwiki (problème : toutes les pages intègre un lien interwiki avec la chaine "Fonctionne avec WikiNi 0.4.3 (interwiki)) ?
- Méthode par défaut : show, si pas de page spécifiée : redirection sur la page racine (root_page)
- Si "user" n'est pas présent dans la session ($_SESSION) et que "name" est présent dans les cookies et qu'il y existe un utilisateur pour ce "name" et le mot de passe dans "password" provenant de cookie alors enregistrement de "user" dans la session et pose d'un cookie permanent contenant name et password. "user" contient l'ensemble des données de l'utilisateur.
- [Optimisation] : est-il utile de conserver toutes ces données en session ? a priori seule le name est utilisé, à verifier.
- Chargement de la page demandée, éventuellement à partir du cache mémoire ; mise en cache memoire si c'est la premiere fois. calculé en fonction de "time" présent dans la requête, sauvegarde du contenu de la page et alimentation "Tag" de la page en cours.
- Sauvegarde du referrer dans la table des "referrer" si on vient d'un autre site.
- Si méthode 'raw' affichage du résultat de la fonction méthode. (appel par syndication)
- Sinon affichage de header, du résultat de la méthode et du footer. Le header et footer sont récupérés dans les chemins par défaut.
- Depuis 0.4.1 : Affichage du résultat de la méthode. Charge à la méthode d'afficher ou non le header et le footer.
- Appel de la méthode en buffered : include de la méthode dans le flow du programme.