2 require_once("classes.php"); 3 $sk = Factory::getSkeleton();
5 $Data = Factory::getDB();
9 // Enregistrement éventuel d'un commentaire dans la base de données
10 $Auteur=$Req->get('Auteur'); 11 $Adresse=$Req->get('Adresse'); 12 $AdresseMail = $Req->get('AdresseMail'); 13 $Comment=$Req->get('Comment'); 14 $DateComment=gmdate("Y-m-d H:i:s", time() + 3600*2); 16 // Si on essaie d'ajouter un commentaire et que la graine n'est pas bonne
17 if(!empty($Comment) && $_SESSION['commentSeed'] != $Req->get('seed', null, 't')) 18 die("L'ajout de commentaire doit se faire à partir du formulaire de ce blog"); 20 if(!is_null($Auteur) && $Auteur!='Votre Nom' && $Auteur != $Adresse && !empty($Comment) && strlen($Comment) > 6 && strpos($Comment, 'xanga') === false) { 21 // Prévention d'un "cassage" par ajout d'un commentaire incorrectement formaté
22 $ip = $_SERVER['REMOTE_ADDR'];
23 $Auteur = str_replace(array('<', '>'), array('<', '>'), $Auteur); 26 require_once('akismet.class.php'); 29 'email' => $AdresseMail,
30 'website' => $Adresse,
32 'permalink' => 'http://defr.org/blog/posts/' . $id
34 $ak = new akismet('http://defr.org/blog', AKISMET_API_KEY, $comment); 35 if(!$ak->errorsExist())
36 $visibleBool = !$ak->isSpam();
38 // Suppression d'un gros lourd
39 $visibleBool &= (ereg('^ma[0-9]+zda$', $Auteur) === false); 40 $visible = $visibleBool ? 1 : 0;
42 if(DOMDocument::loadXML('<comment>' . $Comment . '</comment>')) { 44 INSERT INTO Commentaires(MessId, Auteur, Adresse, AdresseMail, Comment, DateComment, ip, Visible)
45 VALUES({$id}, '{$Auteur}', '{$Adresse}', '{$AdresseMail}', '{$Comment}', '{$DateComment}', '{$ip}', $visible) 47 $Data->Query("UPDATE Mess SET NbCommentaires=NbCommentaires+1 WHERE num_mess={$id}"); 49 mail(ADMIN_MAIL, 'Nouveau commentaire de ' . $Auteur, $Auteur . " vient de mettre en ligne le commentaire suivant: \n" . wordwrap($Comment, 70));
52 $infos = 'Votre commentaire doit etre fait de XML valide pour apparaitre.';
56 // Ajout du post au squelette
57 $Data->Query("SELECT * FROM Mess WHERE num_mess = {$id}"); 58 $row = $Data->GetRow();
59 $post = new Post($row);
60 $sk->addBlogPost($post->format());
61 $sk->checkUpdateTime(strtotime($row['DatePost']));
63 // On définit le titre
64 $sk->setTitle($row['Titre'] . ' - Dual Blog');
66 // Récupération des commentaires
67 $Data->Query("SELECT * FROM Commentaires Where MessId={$id} AND Visible=1 ORDER BY num_comm"); 68 $defaultGravatar = urlencode(BLOG_DEFAULT_GRAVATAR);
69 while(0 !== ($row = $Data->GetRow())) { 70 $commentTpl = new Template(Skeleton::getTemplateFile('comment')); 71 $dateFormatee = strftime(" à %Hh%M, le %A %d %B %Y", strtotime($row['DateComment'])); 72 $dateFormateeISO = date('c', strtotime($row['DateComment'])); 73 $AdresseMail = $row['AdresseMail'];
74 $grav_id = md5($AdresseMail);
75 $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar;
76 $Comment = nl2br($row['Comment']);
77 $Comment = str_replace(" & ", " & ", $Comment); 78 $commentFrag = $commentTpl->getDocumentFragment();
79 $commentFrag->appendXML($Comment);
81 '#gravatar@src' => $grav_url,
82 '#auteur@href' => $post->getURL() . '#c' . $row['num_comm'],
83 '#auteur@name' => 'c' . $row['num_comm'],
84 '#auteur' => $row['Auteur'],
85 'commentDate' => $dateFormatee,
86 'commentDateISO' => $dateFormateeISO,
87 'commentNumber' => $row['num_comm'],
88 'comment' => $commentFrag,
90 if(stristr($row['Adresse'], 'http://')) { 91 $params['#auteur@href'] = $row['Adresse'];
93 $commentTpl->setParams(array_merge($post->getTplParams(), $params));
94 $sk->addBlogPost($commentTpl);
95 $sk->checkUpdateTime(strtotime($row['DateComment']));
98 // Génération de la graine (cette dernière permet de s'assurer
99 // que l'essai d'ajout de commentaire provient bien de ce
100 // formulaire, et en conséquence devrait permettre de réduire
102 $seed = md5(time() . 'DualBlog');
103 $_SESSION['commentSeed'] = $seed;
105 // Ajout du formulaire d'enregistrement de commentaires
106 $commentForm = new Template('commentForm.xml'); 107 $commentForm->setParams(array('#Seed@value' => $seed)); 108 $sk->setParams(array('commentForm' => $commentForm));