version 3.6
par dew
Ce script est soumis à la licence Creative Commons : Attribution-NonCommercial-ShareAlike 2.0.
Son nom n'est pas définitif et est susceptible de changer sous peu.
Ce document est en cours de rédaction et donc encore incomplet.
Ce script est un forum, de type threaded. Il est difficile de résumer toutes les fonctionnalités mais voici les principales :
Le forum (script dans sa globalité) peut être organisé en plusieurs catégories thématiques (ou sous-forums), dans lesquelles les membres inscrits peuvent créer de nouveaux sujets (topic, thread) ou répondre aux existants. Chaque sujet se compose d'une série d'interventions, ou posts rédigés par chacun des membres.
Il a été développé depuis février 2000 en totale indépendance des scripts concurrents, avant même que les plus en vue actuellement ne voient le jour. Il ne vise aucune prétention et n'est à l'origine qu'un projet personnel. Une attention particulière a été portée au code XHTML produit qui doit être valide W3C, accessible, sémantique; et aux skins basés sur toutes les capacités offertes par les feuilles de styles CSS.
Depuis le début, ce forum a été développé dans un objectif de performances : ne pas sacrifier de précieuses ressources serveur au détriment de fonctionnalités superflues, ne pas céder aux tentations d'une usine à gaz. C'est pourquoi il peut sembler plus difficile à configurer que d'autres scripts plus orientés vers la facilité d'utilisation. Chaque option a été testée et benchmarkée, codée pour utiliser le moins de ressources possibles tant au niveau du temps de génération des pages par PHP, qu'au niveau de l'espace disque requis pour le stockage de la base de données. De plus, la structure de la base MySQL a été optimisée au maximum.
Dans l'état actuel des tests lors d'une utilisation courante, ce script supporte plusieurs dizaines de milliers de membres et plusieurs millions de posts sans souffrir de ralentissements. Evidemment ceci est fortement dépendant de la configuration du serveur sur lequel le script est hébergé. L'avenir dira si ces chiffres peuvent être revus à la hausse.
Activer le cache de fichiers grâce à l'option $usecache peut grandement améliorer les temps de génération des pages (jusqu'à environ 500% d'amélioration).
Je tiens à remercier tous ceux qui m'ont aidé à dépister les bugs, qui ont participé aux tests et aux premières versions du script, qui l'ont installé et aussi ceux qui m'ont suggéré toutes les améliorations possibles.
Tous les fichiers de script sont utiles.
Tous les sous-répertoires sont utiles à l'exception de doc.
Les sous-répertoires destinés à recevoir de nouveaux fichiers doivent bénéficier des autorisation adéquates en écriture, soit au groupe, soit à tous les utilisateurs selon la configuration de votre serveur web :
Ceci peut la plupart du temps s'effectuer via votre client FTP ou via la commande CHMOD 0777.
Vous devez vous munir des informations suivantes :
Renseignez le fichier de configuration conf.php avec ces variables.
Si vous désirez utiliser un préfixe pour le nom de vos tables (par exemple pour installer plusieurs forums dans une même base de données) renseignez la variable $mysql_prefix, avec le caractère _ si nécessaire.
Pour utiliser des connexions MySQL persistantes, définissez $mysql_pconnect à true.
Afin de créer les tables nécessaires, exécutez le script forum.sql.
Différentes méthodes pour personnaliser le forum :
Toutes les opérations spécifiques à l'administration et/ou à la modération s'opèrent soit directement sur le forum grâce à des liens masqués qui ne s'affichent que pour les personnes autorisées, soit grâce à l'interface d'administration, accessible elle aussi par lien sur toutes les pages.
Celle-ci regroupe en différentes sections l'intégralité des fonctions de maintenance, surveillance et gestion du forum :
Le principe du cache est de stocker en tant que fichier sur le disque les pages qui sont les plus demandées afin de ne pas avoir à les re-générer, et donc faire des économies au niveau de PHP et MySQL. Pour utiliser efficacement le cache il faudra spécifier un temps de vie des pages correct (option $cachetime), disposer de suffisamment de place dans le sous-répertoire cache/ et vérifier à intervalles réguliers son état et la place totale requise par ces fichiers. Ceux-ci étant générés au besoin, il est tout à fait possible d'effacer complètement le contenu du répertoire. Les pages nécessaires seront re-créées de façon transparente.
L'interface d'administration comprend une section de gestion du cache permettant de surveiller son évolution, d'effacer les fichiers dont la date de modification excède une certaine date dans le passé, ou de purger totalement le cache.
Note : les pages conçues pour les administrateurs et modérateurs ne sont pas mises en cache car elles contiennent des éléments que les autres utilisateurs ne doivent pas voir apparaître.
Plusieurs skins sont fournis par défaut. Si vous souhaitez ajouter un nouveau skin, il suffit de le rajouter au sous-répertoire skins. Pensez à modifier l'option $skins dans conf.php pour ajouter ou supprimer des skins de la liste.
Un code interne peut être employé dans les posts pour les agrémenter de couleurs, liens (http, e-mail), style (gras/italique, police à pas fixe), images, smilies.
| Code | Exemple | Résultat | Description |
|---|---|---|---|
| [smiley] avec smiley : nom du smiley (nom du fichier .gif sans l'extension) | [biggrin] | ![]() | Smiley |
| [b]texte[/b] [i]texte[/i] | [b]arf[/b] [i]yay[/i] | arf yay | Gras Italique |
| [code]texte[/code] | [code]printf("arf");[/code] | printf("arf"); | Police à pas fixe |
| [#couleur] avec couleur : code couleur HTML (6 chiffres) ou nom (red, blue, gold) | [#336699]texte[/#] [#red]texte[/#] | texte texte | Texte en couleur |
| [img]url[/img] avec url : adresse d'une image | [img]http://www.site.com/image.jpg[/img] | n/a | Image |
| [url=url] [url=url]texte[/url] avec url : adresse http | [url=http://www.site.com] [url=http://www.site.com]Un site[/url] | http://www.site.com Un site | Lien HTTP |
| [quote=auteur]texte[/quote] | [quote=auteur]blabla[/quote] | auteur a écrit : blabla | Citation |
En plus du code volontairement inséré dans les posts, tout texte présentant la syntaxe particulière d'une url (http://...., www.....) ou d'un e-mail (...@...) sera automatiquement converti en lien.
Votre serveur web doit accepter les uploads via HTTP pour que cette fonctionnalité soit présente. Dans le cas où PHP est configuré en safe mode, ceci a de fortes chances de ne pas marcher.
Afin de générer des images (previews), le serveur web doit être équipé de la librairie graphique GD. Veillez à renseigner la bonne version de GD présente sur le serveur dans la configuration du forum, sous l'option $gdversion.
La réécriture d'urls permet via le fichier .htaccess fourni par défaut de réécrire les urls ressemblant à ceci :
topic.php?fid=1&tid=87&p=1
en ceci :
topic-1-87-1.html
Apache doit donc être muni de l'extension mod_rewrite et accepter les fichiers .htaccess. Si ceci ne fonctionne pas, il est recommandé de désactiver l'option $modrewrite.
Si tout est bien configuré mais que la réécriture ne se fait pas, vérifiez que le fichier .htaccess est bien présent sur le serveur. La plupart du temps les fichiers commençant par un point sont masqués par les clients FTP. Vous pouvez les voir en utilisant la commande FTP manuelle LIST -al.
Placer tout smiley additionnel au format GIF dans le sous-répertoire smilies. Il sera accessible grâce au tag [smiley] où smiley est le nom du fichier sans son extension.
Le forum comportant un certain nombre de sous-répertoires (avatars,cache,doc,i18n,icos,previews,skins,smilies,upload), il est recommandé de placer un fichier index.html vide dans chacun pour éviter le listing par défaut du serveur web.
Les adresses e-mail sont masquées à toute personne non identifiée. Donc aussi bien aux moteurs de recherche qu'aux robots indexant les adresses pour faire du spam. Il n'y a donc pas de risque à montrer publiquement son e-mail uniquement aux autres membres du forum.
Le mot de passe est encodé en MD5 dans le cookie.
| $mysql_server | Serveur MySQL |
| $mysql_login | Login MySQL |
| $mysql_password | Mot de passe MySQL |
| $mysql_db | Nom de la base de données MySQL |
| $mysql_prefix | Préfixe des tables MySQL ("_" inclus si nécessaire) |
| $mysql_pconnect | Connexions permanentes à MySQL |
| $uri | URI complète du forum (ex : http://www.site.com/forum/). |
| $bbtitle | Ceci est le titre principal du forum. Il sera affiché sur le pages et dans les e-mails envoyés. |
| $adminemail | E-mail de l'administrateur. |
| $warnemails | Adresses e-mail auxquelles envoyer les avertissements Prévenir un modérateur (ex : modo@domain.fr,admin@domain.fr). |
| $emailcheck | Vérifier l'e-mail lors de l'inscription : envoyer le mot de passe par e-mail (défaut : true). |
| $usepm | Autoriser les messages privés (défaut : true). |
| $cookiedomain | Domaine ou sous-domaine des cookies (ex : http://www.site.com/forum/ ou /forum/) |
| $cookietime | Durée de vie des cookies en secondes (défaut : 7776000 soit 3 mois). |
| $emaildomains | Domaines e-mails autorisés. Si ce champ est renseigné, les adresses provenant d'autres domaines seront refusées. (ex : @wanadoo.fr,@free.fr) |
| $noemaildomains | Domaines e-mails refusés. (ex : @caramail.com,@hotmail.com) |
| $emailaddrs | Adresses e-mail exclusivement autorisées. Si ce champ est renseigné, seules les adresses spécifiées seront autorisées à s'inscrire. (ex : robert@free.fr,geraldine@aol.fr) |
| $allowmailnotify | Autoriser la notification par e-mail (défaut : true). |
| $displayicons | Affichage des icônes devant les forums (catégories) (défaut : true). |
| $newtopics | Nombre de derniers sujets affichés en page d'accueil (défaut : 10). |
| $hotpost | Nombre de posts à partir duquel un sujet est considéré comme chaud (défaut : 30). |
| $maxthreadpage | Nombre de sujets par page (défaut : 30). |
| $maxpostpage | Nombre de posts par page (défaut : 30). |
| $maxrpages | Nombre maximal de pages pour un sujet. Passé ce nombre il sera affiché comme clos (défaut : 100). |
| $minpostchars | Nombre minimal de caractères pour un post (défaut : 10). |
| $maxpostchars | Nombre maximal de caractères pour un post (défaut : 50000). |
| $icons | Icônes : noms des fichiers du répertoire smilies utilisables comme icônes de sujets (ex : post,question,attention). |
| $smilies | Smilies : noms des fichiers du répertoire smilies utilisables comme smilies (ex: smile,cool,fou). |
| $skins | Liste des skins activés, correspondant aux sous-répertoires présents dans le répertoire skins (ex : aqua,xp,vision). |
| $defaultskin | Skin par défaut pour les nouveaux inscrits et les non identifiés (ex : fritos). |
| $languages | Langues autorisées (défaut : fr,us). |
| $defaultlang | Langue par défaut (défaut : fr); |
| $customlinks | Liens personnalisés et affichés dans le menu. |
| $adminstatus | Texte affiché décrivant le statut d'administrateur (ex : admin). |
| $modostatus | Texte affiché décrivant le statut de modérateur (ex : modérateur). |
| $showstatus | Afficher les statuts de modérateur et d'administrateur sur chaque sujet (défaut : true). |
| $showposts | Afficher le nombre de posts de chaque membre sur chaque sujet (défaut : true). |
| $showonline | Affichage du statut, connecté ou non, sur la page des posts et dans le profil d'un membre (défaut : true). |
| $popup_width | Largeur par défaut des popups (défaut : 400). |
| $popup_height | Hauteur par défaut des popups (défaut : 220). |
| $allowupload | Autoriser les uploads (accès en écriture requis au répertoire uploads) : envois de fichiers images et avatars (défaut : true). |
| $uploadtypes | Types - et non extensions - de fichiers autorisés (défaut : gif,jpg,jpeg,png). |
| $showmods | Afficher les modérateurs spécifiques à chaque forum (défaut : false). |
| $gzip | Autoriser la compression automatique des pages en gzip par le serveur (défaut : true). |
| $maxfileuploadsize | Taille maximale en octets d'un fichier envoyé : uploads (défaut : 200000). |
| $maxavataruploadsize | Taille maximale en octets d'un avatar envoyé : avatars (défaut : 40000). |
| $avatar_max_height | Hauteur maximale en pixels d'un avatar (défaut : 150). |
| $avatar_max_width | Largeur maximale en pixels d'un avatar (défaut : 150). |
| $upload_max_width | Largeur maximale en pixels d'une image envoyée (défaut : 1200). |
| $upload_max_height | Hauteur maximale en pixels d'une image envoyée (défaut : 800). |
| $gdversion | Version de la librairie GD installée : 1 ou 2 (défaut : 2). |
| $allowpreview | Autoriser les aperçus (librairie GD requise) lors des uploads : génération de vignettes et d'aperçus dans l'administration (défaut : true). |
| $previewsize | Taille maximale en pixels, en largeur ou en hauteur, des aperçus générés (défaut : 200). |
| $previewquality | Qualité en pourcentage des aperçus générés (défaut : 75). |
| $uploaddir | Chemin absolu complet vers le répertoire devant contenir les uploads. Si non précisé, le script essayera de le déterminer automatiquement (ex : /www/site/forum/upload/). |
| $avatardir | Chemin absolu complet vers le répertoire devant contenir les avatars. Si non précisé, le script essayera de le déterminer automatiquement (ex : /www/site/forum/avatars/). |
| $previewdir | Chemin absolu complet vers le répertoire devant contenir les aperçus générés. Si non précisé, le script essayera de le déterminer automatiquement (ex : /www/site/forum/previews/). |
| $maxemailreg | Nombre maximal d'inscriptions avec la même adresse e-mail (défaut : 0 : inscriptions infinies) |
| $passgen | Nombre de caractères à générer aléatoirement pour le mot de passe. Correspond aussi à la longueur minimale du mot de passe (défaut : 8). |
| $minpostsforpm | Nombre minimal de posts avant qu'un membre soit affiché dans la liste des destinataires de messages privés (défaut : 10). |
| $maxpostingdays | Nombre de jours après la date du dernier post après lequel il devient impossible de répondre à un sujet (défaut : 365). |
| $onlinetime | Nombre de secondes après lequel un membre est considéré comme déconnecté (défaut : 180). |
| $postinterval | Antiflood : nombre de secondes entre chaque post (défaut : 10). |
| $topicinterval | Antiflood : nombre de secondes entre chaque sujet (défaut : 600). |
| $ipbandelay | Nombre de secondes durant lequel le ban par IP est actif par défaut pour une adresse IP (défaut : 604800). |
| $defaultlevel | Niveau d'accès par défaut pour les nouveaux membres (défaut : 63). |
| $defaultpmmode | Mode d'affichage par défaut des messages privés (défaut : 3). |
| $refreshtime | Nombre de secondes entre deux rafraîchissements automatiques de pages, notamment pour les messages privés (défaut : 30). |
| $modrewrite | Utiliser mod_rewrite pour Apache, pour simplifier l'écriture des URLs. Nécessite le fichier .htaccess adéquat. |
| $closedtxt | Texte de fermeture. Attention si ce texte est spécifié, le forum entier sera clos et non consultable. |
| $allowqcm | Autoriser les sondages à choix multiples (QCM) (défaut : true). |
| $useflags | Utiliser les drapeaux. |
| $useavatars | Utiliser les avatars (défaut : true). |
| $usecache | Utiliser le cache de fichiers (défaut : true). |
| $cachetime | Temps en secondes durant lequel une page du cache est considérée comme valide (défaut : 600 soit 10 minutes). |
| $adsense | Code HTML/JS à ajouter pour afficher des bannières publicitaires (de type adsense par exemple) sur toutes les pages. |