defr/DualBlog

view comment.php @ 61:25c6e59f019e

Suppression des urls en dur présentes dans le code.

Le code ne présuppose plus qu'il est hébergé directement sur
http://defr.org/blog. Ce n'est par contre pas vrai pour les différents
templates pour le moment, et les fichiers CSS pensent toujours qu'on est
hébergé dans le repertoire /blog, mais ca reste des présupposés à mon avis
moins ennuyeux.

Accessoirement, le code suppose que les trois constantes supplémentaires
suivantes ait été définie dans le fichier config.php:

BLOG_URL, l'adresse du blog, sans / à la fin
BLOG_DEFAULT_GRAVATAR, l'image par défaut pour les personnes laissant des
commentaires
ADMIN_MAIl, l'adresse mail ou sont envoyé les informations sur les
commentaires autorisés.
author Franck Deroche <webmaster@defr.org>
date Tue Mar 11 15:53:15 2008 +0100 (2008-03-11)
parents ef5fd86d30ec
children d4f26e9767bf
line source
1 <?php
2 require_once("classes.php");
3 $sk = Factory::getSkeleton();
4 $id = $_GET['id'];
5 $Data = Factory::getDB();
6 $Req = new Requete;
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)) {
21 // Prévention d'un "cassage" par ajout d'un commentaire incorrectement formaté
22 $ip = $_SERVER['REMOTE_ADDR'];
23 $Auteur = str_replace(array('<', '>'), array('&lt;', '&gt;'), $Auteur);
24 if(DOMDocument::loadXML('<comment>' . $Comment . '</comment>')) {
25 $Data->debugQuery("
26 INSERT INTO Commentaires(MessId, Auteur, Adresse, AdresseMail, Comment, DateComment, ip)
27 VALUES({$id}, '{$Auteur}', '{$Adresse}', '{$AdresseMail}', '{$Comment}', '{$DateComment}', '{$ip}')
28 ");
29 $Data->Query("UPDATE Mess SET NbCommentaires=NbCommentaires+1 WHERE num_mess={$id}");
30 mail(ADMIN_MAIL, 'Nouveau commentaire de ' . $Auteur, $Auteur . " vient de mettre en ligne le commentaire suivant: \n" . wordwrap($Comment, 70));
31 }
32 else {
33 $infos = 'Votre commentaire doit etre fait de XML valide pour apparaitre.';
34 }
35 }
37 // Ajout du post au squelette
38 $Data->Query("SELECT * FROM Mess WHERE num_mess = {$id}");
39 $row = $Data->GetRow();
40 $post = new Post($row);
41 $sk->addBlogPost($post->format());
42 $sk->checkUpdateTime(strtotime($row['DatePost']));
44 // On définit le titre
45 $sk->setTitle($row['Titre'] . ' - Dual Blog');
47 // Récupération des commentaires
48 $Data->Query("SELECT * FROM Commentaires Where MessId={$id} AND Visible=1 ORDER BY num_comm");
49 $defaultGravatar = urlencode(BLOG_DEFAULT_GRAVATAR);
50 while(0 !== ($row = $Data->GetRow())) {
51 $commentTpl = new Template(Skeleton::getTemplateFile('comment'));
52 $dateFormatee = strftime(" à %Hh%M, le %A %d %B %Y", strtotime($row['DateComment']));
53 $dateFormateeISO = date('c', strtotime($row['DateComment']));
54 $AdresseMail = $row['AdresseMail'];
55 $grav_id = md5($AdresseMail);
56 $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar;
57 $Comment = nl2br($row['Comment']);
58 $Comment = str_replace(" & ", " &amp; ", $Comment);
59 $commentFrag = $commentTpl->getDocumentFragment();
60 $commentFrag->appendXML($Comment);
61 $params = array(
62 '#gravatar@src' => $grav_url,
63 '#auteur@href' => $post->getURL() . '#c' . $row['num_comm'],
64 '#auteur@name' => 'c' . $row['num_comm'],
65 '#auteur' => $row['Auteur'],
66 'commentDate' => $dateFormatee,
67 'commentDateISO' => $dateFormateeISO,
68 'commentNumber' => $row['num_comm'],
69 'comment' => $commentFrag,
70 );
71 if(stristr($row['Adresse'], 'http://')) {
72 $params['#auteur@href'] = $row['Adresse'];
73 }
74 $commentTpl->setParams(array_merge($post->getTplParams(), $params));
75 $sk->addBlogPost($commentTpl);
76 $sk->checkUpdateTime(strtotime($row['DateComment']));
77 }
79 // Génération de la graine (cette dernière permet de s'assurer
80 // que l'essai d'ajout de commentaire provient bien de ce
81 // formulaire, et en conséquence devrait permettre de réduire
82 // le spam.
83 $seed = md5(time() . 'DualBlog');
84 $_SESSION['commentSeed'] = $seed;
86 // Ajout du formulaire d'enregistrement de commentaires
87 $commentForm = new Template('commentForm.xml');
88 $commentForm->setParams(array('#Seed@value' => $seed));
89 $sk->setParams(array('commentForm' => $commentForm));
91 echo $sk;
92 ?>