webmaster@0: get('Auteur'); webmaster@0: $Adresse=$Req->get('Adresse'); webmaster@0: $AdresseMail = $Req->get('AdresseMail'); webmaster@0: $Comment=$Req->get('Comment'); webmaster@0: $DateComment=gmdate("Y-m-d H:i:s", time() + 3600*2); webmaster@64: webmaster@24: // Si on essaie d'ajouter un commentaire et que la graine n'est pas bonne webmaster@48: if(!empty($Comment) && $_SESSION['commentSeed'] != $Req->get('seed', null, 't')) webmaster@24: die("L'ajout de commentaire doit se faire à partir du formulaire de ce blog"); webmaster@64: webmaster@64: if(!is_null($Auteur) && $Auteur!='Votre Nom' && $Auteur != $Adresse && !empty($Comment) && strlen($Comment) > 6 && strpos($Comment, 'xanga') === false) { webmaster@0: // Prévention d'un "cassage" par ajout d'un commentaire incorrectement formaté webmaster@0: $ip = $_SERVER['REMOTE_ADDR']; webmaster@0: $Auteur = str_replace(array('<', '>'), array('<', '>'), $Auteur); webmaster@64: webmaster@64: /* Akismet */ webmaster@64: require_once('akismet.class.php'); webmaster@64: $comment = array( webmaster@64: 'author' => $Auteur, webmaster@64: 'email' => $AdresseMail, webmaster@64: 'website' => $Adresse, webmaster@64: 'body' => $Comment, webmaster@73: 'permalink' => BLOG_URL . '/posts/' . $id webmaster@64: ); webmaster@73: $ak = new akismet(BLOG_URL, AKISMET_API_KEY, $comment); webmaster@64: if(!$ak->errorsExist()) webmaster@64: $visibleBool = !$ak->isSpam(); webmaster@72: else webmaster@72: $visibleBool = true; webmaster@64: webmaster@64: // Suppression d'un gros lourd webmaster@64: $visibleBool &= (ereg('^ma[0-9]+zda$', $Auteur) === false); webmaster@64: $visible = $visibleBool ? 1 : 0; webmaster@64: webmaster@71: $doc = @DOMDocument::loadXML('' . stripslashes($Comment) . ''); webmaster@71: // Si le post est conforme XML, on recherche des balises indésirables webmaster@71: if($doc) webmaster@71: { webmaster@71: $bannedTags = array('script', 'object', 'iframe'); webmaster@71: foreach($bannedTags as $tagName) webmaster@71: { webmaster@71: $nl = $doc->getElementsByTagName($tagName); webmaster@71: if($nl->length > 0) webmaster@71: { webmaster@71: $Comment = htmlspecialchars($Comment); webmaster@71: break; webmaster@71: } webmaster@71: } webmaster@71: } webmaster@71: // Sinon le post n'est pas conforme XML, on supprime toute balise webmaster@71: else webmaster@71: $Comment = htmlspecialchars($Comment); webmaster@71: webmaster@0: $Data->debugQuery(" webmaster@64: INSERT INTO Commentaires(MessId, Auteur, Adresse, AdresseMail, Comment, DateComment, ip, Visible) webmaster@64: VALUES({$id}, '{$Auteur}', '{$Adresse}', '{$AdresseMail}', '{$Comment}', '{$DateComment}', '{$ip}', $visible) webmaster@0: "); webmaster@0: $Data->Query("UPDATE Mess SET NbCommentaires=NbCommentaires+1 WHERE num_mess={$id}"); webmaster@64: if($visibleBool) webmaster@64: mail(ADMIN_MAIL, 'Nouveau commentaire de ' . $Auteur, $Auteur . " vient de mettre en ligne le commentaire suivant: \n" . wordwrap($Comment, 70)); webmaster@0: } webmaster@0: webmaster@16: // Ajout du post au squelette webmaster@0: $Data->Query("SELECT * FROM Mess WHERE num_mess = {$id}"); webmaster@0: $row = $Data->GetRow(); webmaster@16: $post = new Post($row); webmaster@16: $sk->addBlogPost($post->format()); webmaster@36: $sk->checkUpdateTime(strtotime($row['DatePost'])); webmaster@16: webmaster@22: // On définit le titre webmaster@22: $sk->setTitle($row['Titre'] . ' - Dual Blog'); webmaster@22: webmaster@16: // Récupération des commentaires webmaster@1: $Data->Query("SELECT * FROM Commentaires Where MessId={$id} AND Visible=1 ORDER BY num_comm"); webmaster@61: $defaultGravatar = urlencode(BLOG_DEFAULT_GRAVATAR); webmaster@0: while(0 !== ($row = $Data->GetRow())) { webmaster@32: $commentTpl = new Template(Skeleton::getTemplateFile('comment')); webmaster@57: $dateFormatee = strftime(" à %Hh%M, le %A %d %B %Y", strtotime($row['DateComment'])); webmaster@33: $dateFormateeISO = date('c', strtotime($row['DateComment'])); webmaster@16: $AdresseMail = $row['AdresseMail']; webmaster@16: $grav_id = md5($AdresseMail); webmaster@23: $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar; webmaster@16: $Comment = nl2br($row['Comment']); webmaster@16: $Comment = str_replace(" & ", " & ", $Comment); webmaster@16: $commentFrag = $commentTpl->getDocumentFragment(); webmaster@16: $commentFrag->appendXML($Comment); webmaster@16: $params = array( webmaster@16: '#gravatar@src' => $grav_url, webmaster@30: '#auteur@href' => $post->getURL() . '#c' . $row['num_comm'], webmaster@16: '#auteur@name' => 'c' . $row['num_comm'], webmaster@16: '#auteur' => $row['Auteur'], webmaster@16: 'commentDate' => $dateFormatee, webmaster@33: 'commentDateISO' => $dateFormateeISO, webmaster@32: 'commentNumber' => $row['num_comm'], webmaster@16: 'comment' => $commentFrag, webmaster@16: ); webmaster@16: if(stristr($row['Adresse'], 'http://')) { webmaster@16: $params['#auteur@href'] = $row['Adresse']; webmaster@16: } webmaster@32: $commentTpl->setParams(array_merge($post->getTplParams(), $params)); webmaster@16: $sk->addBlogPost($commentTpl); webmaster@36: $sk->checkUpdateTime(strtotime($row['DateComment'])); webmaster@0: } webmaster@16: webmaster@24: // Génération de la graine (cette dernière permet de s'assurer webmaster@24: // que l'essai d'ajout de commentaire provient bien de ce webmaster@24: // formulaire, et en conséquence devrait permettre de réduire webmaster@24: // le spam. webmaster@24: $seed = md5(time() . 'DualBlog'); webmaster@24: $_SESSION['commentSeed'] = $seed; webmaster@24: webmaster@24: // Ajout du formulaire d'enregistrement de commentaires webmaster@16: $commentForm = new Template('commentForm.xml'); webmaster@24: $commentForm->setParams(array('#Seed@value' => $seed)); webmaster@31: $sk->setParams(array('commentForm' => $commentForm)); webmaster@16: webmaster@16: echo $sk; webmaster@0: ?>