Recevoir un mail pour tout commentaire posté

Salut à tous,

Existe-il une méthode (sans toucher au core) pour que je puisse recevoir un mail à chaque fois qu'un commentaire est posté sur mon blog ?

Bonne soirée et merci d'avance ;) .

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Jeoffrey

    Non pour le moment je ne pense pas. Mais je vais prévoir le coup pour la prochaine version pour qu'on puisse faire ça a partir d'un plugin

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Bonjour Stéphane,

    Merci de ta réponse. Je vais donc modifier le core, ça m'embête de devoir le faire, mais je veux vraiment pouvoir recevoir un mail :) .

    Pourrais-tu m'indiquer le meilleur fichier pour réaliser cette modification ?
  • bankaibankai Member
    Un plugin de notification est une bonne idée pour le futur :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Jeoffrey a écrit:
    Bonjour Stéphane,

    Merci de ta réponse. Je vais donc modifier le core, ça m'embête de devoir le faire, mais je veux vraiment pouvoir recevoir un mail :) .

    Pourrais-tu m'indiquer le meilleur fichier pour réaliser cette modification ?
    Dans le fichier core/lib/class.plx.motor.php recherche la ligne
    $retour = $this->newCommentaire($this->cible,plxUtils::unSlash($_POST));
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • En attendant voici la modification testé et approuvé.

    Le code est une mise à jour de celui de Ludovic trouvé ici pour être compatible avec bêta 5.1 de pluxml

    Dans 'core/lib/class.plx.motor.php' rechercher la fonction (ligne 745):
    public function addCommentaire($comment) {
    
    Et remplacer TOUTE la fonction par :
    /**
         *  Méthode qui envoie un email de supervision lorsqu'un commentaire est posté.
         *  Partie envoi mail inspirée de la page statique 'formulaire de contact' de florent@pluxml.org     
         *  IMPORTANT = Renseigner la variable $eTo avec l'adresse destinataire     
         *  
         * @param    article    titre de l'article
         * @param    author    auteur du commmentaire
         * @param    ip    adresse IP posteuse du commmentaire
         * @param    mail    mail de l'auteur du commmentaire
         * @param    site    site de l'auteur du commmentaire
         * @param    content    contenu du commmentaire      
         *  L'email émis est au format html     
         *  addCommentaire() est modifiée pour utiliser cette fonction 
         *        
         *  Ludovic AMATHIEU - aout 2010  
         *  Fredric K. -  6 Mars 2011 => PluXml 5.1  
         */     
    
      public function mailSupervision($article, $comment) {
          $eTo = "votre_adresse_email@votre_hebergeur.fr";  // <-- Adresse destinataire de l'email de supervision
          
          $urlArticle = $this->urlRewrite('?article'.intval($this->plxRecord_arts->f('numero')).'/'.$this->plxRecord_arts->f('url'));
          (empty($mail)) ? $eFrom = $eTo : $eFrom = $mail;
          $article = str_replace("-"," ",$article);
          
          $eSubject = 'Commentaire de '.$comment['author'].', article : '.$article; 
          $corps = 'Un commentaire concernant l\'article <strong>"'.$article.'"</strong> a été laissé par :'."<br /><br />";      
          $corps .= 'Son nom : <strong>'.$comment['author'].'</strong><br />';
                $corps .= 'Son email : <a href="mailto:'.$comment['mail'].'">'.$comment['mail'].'</a><br />';
                $corps .= 'Son site web : <a href="'.$comment['site'].'">'.$comment['site'].'</a><br />';
                $corps .= 'Son adresse IP : '.$comment['ip'].'<br /><br />';
                $corps .= '<u>Son commentaire :</u><br /><br />';
                $corps .= $comment['content'].'<br /><br />';
                $corps .= 'Pour consulter l\'article : <a href="'.$urlArticle.'">'.$urlArticle.'</a><br />';
                # On retire certains caracteres
                $corps = str_replace("\r"," ",$corps);
     
                # On envoi le mail
                $headers = 'From: '.$eFrom."\n";
                $headers .= 'MIME-Version: 1.0'."\n";
                $headers .= 'Content-type: text/html; charset="'.PLX_CHARSET.'"'."\n";
                $headers .= 'Content-transfer-encoding: 8bit'."\n";
    
          @mail($eTo ,$eSubject ,$corps, $headers); 
    }  
    
    	/**
    	 * Méthode qui crée physiquement le fichier XML du commentaire
    	 *
    	 * @param	comment	array avec les données du commentaire à ajouter
    	 * @return	booléen
    	 * @author	Anthony GUÉRIN, Florent MONTHEL et Stéphane F
    	 **/
    	public function addCommentaire($comment) {
    
    		# Hook plugins
    		if(eval($this->plxPlugins->callHook('plxMotorAddCommentaire'))) return;
    		# On genere le contenu de notre fichier XML
    		$xml = "<?xml version='1.0' encoding='".PLX_CHARSET."'?>\n";
    		$xml .= "<comment>\n";
    		$xml .= "\t<author><![CDATA[".plxUtils::cdataCheck($comment['author'])."]]></author>\n";
    		$xml .= "\t<type>".$comment['type']."</type>\n";
    		$xml .= "\t<ip>".$comment['ip']."</ip>\n";
    		$xml .= "\t<mail><![CDATA[".plxUtils::cdataCheck($comment['mail'])."]]></mail>\n";
    		$xml .= "\t<site><![CDATA[".plxUtils::cdataCheck($comment['site'])."]]></site>\n";
    		$xml .= "\t<content><![CDATA[".plxUtils::cdataCheck($comment['content'])."]]></content>\n";
    		# Hook plugins
    		eval($this->plxPlugins->callHook('plxMotorAddCommentaireXml'));
    		$xml .= "</comment>\n";
    		
            # Pour l'email de supervision
    		$urlr = $_SERVER['REQUEST_URI'];
    		$masque = '/core\/admin/i';
    		if(!preg_match ($masque,$urlr)) {
    		$article = $this->plxRecord_arts->f('url');
    		$this->mailSupervision($article, $comment); 
    		}		
    		# On ecrit ce contenu dans notre fichier XML
    		return plxUtils::write($xml,$comment['filename']);
    	}
    
    Ne pas oublier de remplacer votre Mail dans $eTo
  • Ah bah j'étais en train d'écrire une fonction de ce genre, du coup plus besoin ^^.

    Merci beaucoup Frédéric !
  • StéphaneStéphane Member, Former PluXml Project Manager
    et pour faire encore plus simple dans la classe plxUtils, il y a déjà une fonction pour envoyer un mail

    /**
    	* Méthode d'envoi de mail
    	*
    	* @param	name	string 			Nom de l'expéditeur
    	* @param	from	string 			Email de l'expéditeur
    	* @param	to		array/string	Adresse(s) du(des) destinataires(s)
    	* @param	subject	string			Objet du mail
    	* @param	body	string			contenu du mail
    	* @return			boolean			renvoie FAUX en cas d'erreur d'envoi
    	* @author	Amaury Graillat
    	**/
    	public static function sendMail($name, $from, $to, $subject, $body, $contentType="text", $cc=false, $bcc=false) {
    
    		if(is_array($to))
    			$to = implode(', ', $to);
    		if(is_array($cc))
    			$cc = implode(', ', $cc);
    		if(is_array($bcc))
    			$bcc = implode(', ', $bcc);
    
    		$headers  = "From: ".$name." <".$from.">\r\n";
    		$headers .= 'MIME-Version: 1.0'."\r\n";
    		// Content-Type
    		if($contentType == 'html')
    			$headers .= 'Content-type: text/html; charset="'.PLX_CHARSET.'"'."\r\n";
    		else
    			$headers .= 'Content-type: text/plain; charset="'.PLX_CHARSET.'"'."\r\n";
    
    		$headers .= 'Content-transfer-encoding: 8bit'."\r\n";
    
    		if($cc != "")
    			$headers .= 'Cc: '.$cc."\r\n";
    		if($bcc != "")
    			$headers .= 'Bcc: '.$bcc."\r\n";
    
    		return @mail($to, $subject, $body, $headers);
    	}
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Hello,

    au lieu de renseigner dans le dur l'adresse à qui envoyer l'email,
    ça ne serait pas plus simple d'utiliser celle de l'auteur de l'article en question ... ? :P
    en utilisant
    <?php $plxShow->artAuthorEmail(); ?>
    
    Cordialement,

    _____
    D.San
  • l'ajout de la fonction ne semble pas marcher... est ce compatible avec la version 5.1.2 ?
  • bonjour, la fonction m'interesserait diablement... quand est-il avec la version 5.1.2 ? est-ce que ça fonctionne ?
  • +1 pour moi aussi.

    J'utilise PluXML depuis la première heure et c'est la seul fonctionnalité qui me manque et que je dois rajouter à chaque mise à jour ;-)

    Sinon, un grand bravo pour les plugins ckeditor, c'est nettement plus pratique à installer qu'avant.
  • RohirrimRohirrim Member
    septembre 2011 modifié
    donc, concrètement, avec la version 5.1.2, comment fait-on ? quelle méthode est la meilleure ?

    en bonus : et si je souhaite que le mail parte vers plusieurs adresses mails (par exemple les gens qui postent régulièrement ou les différents administrateurs), comment est-ce que je requète tout ça ?

    dans la classe plxUtils, où est-ce que je rentre les mails ?...


    désolé je suis utilisateur, sans doute un peu graphiste, mais pas du tout codeur...
  • Rohirrim,

    Je te conseille d'attendre la sortie proche 5.1.3.
    Le plugin de notification de commentaire accompagnera sa sortie.

    Sans trahir un secret, ce plugin fonctionne très bien et est super rapide en exécution. :)
  • J'oubliai. :)
    L'annonce de Stéphane est ici :
    http://forum.pluxml.org/viewtopic.php?pid=20652#p20652
  • bankai a écrit:
    Un plugin de notification est une bonne idée pour le futur :)

    Une option dans les paramètres de base serait l'idéal.
    Justement, j'aimerais savoir comment récupérer l'email de l'user 001 depuis "class.plx.motor.php" ?
  • Ligne 33
    public $aUsers = array(); #Tableau des utilisateurs
    
    ligne 546
    eval($this->plxPlugins->callHook('plxMotorGetUsers'));
    

    Pas moyen de recouper tout ça ?

    ET sinon, moi, j'aimerais bien récupérer des infos sur la personne connecté à l'admin ! :D
  • J'ai réussi à récupérer l'email avec ce code, mais ça affiche tous les emails :
    <?php
    $xml=simplexml_load_file("data/configuration/users.xml");
    foreach($xml->children() as $child) {
       echo $child->email . "<br />";
    }
    ?>
    
    Si quelqu'un sait comment récupérer l'email de l'user 001 ?
  • $plxMotor->aUsers['001']['email']; en appelant au préalable une instance de plxMotor
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    La solution de Jerry est la bonne.

    il faut utiliser le tableau $aUsers de $plxMotor
    $plxMotor->aUsers['001']['email']
    

    001: id de l'utilisateur
    email, name, etc... l'info à récupérer

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

Connectez-vous ou Inscrivez-vous pour répondre.