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@64
|
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@64
|
19 |
webmaster@64
|
20 if(!is_null($Auteur) && $Auteur!='Votre Nom' && $Auteur != $Adresse && !empty($Comment) && strlen($Comment) > 6 && strpos($Comment, 'xanga') === false) { |
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@64
|
24 |
webmaster@64
|
25 /* Akismet */ |
webmaster@64
|
26 require_once('akismet.class.php'); |
webmaster@64
|
27 $comment = array( |
webmaster@64
|
28 'author' => $Auteur, |
webmaster@64
|
29 'email' => $AdresseMail, |
webmaster@64
|
30 'website' => $Adresse, |
webmaster@64
|
31 'body' => $Comment, |
webmaster@64
|
32 'permalink' => 'http://defr.org/blog/posts/' . $id |
webmaster@64
|
33 ); |
webmaster@64
|
34 $ak = new akismet('http://defr.org/blog', AKISMET_API_KEY, $comment); |
webmaster@64
|
35 if(!$ak->errorsExist()) |
webmaster@64
|
36 $visibleBool = !$ak->isSpam(); |
webmaster@64
|
37 |
webmaster@64
|
38 // Suppression d'un gros lourd |
webmaster@64
|
39 $visibleBool &= (ereg('^ma[0-9]+zda$', $Auteur) === false); |
webmaster@64
|
40 $visible = $visibleBool ? 1 : 0; |
webmaster@64
|
41 |
webmaster@0
|
42 if(DOMDocument::loadXML('<comment>' . $Comment . '</comment>')) { |
webmaster@0
|
43 $Data->debugQuery(" |
webmaster@64
|
44 INSERT INTO Commentaires(MessId, Auteur, Adresse, AdresseMail, Comment, DateComment, ip, Visible) |
webmaster@64
|
45 VALUES({$id}, '{$Auteur}', '{$Adresse}', '{$AdresseMail}', '{$Comment}', '{$DateComment}', '{$ip}', $visible) |
webmaster@0
|
46 "); |
webmaster@0
|
47 $Data->Query("UPDATE Mess SET NbCommentaires=NbCommentaires+1 WHERE num_mess={$id}"); |
webmaster@64
|
48 if($visibleBool) |
webmaster@64
|
49 mail(ADMIN_MAIL, 'Nouveau commentaire de ' . $Auteur, $Auteur . " vient de mettre en ligne le commentaire suivant: \n" . wordwrap($Comment, 70)); |
webmaster@0
|
50 } |
webmaster@0
|
51 else { |
webmaster@0
|
52 $infos = 'Votre commentaire doit etre fait de XML valide pour apparaitre.'; |
webmaster@0
|
53 } |
webmaster@0
|
54 } |
webmaster@0
|
55 |
webmaster@16
|
56 // Ajout du post au squelette |
webmaster@0
|
57 $Data->Query("SELECT * FROM Mess WHERE num_mess = {$id}"); |
webmaster@0
|
58 $row = $Data->GetRow(); |
webmaster@16
|
59 $post = new Post($row); |
webmaster@16
|
60 $sk->addBlogPost($post->format()); |
webmaster@36
|
61 $sk->checkUpdateTime(strtotime($row['DatePost'])); |
webmaster@16
|
62 |
webmaster@22
|
63 // On définit le titre |
webmaster@22
|
64 $sk->setTitle($row['Titre'] . ' - Dual Blog'); |
webmaster@22
|
65 |
webmaster@16
|
66 // Récupération des commentaires |
webmaster@1
|
67 $Data->Query("SELECT * FROM Commentaires Where MessId={$id} AND Visible=1 ORDER BY num_comm"); |
webmaster@61
|
68 $defaultGravatar = urlencode(BLOG_DEFAULT_GRAVATAR); |
webmaster@0
|
69 while(0 !== ($row = $Data->GetRow())) { |
webmaster@32
|
70 $commentTpl = new Template(Skeleton::getTemplateFile('comment')); |
webmaster@57
|
71 $dateFormatee = strftime(" à %Hh%M, le %A %d %B %Y", strtotime($row['DateComment'])); |
webmaster@33
|
72 $dateFormateeISO = date('c', strtotime($row['DateComment'])); |
webmaster@16
|
73 $AdresseMail = $row['AdresseMail']; |
webmaster@16
|
74 $grav_id = md5($AdresseMail); |
webmaster@23
|
75 $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar; |
webmaster@16
|
76 $Comment = nl2br($row['Comment']); |
webmaster@16
|
77 $Comment = str_replace(" & ", " & ", $Comment); |
webmaster@16
|
78 $commentFrag = $commentTpl->getDocumentFragment(); |
webmaster@16
|
79 $commentFrag->appendXML($Comment); |
webmaster@16
|
80 $params = array( |
webmaster@16
|
81 '#gravatar@src' => $grav_url, |
webmaster@30
|
82 '#auteur@href' => $post->getURL() . '#c' . $row['num_comm'], |
webmaster@16
|
83 '#auteur@name' => 'c' . $row['num_comm'], |
webmaster@16
|
84 '#auteur' => $row['Auteur'], |
webmaster@16
|
85 'commentDate' => $dateFormatee, |
webmaster@33
|
86 'commentDateISO' => $dateFormateeISO, |
webmaster@32
|
87 'commentNumber' => $row['num_comm'], |
webmaster@16
|
88 'comment' => $commentFrag, |
webmaster@16
|
89 ); |
webmaster@16
|
90 if(stristr($row['Adresse'], 'http://')) { |
webmaster@16
|
91 $params['#auteur@href'] = $row['Adresse']; |
webmaster@16
|
92 } |
webmaster@32
|
93 $commentTpl->setParams(array_merge($post->getTplParams(), $params)); |
webmaster@16
|
94 $sk->addBlogPost($commentTpl); |
webmaster@36
|
95 $sk->checkUpdateTime(strtotime($row['DateComment'])); |
webmaster@0
|
96 } |
webmaster@16
|
97 |
webmaster@24
|
98 // Génération de la graine (cette dernière permet de s'assurer |
webmaster@24
|
99 // que l'essai d'ajout de commentaire provient bien de ce |
webmaster@24
|
100 // formulaire, et en conséquence devrait permettre de réduire |
webmaster@24
|
101 // le spam. |
webmaster@24
|
102 $seed = md5(time() . 'DualBlog'); |
webmaster@24
|
103 $_SESSION['commentSeed'] = $seed; |
webmaster@24
|
104 |
webmaster@24
|
105 // Ajout du formulaire d'enregistrement de commentaires |
webmaster@16
|
106 $commentForm = new Template('commentForm.xml'); |
webmaster@24
|
107 $commentForm->setParams(array('#Seed@value' => $seed)); |
webmaster@31
|
108 $sk->setParams(array('commentForm' => $commentForm)); |
webmaster@16
|
109 |
webmaster@16
|
110 echo $sk; |
webmaster@0
|
111 ?> |