YaY*Forumdocumentation

version 3.6
par dew

Licence

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.

Description

Ce script est un forum, de type threaded. Il est difficile de résumer toutes les fonctionnalités mais voici les principales :

Terminologie

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.

Historique

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.

Performances

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).

Remerciements

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.

Installation

Fichiers

Tous les fichiers de script sont utiles.

Tous les sous-répertoires sont utiles à l'exception de doc.

Droits d'accès

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.

MySQL

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.

Compte administrateur

Personnalisation

Différentes méthodes pour personnaliser le forum :

Fonctionnalités

Interface d'administration

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 :

Cache

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.

Skins

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.

YaY^Code

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.

CodeExempleRésultatDescription
[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/aImage
[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

Code automatique

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.

Upload

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.

Previews

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.

URLs simplifiées

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.

Smilies

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.

Sécurité

Sous-répertoires

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.

Antispam

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.

Identification

Le mot de passe est encodé en MD5 dans le cookie.

Détail des variables de configuration

MySQL

$mysql_serverServeur MySQL
$mysql_loginLogin MySQL
$mysql_passwordMot de passe MySQL
$mysql_dbNom de la base de données MySQL
$mysql_prefixPréfixe des tables MySQL ("_" inclus si nécessaire)
$mysql_pconnectConnexions permanentes à MySQL

Général

$uriURI complète du forum (ex : http://www.site.com/forum/).
$bbtitleCeci est le titre principal du forum. Il sera affiché sur le pages et dans les e-mails envoyés.
$adminemailE-mail de l'administrateur.
$warnemailsAdresses e-mail auxquelles envoyer les avertissements Prévenir un modérateur (ex : modo@domain.fr,admin@domain.fr).
$emailcheckVérifier l'e-mail lors de l'inscription : envoyer le mot de passe par e-mail (défaut : true).
$usepmAutoriser les messages privés (défaut : true).

Cookies

$cookiedomainDomaine ou sous-domaine des cookies (ex : http://www.site.com/forum/ ou /forum/)
$cookietimeDurée de vie des cookies en secondes (défaut : 7776000 soit 3 mois).

E-mail

$emaildomainsDomaines e-mails autorisés. Si ce champ est renseigné, les adresses provenant d'autres domaines seront refusées. (ex : @wanadoo.fr,@free.fr)
$noemaildomainsDomaines e-mails refusés. (ex : @caramail.com,@hotmail.com)
$emailaddrsAdresses 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)
$allowmailnotifyAutoriser la notification par e-mail (défaut : true).

Apparence

$displayiconsAffichage des icônes devant les forums (catégories) (défaut : true).
$newtopicsNombre de derniers sujets affichés en page d'accueil (défaut : 10).
$hotpostNombre de posts à partir duquel un sujet est considéré comme chaud (défaut : 30).
$maxthreadpageNombre de sujets par page (défaut : 30).
$maxpostpageNombre de posts par page (défaut : 30).
$maxrpagesNombre maximal de pages pour un sujet. Passé ce nombre il sera affiché comme clos (défaut : 100).
$minpostcharsNombre minimal de caractères pour un post (défaut : 10).
$maxpostcharsNombre maximal de caractères pour un post (défaut : 50000).
$iconsIcônes : noms des fichiers du répertoire smilies utilisables comme icônes de sujets (ex : post,question,attention).
$smiliesSmilies : noms des fichiers du répertoire smilies utilisables comme smilies (ex: smile,cool,fou).
$skinsListe des skins activés, correspondant aux sous-répertoires présents dans le répertoire skins (ex : aqua,xp,vision).
$defaultskinSkin par défaut pour les nouveaux inscrits et les non identifiés (ex : fritos).
$languagesLangues autorisées (défaut : fr,us).
$defaultlangLangue par défaut (défaut : fr);
$customlinksLiens personnalisés et affichés dans le menu.
$adminstatusTexte affiché décrivant le statut d'administrateur (ex : admin).
$modostatusTexte affiché décrivant le statut de modérateur (ex : modérateur).
$showstatusAfficher les statuts de modérateur et d'administrateur sur chaque sujet (défaut : true).
$showpostsAfficher le nombre de posts de chaque membre sur chaque sujet (défaut : true).
$showonlineAffichage du statut, connecté ou non, sur la page des posts et dans le profil d'un membre (défaut : true).
$popup_widthLargeur par défaut des popups (défaut : 400).
$popup_heightHauteur par défaut des popups (défaut : 220).

Uploads

$allowuploadAutoriser les uploads (accès en écriture requis au répertoire uploads) : envois de fichiers images et avatars (défaut : true).
$uploadtypesTypes - et non extensions - de fichiers autorisés (défaut : gif,jpg,jpeg,png).
$showmodsAfficher les modérateurs spécifiques à chaque forum (défaut : false).
$gzipAutoriser la compression automatique des pages en gzip par le serveur (défaut : true).
$maxfileuploadsizeTaille maximale en octets d'un fichier envoyé : uploads (défaut : 200000).
$maxavataruploadsizeTaille maximale en octets d'un avatar envoyé : avatars (défaut : 40000).
$avatar_max_heightHauteur maximale en pixels d'un avatar (défaut : 150).
$avatar_max_widthLargeur maximale en pixels d'un avatar (défaut : 150).
$upload_max_widthLargeur maximale en pixels d'une image envoyée (défaut : 1200).
$upload_max_heightHauteur maximale en pixels d'une image envoyée (défaut : 800).
$gdversionVersion de la librairie GD installée : 1 ou 2 (défaut : 2).
$allowpreviewAutoriser les aperçus (librairie GD requise) lors des uploads : génération de vignettes et d'aperçus dans l'administration (défaut : true).
$previewsizeTaille maximale en pixels, en largeur ou en hauteur, des aperçus générés (défaut : 200).
$previewqualityQualité en pourcentage des aperçus générés (défaut : 75).
$uploaddirChemin 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/).
$avatardirChemin 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/).
$previewdirChemin 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/).

Avancé

$maxemailregNombre maximal d'inscriptions avec la même adresse e-mail (défaut : 0 : inscriptions infinies)
$passgenNombre 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).
$minpostsforpmNombre minimal de posts avant qu'un membre soit affiché dans la liste des destinataires de messages privés (défaut : 10).
$maxpostingdaysNombre de jours après la date du dernier post après lequel il devient impossible de répondre à un sujet (défaut : 365).
$onlinetimeNombre de secondes après lequel un membre est considéré comme déconnecté (défaut : 180).
$postintervalAntiflood : nombre de secondes entre chaque post (défaut : 10).
$topicintervalAntiflood : nombre de secondes entre chaque sujet (défaut : 600).
$ipbandelayNombre de secondes durant lequel le ban par IP est actif par défaut pour une adresse IP (défaut : 604800).
$defaultlevelNiveau d'accès par défaut pour les nouveaux membres (défaut : 63).
$defaultpmmodeMode d'affichage par défaut des messages privés (défaut : 3).
$refreshtimeNombre de secondes entre deux rafraîchissements automatiques de pages, notamment pour les messages privés (défaut : 30).
$modrewriteUtiliser mod_rewrite pour Apache, pour simplifier l'écriture des URLs. Nécessite le fichier .htaccess adéquat.
$closedtxtTexte de fermeture. Attention si ce texte est spécifié, le forum entier sera clos et non consultable.
$allowqcmAutoriser les sondages à choix multiples (QCM) (défaut : true).
$useflagsUtiliser les drapeaux.
$useavatarsUtiliser les avatars (défaut : true).
$usecacheUtiliser le cache de fichiers (défaut : true).
$cachetimeTemps en secondes durant lequel une page du cache est considérée comme valide (défaut : 600 soit 10 minutes).
$adsenseCode HTML/JS à ajouter pour afficher des bannières publicitaires (de type adsense par exemple) sur toutes les pages.