Remository : pas d'interprétation des variables dans les mails reçus

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Remository : pas d'interprétation des variables dans les mails reçus

    Bonjour à tous !
    Depuis quelques jours, avec la dernière version de Remository, lorsque des fichiers sont ajoutés par un gestionnaire, je reçois des mails où les variables ne sont plus interprétées :
    Bonjour, un nouveau fichier est soumis par $user sur le site Internet $mosConfig_sitename.\n\nSelon...
    Je ne vois pas où chercher la cause de ce dysfonctionnement !
    Merci par avance de votre aide,
    Robert
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

  • #2
    dans les fichiers languages/french.php et languages/utf.french.php il faut remplacer les lignes relatives a l'envoi de mail par le code suivant
    Code PHP:
    if (!defined('_DOWN_MAIL_MSG')) DEFINE('_DOWN_MAIL_MSG','Bonjour, un nouveau fichier est soumis par %s'
                       
    .' sur %s .\n\n'
                       
    .'Rendez-vous dans la console d´administration %s/administrator/index.php pour consulter et approuver le fichier.\n\n'
                       
    .'Ce message vous est transmis automatiquement pour votre information\n');
    if (!
    defined('_DOWN_MAIL_MSG_APP')) DEFINE('_DOWN_MAIL_MSG_APP','Bonjour, un nouveau fichier est soumis par %s'
                       
    .' sur le site Internet %s.\n\n'
                       
    .'Selon la configuration, sa validation n´a pas besoin d´approbation.\n\n'
                       
    .'Veuillez ne pas répondre à ce message, il vous est transmis uniquement à titre d´information\n'); 
    ca corrige le probleme des variable mais pas des retour chariot
    je ne pense pas qu'il y est de moyen pour faire un retour chariot dans ce type de variable le mieux etant je pense de les enlever et de rajouter un petit espace
    Dernière édition par censhi à 07/12/2010, 13h58 Raison: ajout info

    Commentaire


    • #3
      Bienvenue censhi et merci de cette solution ! Je n'avais pas pris le temps d'aller explorer ces fichiers...
      Pour les sauts de lignes, c'est moins gênant. J'ai remplacé les "\n" par des "<br/>", et je verrai si c'est mieux interprété.
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide). MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info hébergés chez PHPNET - +sites gérés chez 1and1 et OVH - Site pro : www.robertg-conseil.fr

      Commentaire


      • #4
        de rien vu que je bidouille pas mal sur remository ca m'a permis d'approfondir un peu plus sur ca

        pour ce qui est des <br /> a la place des \n je ne suis pas sur que ca fonctionne sauf si tu envoie le mail au format html mais je crois qu'il faut modifier la methode d'envoi pour ca

        je confirme les <br /> ne fonctionne pas en natif
        Dernière édition par censhi à 07/12/2010, 15h39

        Commentaire


        • #5
          Re : Remository : pas d'interprétation des variables dans les mails reçus

          Bonjour à tous, je pense avoir trouvé la solution à ce problème. J'ai bien essayé le code de Censhi mais ça renvoie un message d'erreur. En fait, bien que n'étant pas un expert en php, je pense que ça vient des variables qui ne peuvent pas être insérées telles quelles dans du html. Donc, normalement, en rajoutant des '. .' ça doit le faire :

          Code PHP:
          // Modifications in 3.51
          if (!defined('_DOWN_MAIL_MSG')) DEFINE('_DOWN_MAIL_MSG','Bonjour, un nouveau fichier est soumis par '.$user
                             
          .' sur '.$mosConfig_sitename .'\n\n'
                             
          .'Rendez-vous dans la console d\'administration '.$mosConfig_live_site.'/administrator/index.php pour consulter et approuver le fichier.\n\n'
                             
          .'Ce message vous est transmis automatiquement pour votre information.\n'
                             
          );
          if (!
          defined('_DOWN_MAIL_MSG_APP')) DEFINE('_DOWN_MAIL_MSG_APP','Bonjour, un nouveau fichier est soumis par '.$user
                             
          .' sur le site Internet '.$mosConfig_sitename.'\n\n'
                             
          .'Selon la configuration, sa validation n\'a pas besoin d\'approbation.\n\n'
                             
          .'Veuillez ne pas r&eacute;pondre &agrave; ce message, il vous est transmis uniquement &agrave; titre d\'information.\n'
                             
          ); 

          Commentaire


          • #6
            Re : Remository : pas d'interprétation des variables dans les mails reçus

            bizarre que ca ne marche pas pour toi
            je l'utilise sur un site en interne et ca fonctionne tres bien.

            pour ce qui est de ta modif le soucis c'est que c'est pas trop dans la logique de la fonction sprintf() qui est utilisé pour l'ecriture du message
            http://php.net/manual/en/function.sprintf.php
            de plus si tu ne modifie pas le code ou est ecrit le mail je ne vois pas comment il peut recuperer les variables que tu lui donnes (possible que ca marche, je ne suis pas nono plus un pro en php)

            bref as tu bien fait la modif sur le fichier french.php et utf.french.php ??

            ps: est ce que tu pourrais mettre ton message d'erreur ?

            Commentaire


            • #7
              Re : Remository : pas d'interprétation des variables dans les mails reçus

              Et pourtant ça marche, du moins en partie :
              Les variables $mosConfig_sitename et $mosConfig_live_site affichent correctement le nom du site et le lien est bon mais la variable $user ne marche pas...
              Voilà le message d'erreur qd je mets ton code :
              Warning: sprintf() [function.sprintf]: Too few arguments in /***/***/www/components/com_remository/p-classes/remositoryRepository.php on line 450
              L'autre jour j'avais qd même le message dans le mail reçu mais aujourd'hui je n'ai plus rien...
              Je vais remettre mon code

              Commentaire


              • #8
                Re : Remository : pas d'interprétation des variables dans les mails reçus

                pour le fait que $mosConfig_sitename Fonctionne c'est normal la valeur est defini dans le fichier langue
                pour $mosConfig_live par contre sauf si tu l'as ajouter dans le fichier langue je ne vois pas

                pour ce qui est de ton erreur jen e vois pas mise a part si tu as modifier le fichier remositoryRepository.php ca ne devrait pas faire ca.
                si ut veux je te donne un mail pour m'envoyer les fichier remositoryRepository french.php et utf.french.php pour regarder ca

                Commentaire


                • #9
                  Re : Remository : pas d'interprétation des variables dans les mails reçus

                  Envoyé par censhi Voir le message
                  pour le fait que $mosConfig_sitename Fonctionne c'est normal la valeur est defini dans le fichier langue
                  pour $mosConfig_live
                  Cette variable qu'on voit en tête du fichier de langue est juste là pour supprimer des erreurs. C'est ce qui est mentionné en anglais :
                  Code PHP:
                  // These settings are dummy values to suppress errors when the language file is used in a context where the real values have not been set
                  if ...
                  if (!isset(
                  $mosConfig_sitename)) $mosConfig_sitename 'Nom du site'
                  En fait, il semblerait qu'elle soit appelée par "getCfg('sitename')" dans com_remository\p-classes\remositoryRepository.php (ligne 444) :
                  Code PHP:
                  // Containerid may be needed for notification by email of intererested people
                      
                  public function sendAdminMail ($full_name$filetitles$containerid$published=true) {
                          
                  $interface remositoryInterface::getInstance();
                          
                  $subject $interface->getCfg('sitename').':'._DOWN_MAIL_SUB;
                          
                  $message $published _DOWN_MAIL_MSG_APP _DOWN_MAIL_MSG;
                          
                  $message .= "\n"._DOWN_FILE_TITLE."\n"$filetitles;
                          
                  $message sprintf($message$full_name$interface->getCfg('sitename'));
                          
                  $interface->sendMail (($this->Sub_Mail_Alt_Addr $this->Sub_Mail_Alt_Addr remositoryUser::superAdminMail()), $subject$message);
                      } 
                  Cette fonction appelle une classe "remositoryUser" qui se trouve dans remositoryUser.php et où se trouvent les variables de l'utilisateur qui nous intéressent "$name" et "$fullname" :
                  Code PHP:
                  class remositoryUser {
                      private static 
                  $users = array();
                      
                  /** @var int ID for the user in the database */
                      
                  public $id=0;
                      
                  /** @var bool Is the current user of administrator status? */
                      
                  public $admin=false;
                      
                  /** @var bool Is the current user logged in?  */
                      
                  public $logged=false;
                      
                  /** @var string User name if loggged in */
                      
                  public $name='';
                      
                  /** @var string User full name if logged in */
                      
                  public $fullname='';
                      
                  /** @var string User type if logged in */
                      
                  public $usertype='';
                  ... 
                  Or, dans remositoryRepository.php, la variable est mal orthographiée ("$full_name" au lieu de "$fullname"). Ce qui donne :
                  Code PHP:
                  // Containerid may be needed for notification by email of intererested people
                      
                  public function sendAdminMail ([B]$fullname[/B], $filetitles$containerid$published=true) {
                          
                  $interface remositoryInterface::getInstance();
                          
                  $subject $interface->getCfg('sitename').':'._DOWN_MAIL_SUB;
                          
                  $message $published _DOWN_MAIL_MSG_APP _DOWN_MAIL_MSG;
                          
                  $message .= "\n"._DOWN_FILE_TITLE."\n"$filetitles;
                          
                  $message sprintf($message, [B]$fullname[/B], $interface->getCfg('sitename'));
                          
                  $interface->sendMail (($this->Sub_Mail_Alt_Addr $this->Sub_Mail_Alt_Addr remositoryUser::superAdminMail()), $subject$message);
                      } 
                  Enfin, pour les fichiers de langue, j'ai fait un mix de ta solution et de la mienne et ça marche parfaitement !
                  Code PHP:
                  // Modifications in 3.51
                  if (!defined('_DOWN_MAIL_MSG')) DEFINE('_DOWN_MAIL_MSG','Bonjour, un nouveau fichier est soumis par %s sur '.$mosConfig_sitename.'\n\n'
                                     
                  .'Rendez-vous dans la console d\'administration '.$mosConfig_live_site.'/administrator/index.php pour consulter et approuver le fichier.\n\n'
                                     
                  .'Ce message vous est transmis automatiquement pour votre information.\n'
                                     
                  );
                  if (!
                  defined('_DOWN_MAIL_MSG_APP')) DEFINE('_DOWN_MAIL_MSG_APP','Bonjour, un nouveau fichier est soumis par %s sur le site Internet '.$mosConfig_sitename.'\n\n'
                                     
                  .'Selon la configuration, sa validation n\'a pas besoin d\'approbation.\n\n'
                                     
                  .'Veuillez ne pas répondre à ce message, il vous est transmis uniquement à titre d\'information.\n'
                                     
                  ); 

                  Commentaire


                  • #10
                    Re : Remository : pas d'interprétation des variables dans les mails reçus

                    Code PHP:
                    // Containerid may be needed for notification by email of intererested people 
                        
                    public function sendAdminMail ($full_name$filetitles$containerid$published=true) { 
                            
                    $interface remositoryInterface::getInstance(); 
                            
                    $subject $interface->getCfg('sitename').':'._DOWN_MAIL_SUB
                            
                    $message $published _DOWN_MAIL_MSG_APP _DOWN_MAIL_MSG
                            
                    $message .= "\n"._DOWN_FILE_TITLE."\n"$filetitles
                            
                    $message sprintf($message$full_name$interface->getCfg('sitename')); 
                            
                    $interface->sendMail (($this->Sub_Mail_Alt_Addr $this->Sub_Mail_Alt_Addr remositoryUser::superAdminMail()), $subject$message); 
                        } 
                    a priori il y a un soucis sur cette fonction dans ce fichier
                    personnellement voila ce qu'il contient je n'ai pas modifier cette partie et je suis sur la version 3.53 sur une install en 1.5.23 de joomla

                    Code PHP:
                    public function sendAdminMail ($user_full$filetitles$containerid$published=true$mode=false) {
                            
                    $uri    JURI::getInstance(); 
                            
                    $MonURL $uri->base(); 
                            
                    $interface remositoryInterface::getInstance();
                            
                    $subject $interface->getCfg('sitename').':'._DOWN_MAIL_SUB;
                            
                    $message $published _DOWN_MAIL_MSG_APP _DOWN_MAIL_MSG;
                            
                    $message .= "\n"._DOWN_FILE_TITLE."\n"$filetitles;
                            
                    $message $published sprintf($message$user_full$interface->getCfg('sitename')) : sprintf($message$user_full$interface->getCfg('sitename'), $MonURL);
                            
                    $interface->sendMail (($this->Sub_Mail_Alt_Addr $this->Sub_Mail_Alt_Addr remositoryUser::superAdminMail()), $subject$message$mode);
                        } 
                    $message = $published ? sprintf($message, $user_full, $interface->getCfg('sitename')) : sprintf($message, $user_full, $interface->getCfg('sitename'), $MonURL);
                    il te manque sur ce que tu link la deuxieme partie de la fonction

                    c'est ce qui doit generer ton erreur je pense (je le repete je suis pas developpeur php)

                    le mieux serait peut etre de voir avec la personne qui c'est occuper de la traduction de remository. il me semble que c'est sarky qui possede un compte sur ce forum.
                    Dernière édition par censhi à 03/10/2011, 15h43

                    Commentaire


                    • #11
                      Re : Remository : pas d'interprétation des variables dans les mails reçus

                      Effectivement, y'a une différence de code. Pourtant j'ai la dernière version (3.53). Je vais télécharger la toute dernière pour voir.
                      Sinon, j'ai résolu le pb des sauts de lignes ! (du moins avec mon code...).

                      J'ai vu sur un site que ces caractères doivent être entourés de doubles-quotes et pas de simples... soit "\n\n". Ça c'est la théorie car en réalité qd il y a des simples quotes et des doubles ds une même ligne de php, c'est pas si évident. Bref, voici ce que j'ai entré :
                      Code PHP:
                      // Modifications in 3.51
                      if (!defined('_DOWN_MAIL_MSG')) DEFINE('_DOWN_MAIL_MSG','Bonjour, un nouveau fichier est soumis par %s sur '.$mosConfig_sitename.'

                      Rendez-vous dans la console d\'administration '
                      .$mosConfig_live_site.'/administrator/index.php pour consulter et approuver le fichier.'
                      ."\n\nCe message vous est transmis automatiquement pour votre information.\n"
                      );
                      if (!
                      defined('_DOWN_MAIL_MSG_APP')) DEFINE('_DOWN_MAIL_MSG_APP','Bonjour, un nouveau fichier est soumis par %s sur le site Internet '.$mosConfig_sitename.'

                      Selon la configuration, sa validation n\'a pas besoin d\'approbation.'
                      ."\n\nVeuillez ne pas répondre à ce message, il vous est transmis uniquement à titre d\'information.\n"
                      ); 
                      Et en visuel :

                      Commentaire


                      • #12
                        Re : Remository : pas d'interprétation des variables dans les mails reçus

                        Je ne comprends pas, je viens de télécharger la dernière version, la 3.53.13 sur le site officiel http://remository.com/downloads/func-startdown/588/ et j'ai tjs le même code. Où est-ce que tu as eu ton code stp ?

                        Commentaire


                        • #13
                          Re : Remository : pas d'interprétation des variables dans les mails reçus

                          de memoire je l'ai prise ici
                          http://www.sarki.ch/joomla15/telecha...-fr-en-de.html

                          ca date un peu donc je ne suis pas sur a 100% cependant essaye de modifier la fonction incriminé par la mienne pour voir si ca fonctionne correctement ce sera peut etre plus simple si tu as fait des modification du code

                          Commentaire


                          • #14
                            Re : Remository : pas d'interprétation des variables dans les mails reçus

                            Je préfère laisser les choses telles quelles car ça marche bien maintenant. Et puis il me semble qu'il faut tjs avoir la dernière version. Peut-être qu'on peut mettre ce post en "Résolu" maintenant ? car ça fonctionne et le pb des sauts de lignes est également résolu avec mon code rectifié.

                            Commentaire

                            Annonce

                            Réduire
                            1 sur 2 < >

                            C'est [Réglé] et on n'en parle plus ?

                            A quoi ça sert ?
                            La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                            Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                            Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                            Comment ajouter la mention [Réglé] à votre discussion ?
                            1 - Aller sur votre discussion et éditer votre premier message :


                            2 - Cliquer sur la liste déroulante Préfixe.

                            3 - Choisir le préfixe [Réglé].


                            4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                            2 sur 2 < >

                            Assistance au forum - Outil de publication d'infos de votre site

                            Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                            Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                            Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                            UTILISER À VOS PROPRES RISQUES :
                            L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                            Problèmes connus :
                            FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                            Installation :

                            1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                            Archive zip : https://github.com/AFUJ/FPA/zipball/master

                            2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                            3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                            4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                            5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                            6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                            et remplacer www. votresite .com par votre nom de domaine


                            Exemples:
                            Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                            Télécharger le script fpa-fr.php dans: /public_html/
                            Pour executer le script: http://www..com/fpa-fr.php

                            Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                            Télécharger le script fpa-fr.php dans: /public_html/cms/
                            Pour executer le script: http://www..com/cms/fpa-fr.php

                            En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                            Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                            Voir plus
                            Voir moins
                            Travaille ...
                            X