« Frankiz III » : différence entre les versions

De WikiBR
m (a renommé BR:Frankiz III en Frankiz III)
Ligne 144 : Ligne 144 :


== Devel sur frankiz2 ==
== Devel sur frankiz2 ==
Vu la vitesse à laquelle va le devel sur Frankiz3, on peut encore avoir besoin d'utiliser 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 :
La marche à suivre est la suivante :

Version du 28 novembre 2009 à 15:45

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

Installation de la version de dev

Pour fonctionner correctement, il faut :

  • créer un dossier dev/ dans son home sur gwennoz :
mkdir ~/dev/
  • Y récupérer le code de frankiz :
cd ~/dev
git clone /home/git/frankiz.git
cd frankiz
  • Sélectionner la branche voulue : master pour le devel, prod pour ... la prod
git checkout -b master origin/master

ou

git checkout -b prod origin/prod
  • Récupérer le core de plat/al :
git submodule init
git submodule update
  • mettre à jour les fichiers de configs (mettre les mots de passe pour les bdds, actualiser les adresses mail, ...) ; par exemple,
cp ~xelnor/dev/frankiz/configs/frankiz.conf ~/dev/frankiz/configs
  • mettre en place classes/platalglobals.php à partir de platalglobals.php.in
make
  • configurer le .htaccess dans htdocs
  • Créer le dossier spool, et ses sous-dossiers :
mkdir spool/templates_c spool/mails_c spool/tmp
chgrp frankiz spool/*
chmod g+w spool/*

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é

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