si2ra n'est pas un système fermé, et vous pouvez bien sûr ajouter de nouvelles fonctionnalités à votre site, mais aussi les proposer pour intégration à Si2Ra. Les contributions peuvent être de différentes natures :
- Fonctions essentielles = Le noyau, volontairement réduit:
- l'éditeur
- Écriture, publication et lecture des articles
- Téléchargements
- messagerie interne (qui aurait pu être un module... Mais est intégrée afin que les membres connectés puissent être informés de l'arrivé de nouveaux messages)
- Plan
- Administration
- Modules facultatifs, par exemple :
- Liste de diffusion
- Forum
- Livre d'or
- Calendrier
L'organisation des modules devrait être mise prochainement en place.
- Squelettes et feuilles de styles. Vous pouvez proposer de nouvelles feuilles de styles pour le squelette par défaut, ou un ensemble squelette + feuilles de styles (le répertoire style/ dans son ensemble.
- traduction du système (pour le futur, car l'implémentation de l'internationalisation n'est pas terminée)
Pour les propositions concernant le noyau, merci de suivre l'organisation proposée dans le fichier lisezMoi.php.
Les fichiers doivent être encodés en iso-8859-15, ou dans le cas contraire, merci de le signaler. Il est essentiel que tous les fichiers soient encodés de la même façon. Il est possible de transformer l'ensemble du système en UTF8 : Pour cela, il suffit de réencoder l'ensemble des scripts et de modifier une ligne dans header.php.
Base de données
Si vous faites appel à la base de données, merci d'utiliser la classe Sql. Cela permet un éventuel changement de moteur de base de données, et automatise le compte des requêtes.
Toutes les variables provenant de l'utilisateur ($_POST, $_GET, $_COOKIE) doivent être impérativement vérifiées avant d'être insérée dans une requête. Basiquement, il suffit de :
- Variable placée entre guillemets dans la requête : faire un htmlspecialchars() si vous n'attendez pas de guillemets, ou un appel à la fonction Proteger() du script fonctions.php si la variable peut en contenir.
- Nombres entier: faire un casting par (int)
- utiliser une fonction plus spécifique si besoin (par exemple, vérifier les mails par la fonction IsMail() du script fonctions.php
- ...
- ne pas oublier de faire subir le même traitement aux éléments des tableaux récupérés de l'utilisateur !
Attention, utiliser Proteger() ou autre htmlspecialchars() sur une variable qui n'est pas placée entre guillemets (numérique ou booléen) dans la requête SQL n'empêche pas une injection SQL!