<?php
// #####################################################################################
// =============================================================================
// Comment'R 1.0 - (c) 2000 Thierry Arsicaud (deltascripts@ifrance.com)
// =============================================================================
//
// *************************************************************************************
// Ce script affiche la liste des commentaires postés par les utilisateurs par groupes
// ou pages de N commentaires (nombre à définir ci-dessous). Il affiche également un
// formulaire offrant la possibilité d'envoyer de nouveaux commentaires.
//
// Configuration de paramètres d'affichage des deux tableaux utilisés pour
// la mise en forme de la page :
// Tableau A (1 colonne, 2n+1 lignes) : le tableau comprend 1 ligne d'entête, et 2n lignes
// permettant d'afficher alternativement le nom de l'auteur et le texte du commentaire
// Tableau B : affichage du formulaire permettant de poster un nouveau commentaire
// (1 colonne, 2 lignes dont 1 ligne d'entête)
//
// Modifiez les paramètres ci-dessous en n'oubliant pas de refermer
// les guillemets et le point virgule
// *************************************************************************************

// === Paramètres d'affichage du TableauA (affichage des commentaires déjà postés) ===

$largeurTableauxA="80%";                             // Largeur du TableauA
$couleurBordTableauA="#bbbbbb";                      // Couleur de la bordure du TableauA
$couleurFondEnteteTableauA="#006600";                // Couleur de fond de la ligne d'entête du tableauA
$policeEnteteTableauA="verdana";                     // Police utilisée dans la ligne d'entête du tableauA
$couleurPoliceEnteteTableauA="#000000";              // Couleur de la police utilisée dans la ligne d'entête du tableauA
$couleurFondLigneNomAuteurTableauA="#F6F6F6";        // Couleur de fond des lignes "Nom de l'auteur"
$policeLignesNomAuteurTableauA="verdana";            // Police utilisée dans les lignes "Nom de l'auteur"
$couleurPoliceLignesNomAuteurTableauA="#000000";     // Couleur de la police utilisée dans les lignes "Nom de l'auteur"
$couleurFondLigneCommentaireTableauA="#ffffff";      // Couleur de fond des lignes "Commentaire"
$policeLignesCommentairesTableauA="times";           // Police utilisée dans les lignes "Commentaire"
$couleurPoliceLignesCommentairesTableauA="#000000";  // Couleur de la police utilisée dans les lignes "Commentaire"

$NombreComParPage=10;              // Nombre maximum de commentaires à afficher dans le tableau (par page)
$NombreMaxPages=20;                // Nombre maximum de pages de commentaires susceptibles d'être affichées

// === Paramètres d'affichage du TableauB (affichage du formulaire permettant d'ajouter un nouveau commentaire) ===

$largeurTableauxB="80%";                             // Largeur du TableauB
$couleurBordTableauB="#bbbbbb";                      // Couleur de la bordure du TableauB
$couleurFondEnteteTableauB="#006600";                // Couleur de fond de la ligne d'entête du tableauB
$policeEnteteTableauB="verdana";                     // Police utilisée dans la ligne d'entête du tableauB
$couleurPoliceEnteteTableauB="#000000";              // Couleur de la police utilisée dans la ligne d'entête du tableauB
$couleurFondFormulaireTableauB="#F6F6F6";            // Couleur de fond de la cellule affichant le formulaire
$policeFondFormulaireTableauB="verdana";             // Police utilisée dans la cellule affichant le formulaire
$couleurPoliceFondFormulaireTableauB="#000000";      // Couleur de la police utilisée dans la cellule affichant le formulaire

// === Paramètres destinés au contrôle des messages postés (dispositif "anti-piratage") ===

$longueurMaxCommentaires="10000";   // Nombre maximum de caractères pouvant être postés dans un commentaire
$longueurMaxMots="50";              // Nombre maximum de caractères par "mot" (ce dispositif permet d'empêcher une éventuelle augmentation incontrôlée de la largeur des tableaux)

// #####################################################################################
?>


<?php
// #####################################################################################
// ****************************************************************************************
// Vérification du nombre de caractères envoyés dans le commentaire éventuellement posté.
// (certains utilisateurs mal intentionnés pourraient être tentés d'envoyer des commentaires
// comportant un très grand nombre de caractères, dans le but de ralentir le temps
// d'affichage du livre d'or)
// ****************************************************************************************

if((@ strlen($n)>$longueurMaxCommentaires) or (@ strlen($c)>$longueurMaxCommentaires)) {
  print("Désolé, la taille maximale des commentaires pouvant être postés est limitée à $longueurMaxCommentaires caractères.<br>\n");
  print("<a href=\"livredor.php3\">Retour au Livre d'Or</a>\n");
  exit;
}
// #####################################################################################
?>

<html>
<head>
<title>Livre d'Or</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#0000EE" vlink="#800080">
<center>
  <h3><img src="../img/interface/banniere.jpg" width="400" height="136"></h3>
  <h3><font face="verdana"><b>- &nbsp; <font color="#006600">LIVRE D'OR</font> 
    &nbsp; -</b> </font> </h3>
</center>
<br>

<!- inserez la première partie de votre code html ici ->

<?php
// #####################################################################################
// ***********************************************************************************
// Création du fichier livre.dat s'il n'existe pas
// ***********************************************************************************

if(!file_exists("livre.dat")) {
  $idFicLivre=fopen("livre.dat","w+");
    fputs($idFicLivre,"Fichier Index. Ne pas éditer !\n");
  fclose($idFicLivre);
}

if(!isset($c)) $c="";
if(!isset($n)) $n="";
if(!isset($p)) $p="";

// ***********************************************************************************
// Définition de la fonction coupeMotsLongs($chaine,$ncaracteres) destinée à découper
// mots contenants plus de $ncaracteres caractères.
// (certains utilisateurs envoient parfois des textes contenant des mots très long,
// ce qui a pour effet d'altérer la structure d'affichage des tableaux)
// ***********************************************************************************

function coupeMotsLongs($chaine,$ncaracteres) {
  $chaineRes=$chaine;
  while(ereg("([^ ]{".$ncaracteres."})[^ ]",$chaineRes,$corres)) {
    $partRep=$corres[1];
    $chaineRes=ereg_replace($partRep,$partRep." <br> ",$chaineRes);
  }
  return($chaineRes);
}

// ***********************************************************************************
// Nettoyage et enregistrement des nouveaux commentaires envoyés lors de l'appel du script
// ***********************************************************************************

if ($c and $n) {

  // détermination de la date
  $tdate=getdate();
  $jour=sprintf("%02.2d",$tdate["mday"])."/".sprintf("%02.2d",$tdate["mon"])."/".$tdate["year"];
  $heure=sprintf("%02.2d",$tdate["hours"])."H".sprintf("%02.2d",$tdate["minutes"]);
  $d=$jour." à ".$heure;

  // nettoyage du nom
  $n=htmlentities($n);
  $n=stripslashes($n);
  $n=trim($n);

  // nettoyage du commentaire
  $c=htmlentities($c);
  $c=str_replace(chr(10)," <br> ",$c);
  $c=str_replace(chr(13),"",$c);
  $c=stripslashes($c);
  $c=trim($c);

  $idFicLivreCom=fopen("livre.dat","a+");
  fputs($idFicLivreCom,$n);         // 1ère ligne
  fputs($idFicLivreCom,"|");        //
  fputs($idFicLivreCom,$d."|\n");   //
  fputs($idFicLivreCom,$c."\n");    // 2ème ligne
  fclose($idFicLivreCom);

}

// ***********************************************************************************
// Lecture des messages déjà postés dans le livre, et stockage des données
// dans les tableaux $nom et $commentaire
// ***********************************************************************************

$TabLivre=file("livre.dat");
$nLignesTabLivre=count($TabLivre)-1;
$nCommentaires=$nLignesTabLivre/2;

for($compt=1;$compt<=$nCommentaires;$compt++) {
  $nom[$compt]=trim(stripslashes(strtok($TabLivre[($compt*2)-1],"|")));
  $date[$compt]=trim(stripslashes(strtok("|")));
  $commentaire[$compt]=trim(stripslashes($TabLivre[($compt*2)]));
}

// ***********************************************************************************
// Affichage d'un message de remerciement au cas ou un commentaire a été envoyé en même
// temps que l'appel du script
// ***********************************************************************************

if($n and $c)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Merci pour votre participation !</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}

// ***********************************************************************************
// Affichage des commentaires déjà postés dans un tableau
// ***********************************************************************************

if(!$p) {
  $p=1;   // $p représente le numéro de la page de commentaire à afficher : par défaut, $p=1
}

if($nCommentaires>0) {

  print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxA\" align=\"center\" bgcolor=\"$couleurBordTableauA\"> \n");
  print("<tr><td> \n");

    print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

    print("<tr> \n");
    print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"30\"> \n");

    if($nCommentaires>$NombreComParPage) {
       print("<center> \n");
      print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
      print("<b>pages</b> &nbsp; \n");
      print("<b> \n");
      for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
        if($a==$p) print("$a &nbsp; \n");
        else print("<a href=\"livredor.php3?p=$a\">$a</a> &nbsp; \n");
      }
      print("</b> \n");
      print("</font> \n");
      print("</center> \n");
    }

    print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
    print("<center> \n");
    print("<b><a href=\"#ajout\">ajouter un nouveau commentaire</a></b> <br> \n");
    print("</center> \n");
    print("</font> \n");
    print("</td> \n");
    print("</tr> \n");

    for($compt=($nCommentaires-(($p-1)*$NombreComParPage));$compt>=max(1,($nCommentaires-($p*$NombreComParPage)+1));$compt--) {
      print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"10\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"><b>".coupeMotsLongs($nom[$compt],$longueurMaxMots)."</b> a écrit, le ".$date[$compt]." :</font> \n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
      print("<tr><td bgcolor=\"$couleurFondLigneCommentaireTableauA\"> \n");
        print("<table> \n");
        print("<tr> \n");
        print("<td width=\"20\">&nbsp;</td> \n");
        print("<td> \n");
        print("<font face=\"$policeLignesCommentairesTableauA\" color=\"$couleurPoliceLignesCommentairesTableauA\">".coupeMotsLongs($commentaire[$compt],$longueurMaxMots)."</font>\n");
        print("</td> \n");
        print("</tr> \n");
        print("</table> \n");
      print("</td></tr> \n");
    }

    if(($nCommentaires>$NombreComParPage) and $p<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1))) {
      print("<tr> \n");
      print("<td bgcolor=\"$couleurFondEnteteTableauA\" height=\"20\"> \n");
      print("<center> \n");
      print("<font face=\"$policeEnteteTableauA\" color=\"$couleurPoliceEnteteTableauA\" size=\"-2\"> \n");
      print("<b>pages</b> &nbsp; \n");
      print("<b> \n");
      for($a=1;$a<=min($NombreMaxPages,floor((($nCommentaires-1)/$NombreComParPage)+1));$a++) {
        if($a==$p) print("$a &nbsp; \n");
        else print("<a href=\"livredor.php3?p=$a\">$a</a> &nbsp; \n");
      }
      print("</b> \n");
      print("</font> \n");
      print("</center> \n");
      print("</td> \n");
      print("</tr> \n");
    }

    print("</table> \n");

  print("</td></tr> \n");

  print("</table> \n");

  print("<br> \n");

}

// *********************************************************************************************
// Affichage d'un message d'avertissement au cas où aucun commentaire n'a été encore été envoyé
// *********************************************************************************************

if($nCommentaires<1)  {
  print("<table align=\"center\" width=\"$largeurTableauxA\" border=\"1\"> \n");
  print("<tr><td bgcolor=\"$couleurFondLigneNomAuteurTableauA\" height=\"30\"> \n");
  print("<center> \n");
  print("<font face=\"$policeLignesNomAuteurTableauA\" color=\"$couleurPoliceLignesNomAuteurTableauA\" size=\"-1\"> \n");
  print("<b>Le livre d'or ne comporte encore aucun commentaire.</b> \n");
  print("</font> \n");
  print("</center> \n");
  print("</td></tr> \n");
  print("</table> \n");
  print("<br> \n");
}


// ***********************************************************************************
// Affichage du formulaire permettant de poster un nouveau commentaire
// ***********************************************************************************


print("<a name=\"ajout\"></a>");

print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"$largeurTableauxB\" align=\"center\" bgcolor=\"$couleurBordTableauB\"> \n");
print("<tr><td> \n");

  print("<table border=\"0\" width=\"100%\" cellspacing=\"1\" align=\"center\" cellpadding=\"5\"> \n");

  print("<tr> \n");
  print("<td bgcolor=\"$couleurFondEnteteTableauB\" height=\"30\"> \n");
  print("<font face=\"$policeEnteteTableauB\" color=\"$couleurPoliceEnteteTableauB\" size=\"-1\"> \n");

  if($nCommentaires>0) print("<b><center><font color=\"#FFFFFF\">Ajouter un nouveau commentaire :</font></center></b> \n");
  else print("<b><center><font color=\"#FFFFFF\">Envoyer un premier commentaire :</font></center></b> \n");

  print("</font> \n");
  print("</td> \n");
  print("</tr> \n");

  print("<tr><td bgcolor=\"$couleurFondFormulaireTableauB\"> \n");
  print("<form method=\"POST\" action=\"livredor.php3\"> \n");
  print("<center> \n");
  print("<br> \n");
  print("<font face=\"$policeFondFormulaireTableauB\" color=\"$couleurPoliceFondFormulaireTableauB\" size=\"-1\"> \n");
  print("<b>Votre nom</b> :&nbsp; \n");
  print("</font> \n");
  print("<input type=\"text\" name=\"n\" size=\"22\"> \n");
  print("<br><br> \n");
  print("<textarea rows=\"6\" name=\"c\" cols=\"40\" wrap=\"virtual\"></textarea> \n");
  print("<br> \n");
  print("<input type=\"submit\" value=\"Envoyer !\" name=\"B1\"> \n");
  print("</form> \n");
  print("</td></tr> \n");

  print("</table> \n");

print("</td></tr> \n");
print("</table> \n");

// #####################################################################################
?>


<!- inserez la seconde partie de votre code html ici ->

</body>
</html>
