annotate comment.php @ 30:fa43c43763a2

Attribution correcte des urls des commentaires, petit refactoring des posts On a maintenant une fonction séparée sur les posts permettant d'obtenir les différentes informations sur les posts, ce qui peut s'avérer utile si on veut les ré-utiliser par exemple sur les différents commentaires.
author Franck Deroche <webmaster@defr.org>
date Mon, 05 Nov 2007 08:46:49 +0100
parents b23b8f2a8c91
children 2d98421d43da
rev   line source
webmaster@0 1 <?php
webmaster@16 2 require_once("classes.php");
webmaster@16 3 $sk = Factory::getSkeleton();
webmaster@0 4 $id = $_GET['id'];
webmaster@16 5 $Data = Factory::getDB();
webmaster@0 6 $Req = new Requete;
webmaster@16 7
webmaster@16 8
webmaster@16 9 // Enregistrement éventuel d'un commentaire dans la base de données
webmaster@0 10 $Auteur=$Req->get('Auteur');
webmaster@0 11 $Adresse=$Req->get('Adresse');
webmaster@0 12 $AdresseMail = $Req->get('AdresseMail');
webmaster@0 13 $Comment=$Req->get('Comment');
webmaster@0 14 $DateComment=gmdate("Y-m-d H:i:s", time() + 3600*2);
webmaster@24 15
webmaster@24 16 // Si on essaie d'ajouter un commentaire et que la graine n'est pas bonne
webmaster@24 17 if(!empty($Comment) && $_SESSION['commentSeed'] != $Req->get('seed'))
webmaster@24 18 die("L'ajout de commentaire doit se faire à partir du formulaire de ce blog");
webmaster@24 19
webmaster@0 20 if(!is_null($Auteur) && $Auteur!='Votre Nom' && $Auteur != $Adresse && !empty($Comment)) {
webmaster@0 21 // Prévention d'un "cassage" par ajout d'un commentaire incorrectement formaté
webmaster@0 22 $ip = $_SERVER['REMOTE_ADDR'];
webmaster@0 23 $Auteur = str_replace(array('<', '>'), array('&lt;', '&gt;'), $Auteur);
webmaster@0 24 if(DOMDocument::loadXML('<comment>' . $Comment . '</comment>')) {
webmaster@0 25 $Data->debugQuery("
webmaster@0 26 INSERT INTO Commentaires(MessId, Auteur, Adresse, AdresseMail, Comment, DateComment, ip)
webmaster@0 27 VALUES({$id}, '{$Auteur}', '{$Adresse}', '{$AdresseMail}', '{$Comment}', '{$DateComment}', '{$ip}')
webmaster@0 28 ");
webmaster@0 29 $Data->Query("UPDATE Mess SET NbCommentaires=NbCommentaires+1 WHERE num_mess={$id}");
webmaster@0 30 mail('webmaster+blogcomment@defr.org', 'Nouveau commentaire sur de ' . $Auteur, $Auteur . " vient de mettre en ligne le commentaire suivant: \n" . wordwrap($Comment, 70));
webmaster@0 31 }
webmaster@0 32 else {
webmaster@0 33 $infos = 'Votre commentaire doit etre fait de XML valide pour apparaitre.';
webmaster@0 34 }
webmaster@0 35 }
webmaster@0 36
webmaster@16 37 // Ajout du post au squelette
webmaster@0 38 $Data->Query("SELECT * FROM Mess WHERE num_mess = {$id}");
webmaster@0 39 $row = $Data->GetRow();
webmaster@16 40 $post = new Post($row);
webmaster@16 41 $sk->addBlogPost($post->format());
webmaster@16 42
webmaster@22 43 // On définit le titre
webmaster@22 44 $sk->setTitle($row['Titre'] . ' - Dual Blog');
webmaster@22 45
webmaster@16 46 // Récupération des commentaires
webmaster@1 47 $Data->Query("SELECT * FROM Commentaires Where MessId={$id} AND Visible=1 ORDER BY num_comm");
webmaster@0 48 $defaultGravatar = urlencode("http://defr.org/Misc/NoGravatar.png");
webmaster@0 49 while(0 !== ($row = $Data->GetRow())) {
webmaster@16 50 $commentTpl = new Template('comment.xml');
webmaster@16 51 $dateFormatee = strftime(" à %Hh%M le <span class='Date'>%A %d %B %Y</span>", strtotime($row['DateComment']));
webmaster@16 52 $AdresseMail = $row['AdresseMail'];
webmaster@16 53 $grav_id = md5($AdresseMail);
webmaster@23 54 $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar;
webmaster@16 55 $Comment = nl2br($row['Comment']);
webmaster@16 56 $Comment = str_replace(" & ", " &amp; ", $Comment);
webmaster@16 57 $commentFrag = $commentTpl->getDocumentFragment();
webmaster@16 58 $commentFrag->appendXML($Comment);
webmaster@16 59 $params = array(
webmaster@16 60 '#gravatar@src' => $grav_url,
webmaster@30 61 '#auteur@href' => $post->getURL() . '#c' . $row['num_comm'],
webmaster@16 62 '#auteur@name' => 'c' . $row['num_comm'],
webmaster@16 63 '#auteur' => $row['Auteur'],
webmaster@16 64 'commentDate' => $dateFormatee,
webmaster@16 65 'comment' => $commentFrag,
webmaster@16 66 );
webmaster@16 67 if(stristr($row['Adresse'], 'http://')) {
webmaster@16 68 $params['#auteur@href'] = $row['Adresse'];
webmaster@16 69 }
webmaster@16 70 $commentTpl->setParams($params);
webmaster@16 71 $sk->addBlogPost($commentTpl);
webmaster@0 72 }
webmaster@16 73
webmaster@24 74 // Génération de la graine (cette dernière permet de s'assurer
webmaster@24 75 // que l'essai d'ajout de commentaire provient bien de ce
webmaster@24 76 // formulaire, et en conséquence devrait permettre de réduire
webmaster@24 77 // le spam.
webmaster@24 78 $seed = md5(time() . 'DualBlog');
webmaster@24 79 $_SESSION['commentSeed'] = $seed;
webmaster@24 80
webmaster@24 81 // Ajout du formulaire d'enregistrement de commentaires
webmaster@16 82 $commentForm = new Template('commentForm.xml');
webmaster@24 83 $commentForm->setParams(array('#Seed@value' => $seed));
webmaster@16 84 $sk->addBlogPost($commentForm);
webmaster@16 85
webmaster@16 86 echo $sk;
webmaster@0 87 ?>