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@48
|
17 if(!empty($Comment) && $_SESSION['commentSeed'] != $Req->get('seed', null, 't')) |
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('<', '>'), $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@36
|
42 $sk->checkUpdateTime(strtotime($row['DatePost'])); |
webmaster@16
|
43 |
webmaster@22
|
44 // On définit le titre |
webmaster@22
|
45 $sk->setTitle($row['Titre'] . ' - Dual Blog'); |
webmaster@22
|
46 |
webmaster@16
|
47 // Récupération des commentaires |
webmaster@1
|
48 $Data->Query("SELECT * FROM Commentaires Where MessId={$id} AND Visible=1 ORDER BY num_comm"); |
webmaster@0
|
49 $defaultGravatar = urlencode("http://defr.org/Misc/NoGravatar.png"); |
webmaster@0
|
50 while(0 !== ($row = $Data->GetRow())) { |
webmaster@32
|
51 $commentTpl = new Template(Skeleton::getTemplateFile('comment')); |
webmaster@16
|
52 $dateFormatee = strftime(" à %Hh%M le <span class='Date'>%A %d %B %Y</span>", strtotime($row['DateComment'])); |
webmaster@33
|
53 $dateFormateeISO = date('c', strtotime($row['DateComment'])); |
webmaster@16
|
54 $AdresseMail = $row['AdresseMail']; |
webmaster@16
|
55 $grav_id = md5($AdresseMail); |
webmaster@23
|
56 $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar; |
webmaster@16
|
57 $Comment = nl2br($row['Comment']); |
webmaster@16
|
58 $Comment = str_replace(" & ", " & ", $Comment); |
webmaster@16
|
59 $commentFrag = $commentTpl->getDocumentFragment(); |
webmaster@16
|
60 $commentFrag->appendXML($Comment); |
webmaster@16
|
61 $params = array( |
webmaster@16
|
62 '#gravatar@src' => $grav_url, |
webmaster@30
|
63 '#auteur@href' => $post->getURL() . '#c' . $row['num_comm'], |
webmaster@16
|
64 '#auteur@name' => 'c' . $row['num_comm'], |
webmaster@16
|
65 '#auteur' => $row['Auteur'], |
webmaster@16
|
66 'commentDate' => $dateFormatee, |
webmaster@33
|
67 'commentDateISO' => $dateFormateeISO, |
webmaster@32
|
68 'commentNumber' => $row['num_comm'], |
webmaster@16
|
69 'comment' => $commentFrag, |
webmaster@16
|
70 ); |
webmaster@16
|
71 if(stristr($row['Adresse'], 'http://')) { |
webmaster@16
|
72 $params['#auteur@href'] = $row['Adresse']; |
webmaster@16
|
73 } |
webmaster@32
|
74 $commentTpl->setParams(array_merge($post->getTplParams(), $params)); |
webmaster@16
|
75 $sk->addBlogPost($commentTpl); |
webmaster@36
|
76 $sk->checkUpdateTime(strtotime($row['DateComment'])); |
webmaster@0
|
77 } |
webmaster@16
|
78 |
webmaster@24
|
79 // Génération de la graine (cette dernière permet de s'assurer |
webmaster@24
|
80 // que l'essai d'ajout de commentaire provient bien de ce |
webmaster@24
|
81 // formulaire, et en conséquence devrait permettre de réduire |
webmaster@24
|
82 // le spam. |
webmaster@24
|
83 $seed = md5(time() . 'DualBlog'); |
webmaster@24
|
84 $_SESSION['commentSeed'] = $seed; |
webmaster@24
|
85 |
webmaster@24
|
86 // Ajout du formulaire d'enregistrement de commentaires |
webmaster@16
|
87 $commentForm = new Template('commentForm.xml'); |
webmaster@24
|
88 $commentForm->setParams(array('#Seed@value' => $seed)); |
webmaster@31
|
89 $sk->setParams(array('commentForm' => $commentForm)); |
webmaster@16
|
90 |
webmaster@16
|
91 echo $sk; |
webmaster@0
|
92 ?> |