1 - Introduction
2 - Installation Manuelle
   2.1 - Configuration
  2.2 - Copie des fichiers sur les servers
  2.3 - Création de la base de données
  2.4 - Création des tables dans la base de données
3 - Installation automatique
4 - Sécurisation du site
   4.1 - Suppression des fichiers d'installation
  4.2 - Attributs des scripts
  4.3 - Sécurisation du répertoire include/ sur un server Apache
5 - Personnalisation du site
   5.1 - Personnalisation par thème
  5.1.1 - Création d'un thème
   5.1.2.1 - Feuille de style
  5.1.2.2 - Icônes standards
  5.2 - Personnalisation des smileys
  5.3 - Personnalisation du BBCode
  5.4 - Personnalisation de la censure
  5.5 - Personnalisation de l'e-mail envoyé automatiquement
6 - Indication des tailles des champs de la base de données et fonctions
7 - Mise à jour manuelle
   7.1 - Configuration du site
  7.2 - Smileys
  7.3 - BBCode
  7.4 - Censure
  7.5 - E-mail
  7.6 - Mise à jour de la base de données
8 - Mise à jour automatiquement
9 - Variables GET

1 - Introduction

NouveauMonoForum est un mono-forum (forum avec un seul salon) où tout le monde peut déposer un message, consulter et répondre, sans nécessité une authentification.
Les messages sont supprimés automatiquement tous les X (configurable) jours après qu'un message n'est plus été lu.

Le forum gère tout automatiquement, les urls dans les messages sont automatiquement cliquables, les smileys sont convertis en images, les retours de lignes sont gérés automatiquement et le forum gère le BBCode afin d'agrémenter vos messages.
Pour votre confort, votre nom et adresse e-mail sont mémorisés dans un cookie déposé sur votre ordinateur, évitant ainsi la resaisie.
Rassurez-vous toutefois, NouveauMonoForum ne contient pas la moindre lettre de JavaScript.
Le forum dispose également d'un filtre qui censure certains mots et il est possible, suivant la configuration du forum et du serveur hébergeur, d'être prévenu par e-mail quand une réponse est postée.

2 - Installation Manuelle

Pour l'installation manuelle, il est IMPERATIF d'avoir des notions de PHP et de SQL.
Il faut bien évidemment télécharger les derniers scripts de NouveauMonoForum 1.4 sur le site officiel http://php4php.free.fr/nfaq. Décompresser l'archive localement (sur votre ordinateur) ou directement sur le server web que vous utilisez.

2.1 - Configuration

La configuration de NouveauMonoForum est concentré dans un seul fichier config.php qui se site dans le répertoire include/. Le nom et la fonction de chaque variable est indiqué ci-dessous.

Variables Valeur Explication
$host "localhost" host ou adresse IP pour se connecteur au serveur de base de données
$user "root" nom d'utilisateur ou le login fourni par votre hébergeur
$pw "" mot de passe
$db "forum" nom de la base de données (sous Free, c'est le nom du login)
$prefixe_de_table "faq_" préfixe des noms des tables utilisées par NFAQ
$nb_post_par_page 10 nombre de questions afficher par page
$nb_jour_avant_suppression 60 nombre de jours sans lecture d'une question avant quelle soit supprimée. Si la valeur est suppérieur à 0, alors les messages sont supprimés, sinon, les messages ne sont pas supprimés.
$titre_forum "La foire aux questions" Nom du site
$url_site "http://localhost/nfaq/" URL du site
$can_send_email true Indique si les utilisateurs peuvent demander à revevoir un e-mail en cas de réponse. (Free à désactiver la fonction mail(). Vous devez donc mettre se paramètre à false). Il faut savoir que NFAQ cherche s'il est possible d'envoyer des e-mail. Si ce n'est pas le cas, l'envoie est automatiquement désactivé.
$SCRIPTNAME "forum.php" Nom du fichier affichant le forum. Ici (et par défaut), il sagit du fichier forum.php
$nb_rep_pr_msg_hot 25 Indique le nombre de réponses nécessaire pour qu'un message devienne populaire

La ligne suivante
/* Vérifie que le fichier n'est pas affiché seul */
if ( !defined('IN_NMF') )
{
    die('Restricted access');
}
est afin de ne pas permettre au fichier de s'exécuter en dehors du site (par un appel direct).

2.2 - Copie des fichiers sur les servers

Si vous avez décompressé les fichiers localement, il faut à présent copier les fichiers sur le server web.

2.3 - Création de la base de données

Pour créer la base de données, il faut utiliser les outils mis à votre disposition par votre hébergeur web. Si auncuns outils n'est mis à votre disposition (ce qui parait très étonnant), exécuter la commande SQL suivant : CREATE DATABASE nom_de_la_base_de_donnees.

2.4 - Création des tables dans la base de données

Pour créer les tables, exécuter les requêtes SQL suivantes, où prefixe_ est le préfixe de table que vous avez affecter à la variable $prefixe_de_table :
CREATE TABLE prefixe_question (
   id varchar(8) NOT NULL,
   texte longtext NOT NULL,
   auteur varchar(50) NOT NULL,
   date varchar(10) NOT NULL,
   mail varchar(100) NOT NULL,
   sujet varchar(100) NOT NULL,
   envoi char(3) NOT NULL,
   date_reelle datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
   UNIQUE id (id),
   KEY auteur (auteur)
);

CREATE TABLE prefixe_reponse (
   id varchar(8) NOT NULL,
   texte longtext NOT NULL,
   auteur varchar(50) NOT NULL,
   date varchar(10) NOT NULL,
   mail varchar(100) NOT NULL,
   date_reelle datetime DEFAULT '0000-00-00 00:00:00' NOT NULL
);

3 - Installation automatique

Afin de facilité la mise en place de NouveauMonoForum, il existe un procédure d'installation automatique. Pour cela, télécharger les fichiers de NouveauMonoForum sur votre serveur web (ou celui de votre hébergeur), et exécuter le lien suivant http://mon_site/repertoire_contenant_nouveaumonoforum/install/.
Toutefois, avant de continuer, il faut vous assurez que le serveur web puisse écrire dans le répoertoire où vous avez stocké les fichiers de NouveauMonoForum.
Vous verrez apparaître l'écran ci-dessous :



Cliquez sur Cliquez pour continer pour continuer et afficher la licence d'exploitation de NouveauMonoForum. Tout en bas, il y a un lien Cliquez pour continer.
Ensuite, vous aurez le choix entre Installer NouveauMonoForum - Mettre à jour NAFQ 1.X vers NouveauMonoForum bien évidement, ici, il faudra cliquez sur le lien Installer NouveauMonoForum.

Un formulaire apparaît. Vous devez le remplir convenablement pour que NouveauMonoForum puisse fonctionner.

Login de connexion à la base de données Identifiant qui vous permet de vous connecter à la base de donnée. Pour les sites persos comme Free, c'est le nom de la connextion pour l'e-mail et le FTP.
Mot de passe à la base de données Mot de passe qui vous permet de vous connecter à la base de donnée. Pour les sites persos comme Free, c'est le mot de passe de la connextion pour l'e-mail et le FTP.
Host de la base de données Bien souvent, la valeur est localhost.
Base de données Nom de la base de données. Pour les sites persos comme Free, c'est le nom de la connextion pour l'e-mail et le FTP.
Préfixe des tables Si vous avez déjà plusieurs scripts qui utilisent votre base de données, il est bon de mettre un prefixe devant les tables, pour les reconnaitre plus facilement.
Nombre de messages par page Nombre de sujet qui est afficher par page dans la liste des sujets, la recherche, et les réponses.
Nombre de jours de non lecture avant suppression d'un message NouveauMonoForum peut supprimer automatiquement les sujets qui n'ont pas été lu ou répondu depuis X jours. Le X étant la valeur que vous allez saisir. Si vous ne voulez pas supprimer les messages en fonction du jour, cocher Ne pas supprimer
Nombre de réponses pour qu'un message soit populaire Indique le nombre de réponses minimum pour qu'un message soit indiquez comme populaire.
Permettre l'envoie d'un e-mail qu'on une réponse est donnée Si oui, permet aux gens qui postent un message ou une réponse d'indique si oui ou non ils veulent être prévenu par e-mail quand une réponse est déposée.
Titre du forum Titre que vous souhaitez donner à votre forum
URL du site Adresse internet pour accèder au site sans le nom du script (forum.php)
Nom du fichier du script Nom du script qui exécute le forum (par défaut forum.php)
Thème Liste des thèmes disponible

Une fois le formulaire rempli, validez en cliquant sur le bouton Enregistrer la configuration. Un écran du type ci-dessous apparait :



Sur cet écran, on voit que la création des tables à réussi, le fichier de configuration a bien été enregistré mais que les fichiers d'installation n'ont pus être supprimé (normal ici car il s'agissait d'un test). Si une telle situation vous arrive, vous devez supprimer vous même les fichiers.

NOTE : Vous pouvez utilisez la procedure d'installation pour regénérer un fichier de config. Dans ce cas, la création des tables échoura car elles seront déjà existante, mais ne détruira aucunes données.

4 - Sécurisation du site

4.1 - Suppression des fichiers d'installation

Afin de réduire les trous de sécurité, il est conseillé, voir IMPERATIF, de supprimer le répertoire install/, étant donné que si on le laisse présent, avec les fichers, on peut ré-exécuté par n'importe qui.

4.2 - Attributs des scripts

Le site n'ayant besoin de modifier un quelconque fichiers, il est conseillé de ne laisser que l'attribut lecture sur les ficheirs et répertoire par le server web.

4.3 - Sécurisation du répertoire include/ sur un server Apache

Si le server web sur lequel s'exécute NouveauMonoForum est le server web Apache, créez un fichier nommé .htaccess, contenant la ligne : deny from all.

5 - Personnalisation du site

NouveauMonoForum étant plutôt destiné à un usage particulier que professionnel, il n'est pas possible de modifier la forme de NouveauMonoForum mais seulement les couleurs/polices et les icônes standards.

5.1 - Personnalisation par thème

5.1.1 - Création d'un thème

Pour créer un thème, il suffit de créer un répertoire dans le répertoire themes/, ce nom de répertoire sera le nom du thème.
Dans ce répertoire, il y a le fichier style.css et le répertoire images/, contenant les images standards.

5.1.2.1 - Feuille de style

Pour personnaliser NouveauMonoForum, il suffit de configurer les balises HTML ou les classes présenets dans la feuille de style style.css dans le répertoire du thème choisi.

Balises HTML ou classes Explications
body corps complet des pages
table.body tableau prenant 95% de la page. Sert juste à configurer la taille de la police qui n'est pas toujours pris en compte par balise body.
 
table.menu fond de la barre de menu contenant le lien aide, rechercher
td.menu bordure de la barre de menu
tr.menu bordure de la barre de menu
a.menu:link lien de la barre de menu
a.menu:visited lien de la barre de menu quand on a déjà cliqué dessus
a.menu:active lien de la barre de menu quand on clique dessus
a.menu:hover lien de la barre de menu quand la souris est dessus
 
a:link lien
a:visited lien quand on a déjà cliqué dessus
a:active lien quand on clique dessus
a:hover lien quand la souris est dessus
 
table.listemessage table contenant la liste des sujets présents (avec la liste, titre), c'est par là aussi qu'on peut configurer la zone centrale qui est encadée
td.listemessage bords verticaux de la zone centrale
tr.listemessage bords horizontaux de la zone centrale
 
tr.titre zone de titre dans la zone centrale (Titre sujet, Ecriture d'un nouveau message)
td.titreIcone Titre de la colone icône dans la liste des sujets
td.titreTitreSujet Titre de la colone sujet dans la liste des sujets
td.titreCreateurSujet Titre de la colone créateur du sujet dans la liste des sujets
td.titreReponse Titre de la colone nombre de réponse dans la liste des sujets
td.titreDerniereReponse Titre de la colone dernière réponse dans la liste des sujets
 
tr.message ligne contenant les messages present sur le site
td.messageIcone colone contenant l'icône
td.messageTitreSujet colone contenant le sujet
td.messageCreateurSujet colone contenant le créateur du sujet
td.messageReponse colone contenant le nombre de réponse
td.messageDerniereReponse colone contenant la dernière réponse
 
table.piedDeTableauListe table contenant la zone avec le nombre de page, les boutons suivant précédents...
select.piedDeTableauListe liste déroulante dans le tableau ci-dessus
input.piedDeTableauListe zone de saisie dans le tableau ci-dessus
 
table.piedDeTableauListe1 table contenant classer par ...
 
table.sousTitre tableau contenant le forumulaire d'ajout/réponse d'un message
tr.sousTitre Ligne contenant les sous titres Informations sur l'utilisateur
tr.ligneAjout Ligne contenant les zones de saisie
input.ligneAjout zone de saisie
 
.ligneTitreMessageReponse ligne contenant le nom de l'auteur et la date
.ligneTitreMessageReponse2 ligne contenant les messages/réponses dans la visualisation
 
tr.rechercher ligne contenant les zones de saisie de la recherche
.aide défini la police, taille et fond de couleur de l'aide
h1.aide titre des chapitres dans l'aide

5.1.2.2 - Icônes standards

Il y a cinq icônes standard. Celle pour l'aide (aide.gif), la recherche (search.gif), un nouveau message (message-nouveau.gif), un message lu et avec des réponses (message.gif) et un message populaire (message-hot.gif). C'est icône sont présentes dans le répertoire themes/mon_theme/images/.

5.2 - Personnalisation des smileys

Les images des smileys se trouvent dans le répertoire images/smiley. Pour que les images puissent apparaître dans la liste et dans les messages, il faut configurer le fichier include/smileys.php. Pour le modifier, il vous faut impérativement connaître les bases du PHP. C'est à dire, la variable contenant la liste des smileys, avec leur code de remplacement et leur description se nomme $smiley[]. Le premier champ est le code de remplacement, le deuxième est le nom de l'image, le troisème est la description. Exemple :
$smiley[] = array("Z:-)", "diable.gif", "Diablotin");
Indique que le texte Z:-) présent dans les messages est remplacé par l'image diable.gif. Quand on se position sur l'image, la description apparaîtra.

5.3 - Personnalisation du BBCode

Le BBCode, code permettant d'insérer des balises HTML, sans que ce soit du code HTML, évitant ainsi des attaques, se trouve dans le fichier include/bbcode.php.
Comme pour les smileys, le bbcode est stocké dans la variable
$bbcode[] = array("[b]", "<b>", "Balise d'ouverture du texte en gras") ;
Le premier champ, est le code BBCode, le deuxième est la correspondance en code HTML. Le dernier champs est la description.

5.4 - Personnalisation de la censure

La censure est enregistré dans le fichier include/censure.php. La variable $texte_a_inserer contient le texte qui remplacera les mots interdits. On peut dans ce texte mettre du BBCode.
La variable $censure contient les mots ou brides de mots qui doivent être censurés. Exemple, si on veut censurer les mots commencant par encu et merde, il faut entrer la ligne suivante :
$censure = array("merde", "encu") ;

Il faut préciser que seul les morceaux présent dans le tableau sont supprimés et non les mots entier.

5.5 - Personnalisation de l'e-mail envoyé automatiquement

Vous pouvez personnaliser l'e-mail qui est envoyé automatiquement quand une réponse est donnée à un message. Le fichier include/email.php contient cet e-mail. Le fichier est au format d'un fichier PHP, balise ouvrant <?php et fermatant ?>, cependant, l'intérieur est un fichier texte normal.
La deuxième ligne du fichier est obligatoirement le titre de l'e-mail. Le reste, est le corps du message. Exemple ci-dessous :
<?php die ("Restricted access") ;
Titre du sujet
1ère ligne du message,
2ème ligne du message

4ème ligne du message ?>
Il faut noter que la dernière ligne, celle qui contient ?> n'apparait pas dans le message.
On peut mettre dans le titre, comme dans le message 4 constantes qui seront remplacé par les valeurs en rapport avec le message. Ces valeurs sont :

{ ADRESSE_AUTEUR } adresse e-mail de l'auteur de la réponse
{ TEXTE } réponse
{ AUTEUR } auteur de la réponse
{ SITE_WEB } nom du forum/du site
{ QUESTION } question posée

6 - Indication des tailles des champs de la base de données

Tous les champs exploités par NouveauMonoForum ont une longueur limitée. Les tableaux ci-dessous en font un récapitulatif :

Table contenant les questions
champs taille fonction
id 8 caractères maxi identificateur de la question
texte longueur maxi autorisé par la base de données texte du message
auteur 50 caractères maxi nom de l'auteur
date 10 caractères maxi date de post du message
mail 100 caractères maxi adresse e-mail
sujet 100 caractères maxi titre de la question
envoi 3 caractères (oui ou non) sdsdsd
date_reelle fixé par la base de données date de dernière lecture ou réponse

Table contenant les réponses
champs taille fonction
id 8 caractères maxi identificateur de la question
texte longueur maxi autorisé par la base de données texte du message
auteur 50 caractères maxi nom de l'auteur
date 10 caractères maxi date de post du message
mail 100 caractères maxi adresse e-mail
date_reelle fixé par la base de données date de dernière lecture ou réponse

7 - Mise à jour manuelle

La mise à jour manuelle comporte plusieurs étapes. Dans un premier temps, il va falloir extraire les données de l'ancien config.php pour le remettre dans le nouveau et dans les fichiers ajoutés.

7.1 - Configuration du site

Le fichier config.php c'est largement allègé pour ne contenir que ce qui concerne le site. Ainsi, la censure, les smileys et BBCode ont été séparés. On y trouve maintenant que les données exliquz dans 2.1 - Configuration.

7.2 - Smileys

Pour les smileys, il suffit de recopier le tableau $smiley dans le fichier include/smileys.php.

7.3 - BBCode

Comme pour les smileys, il suffit de recopier le tableau $bbcode dans le fichier include/bbcode.php.

7.4 - Censure

Recopier le tableau $censure et la viarable $texte_a_inserer dans le fichier include/censure.php.

7.5 - E-mail

La personnalisation de l'e-mail envoyé automatiquement se fait en suivant le chapitre 5.5 - Personnalisation de l'e-mail envoyé automatiquement.

7.6 - Mise à jour de la base de données

Pour mettre à jour votre base de données, exécuter les quatre requêtes suivantes :
UPDATE prefixe_question SET envoi='1' WHERE envoi='oui';
UPDATE prefixe_question SET envoi='0' WHERE envoi='non';
ALTER TABLE prefixe_question CHANGE `envoi` `envoi` TINYINT(1) NOT NULL;  
ALTER TABLE prefixe_reponse ADD `envoi` TINYINT(1) DEFAULT '0' NOT NULL;  

8 - Mise à jour automatiquement

Pour mettre à jour NFAQ 1.X vers NouveauMonoForum, il suffit de supprimer les fichiers présents dans la racines : forum.php, aide.php, fonctions.php, recherche.php, mais surtout pas config.php !!! Vous pouvez supprimer aussi tous les fichiers dans le répertoire include/. Ensuite copier tous les fichiers de NouveauMonoForum sur votre serveur. Ensuite, lancer le script http://monsite.com/repertoire_nouveau_mono_forum/install/.
Après avoir passer l'écran d'accueil et accèpté la licence, cliquez sur Mettre à jour NAFQ 1.X vers NouveauMonoForum.
Maintenant, un écran demandant si vous voulez sauvegarder les divers fichiers modifiés et de choisir le thème se présente.
Vous pouvez uniquement sauvegarder le fichier config.php, le reste dans le cardre d'une mise à jour n'est pas très intéressant.

9 - Variables GET

Nom variable Description
x numéro de la page en cours dans la liste des sujet présent dans la base.
y numéro de la page en cours dans la liste des réponses au sujet visioné ou à la recherche lancé.
sens sens du classement de la liste des sujets. 0 = croissant, 1 = décroissant
classement indique comment est classée la liste des sujets. 0 = date,1 = auteur, 2 = sujet, 3 = date de dernière lecture/réponse
aide 1 = afficher l'aide
rechercher 1 = affiche le formulaire de recherche
newpost 1 = afficher formulaire pour ajouter un sujet
licence 1 = affiche la licence
id id du message concerné
titre titre du message concerné. Sert uniquement pour allèger les requêtes SQL pour connaître le titre du sujet. N'ai utilisé que pour l'affichage et n'interface pas avec la base de données.
voirsujet 1 = affiche le dont l'id est passé en paramètre
repondre 1 = afficher forumaire pour ajouter un réponse à un sujet