Frankiz III

De WikiBR
Révision datée du 23 novembre 2010 à 13:05 par Feandil (discussion | contributions) (Récupération de l'ancienne version)

Structure du site

On travaille avec platal, ce qui a imposé une certaine modification de la structure de dossiers.

  • bin : contient les scripts utilisés par frankiz
  • classes : contient les classes spécifiques à frankiz, ainsi que la classe platalglobals.php (dérivée à partir de platalglobals.php.in), qui contient une partie de la conf
  • core : contient le core de plat/al, voir ci-après la partie 'git-submodule'
  • configs : contient les fichiers de config ; générer les versions utilisées à l'aide du Makefile [non encore implémenté]
  • htdocs : les fichiers 'initiaux' et statiques :
    • frankiz.php, qui initie le site
    • .htaccess, qui contient les règles de réécriture (mettre à jour à partir de .htaccess.in quand on checkout sa version)
    • les skins, les images fixes, le fkz.opensearch.xml pour la barre de recherche, les CSS
  • include : les fichiers à inclure (fonctions, ...)
  • modules : les modules, i.e les différentes pages (profil, annonces, activités, ...)
  • old : contient les fichiers de frankiz 2.x (0<x<5), à terme devra être vide.
  • platal : un checkout de platal, au début pour avoir le core, à terme pour pouvoir y piquer des fonctions et des includes (avec du ln -s)
  • plugins : contient les plugins smarty, à savoir les instructions de mise en forme des variables en sortie
  • spool : le cache des templates, les données, ...
  • templates : les templates, i.e la mise en forme des variables fournies par les fichiers dans les modules
  • upgrades : contient les scripts d'upgrade de la bdd, des dossiers, ... pour passer d'une version à une autre

Coding rules, utilisation de git

Doc sur Git

On peut trouver de la doc sur git ici :

Commits

  • Le texte des commits est en anglais.
  • Les commits sont atomiques (un commit ne modifie qu'une seule partie du code, cohérente ; on ne met pas à jour le core et le module d'annonces et le template des fiches TOL en un même commit)
  • Le format typique d'un commit est :
Résumé

* Point 1 en détails
* Point 2 en détails

Signed-off-by: Blah <blah@frankiz.net>

Le 'signed-off by' est obtenu en utilisant

git-commit -s

Remarques

Cette partie sert à lister les remarques venant au cours de l'analyse du code de plat/al

Généralités

include/security.inc.php

  • fonctions check_ip et check_email : décider si on la veut, et créer la BDD qui va bien
  • fonctions check_account et check_redirect : les comprendre, et voir si on en veut
  • fonction send_warning_mail : corriger les trucs nécessaire ; j'aime assez l'idée (Xelnor)
  • fonction kill_session : créer le script adéquat
  • fonctions udate_NbValid et update_NbNotifs : adapter à notre structure (requêtes et notifications en attente)

Fonctionnement du site

Liste des fichiers appelés, dans l'ordre :

  1. htdocs/frankiz.php
    1. appelle include/frankiz.inc.php
    2. Lance Plat/al (platal->run())
    3. Charge le wiki : include/wiki/engine.php
  2. include/frankiz.inc.php :
    1. Définit des variables globales de plat/al (nom des classes globale, de session, de page)
    2. Appelle core/include/platal.inc.php
    3. Appelle include/security.inc.php
    4. Appelle include/common.inc.php
  3. core/include/platal.inc.php :
    1. Définit l'autochargement de classes
    2. Définit un certain nombre de fonctions (erreurs, encodage, redirection de page)
  4. include/security.inc.php : définit des fonctions de sécurité, non encore implémentées
  5. include/common.inc.php : définit des chemins alternatifs d'autoload (non encore utilisé), et la fonction principal d'autoload (qui appelle pl_autoload)

Chemin de chargement de plat/al core

depuis htdocs/frankiz.php

  • include/frankiz.inc.php
    • core/include/platal.inc.php
      • core/include/misc.inc.php
      • core/classes/env.php
    • include/security.inc.php
    • include/common.inc.php
  • core/classes/platal.php
    • classes/platalglobals.php
      • core/classes/plglobals.php
    • classes/frankizsession.php
      • core/classes/plsession.php
        • core/classes/s.php
        • core/classes/plflagset.php
    • classes/frankizpage.php
      • core/classes/plpage.php
    • core/classes/plmodule.php
      • modules/*.php
  1. include/frankiz/session.inc.php :
    1. Charge include/frankiz.misc.inc.php
    2. Définit les cookies, voir à remplacer par les fonctions de plat/al
    3. Définit la classe FrankizSession, qui contient quelques anciennes fonctions, à réécrire.
  2. include/frankiz.misc.inc.php :
    1. Définit des fonctions de gestion de caractères, de proximité sonore, de sécurité


Rédaction de doc

Il y a 2 doc à rédiger qui ça s'adressent à 2 types de personnes différentes :

  1. ceux qui doivent comprendre comment fkz fonctionne dans son ensemble, comprendre le code du coeur, etc.
  2. ceux qui codent un module particulier et seulement ça
Pour les 1ers
C'est dans le code que la doc (arborescence des classes, fonctions, etc.) doit se trouver par ce qu'il doivent *comprendre* le code. Donc le support de la doc : doxygen + pages wikiBR pour expliquer le code dans ses grandes lignes.
Pour les 2èmes
C'est plus un quelque chose du genre tuto avec seulement ce qu'il faut savoir pour coder un module. Support de la doc : WikiBR.

Ca serait bien qu'on propose au gens une espèce de petit kit de développement de module frankiz accessible a tous ceux qui ont déjà fait un peu de php, ceux là n'ont pas besoin de comprendre le code du coeur. (Qt)

Devel sur frankiz2

A éviter : seulement si on ne peux pas faire autrement. On se concentre sur le devel de Frankiz3.

La marche à suivre est la suivante :

  • créer le dossier adéquat dans son home sur gwennoz :
mkdir ~/public_html
  • Y récupérer le code de frankiz2
git clone /home/git/frankiz.git frankiz2
  • Mettre en place le fichier de configuration adéquat
cp ~xelnor/public_html/frankiz2/etc/config.php ~/public_html/frankiz2/etc/
  • Mettre à jour la configuration dudit fichier (notamment les adresses mail)
  • initialiser le cache
mkdir ~/public_html/frankiz2/cache
chmod a+rwx ~/public_html/frankiz2/cache