| 
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('<', '>'), $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 ?> |