[PLUGIN] Gutuma pour Pluxml : module de gestion de newsletters

Jerry WhamJerry Wham Membres
octobre 2013 modifié dans Plugins
Bonsoir à tous,


Voici une adaptation de l'application Gutuma qui permet de gérer et d'envoyer des newsletters.
[del]Le plugin se compose de deux dossiers principaux :
- le dossier gutuma à placer dans le dossier de plugins
- le dossier news à placer à la racine du site (au même niveau que le dossier core par exemple)[/del]


Je vous laisse le soin de lire l'aide en ligne (ou le fichier README) pour compléter l'installation et découvrir les spécificités de l'application.


Le lien de téléchargement est ici.


Enjoy :p


PS : Merci à DanielSan pour me l'avoir fait connaître ;-)

Petite précision importante : le mot de passe ne doit pas contenir des caractères tels que € car le cryptage buggue sinon.


*******************************************************************
Historique :
*******************************************************************


* V1.0 01/05/2012 : mise en ligne
** 02/05/2012 : légère modification dans les fichiers gutuma/admin.php et gutuma/lang/fr.php : lorsque le module n'est pas installé, un lien "Installer le module" est affiché à la place de "Ecrire une newsletter", ce qui est plus logique.
** 03/05/2012 : ajout de deux index dans le fichier lang/fr pour la page gadget.js.php lorsqu'aucune liste de diffusion n'est disponible.
*******************************************************************


*V1.1 04/05/2012 : corrections pour un fonctionnement sur les systèmes windows (merci Stéphane pour les indications)
*******************************************************************


*V1.2 28/10/2012 : Meilleure intégration à Pluxml. Tout tient maintenant dans un seul dossier à placer dans le dossier plugins.
** Meilleure utilisation des librairies et des conventions de Pluxml.
** Correction de bugs sur les liens et les formulaires ajax. Les utilisateurs n'ont plus besoin d'être connectés pour pouvoir s'abonner (ce qui est quand même plus pratique :p).
** Correction de bugs liés à la gestion des utilisateurs.


IMPORTANT POUR LA MIGRATION DE LA V1.1 A LA V1.2 AFIN DE NE PAS PERDRE LES ANCIENNES LISTES DE DIFFUSION

* Remplacer l'ancien dossier gutuma par le nouveau dans le dossier plugins
* Copier tout le contenu de l'ancien dossier /news/lists/ (celui à la racine de pluxml) dans le dossier /plugins/gutuma/news/lists
* Supprimer le dossier /news (celui à la racine de pluxml)

IMPORTANT POUR TOUTE MISE A JOUR AFIN DE NE PAS PERDRE LES ANCIENNES LISTES DE DIFFUSION

* Faire une sauvegarde du dossier /plugins/gutuma/news/lists/ avant d'écraser l'ancien dossier par la mise à jour.
* Remplacer ensuite ce même dossier par la sauvegarde précédente.
*******************************************************************


*V1.3 29/10/2012 : Correction de la 1.2 qui conservait quelques morceaux de codes inadaptés ainsi que quelques autres erreurs. La version 1.2 a été supprimée.

Correction du chemin racine pour l'affichage des liens d'abonnement.
*******************************************************************


*V1.4 07/02/2013 : Adaptation du plugin pour la version pluxml 5.1.7

Le plugin fonctionne également toujours avec la version 5.1.6
*******************************************************************



*V1.5 23/09/2013 : Adaptation du plugin pour la version pluxml 5.2

Correction du bug de connexion depuis pluxml
Correction du bug sur la langue dans la session. En effet, l'index lang étant utilisé par pluxml, gutuma écrasait parfois les traductions de pluxml.
*******************************************************************


*V1.6 01/10/2013 : Correction de bugs et modification de l'emplacement de fichiers sensibles

Correction du bug de connexion depuis pluxml
Déplacement des listes de diffusion vers le dossier data de pluxml afin de faciliter les sauvegardes et mises à jour
Déplacement du fichier de config vers le dossier data
Dépôt du code sur github
*******************************************************************
«13456711

Réponses

  • k610ik610i Membres
    Cool Jerry !
  • brar2010brar2010 Membres
    Merci Mr je vais le decouvrire!!!
  • oh yeah !
    merci Jerry pour en avoir fait un plugin !

    cependant, c'est un autre utilisateur de PluXml qui m'a fait découvrir Gutuma, Frédéric je crois ?
  • Dany3dDany3d Membres
    Super!
    ca manquait vraiment.
    merci je vais tester ca sur mon blog
    a bientôt
  • Quelques modifications de dernière minute résumées dans le premier post (petits oublis mineurs).
    L'archive a été modifiée en conséquence mais je n'ai pas modifié le numéro de version.

    Enjoy.
  • brar2010brar2010 Membres
    apres le test y a pbleme de connexion !!! mot de passe / pseudo incorrect
    je saisie meme parametres comme celles de pluxml.....!!!!
  • FrancisFrancis Membres
    Merci beaucoup Jerry pour ce plugin, je crois qu'il était très attendu !


    Mais hélas pour l'instant ça ne marche pas encore bien, j'ai le même problème que brar2010 : je l'ai testé en local (avec Xampp), mais le login/mot de passe de l'admin (utilisateur 001) n'est pas reconnu.


    Ce qui fait que je n'ai pas de sous-menu sous Gutuma, il manque plein de choses, bref il y a une étape qui ne s'est pas bien passée à l'installation.


    J'ai refait le test à partir de zéro, pensant m'être trompé, mais c'était pareil la 2ème fois. Il doit y avoir un truc qui cloche quelque part à l'installation ?
  • Jerry WhamJerry Wham Membres
    mai 2012 modifié
    Avez-vous lu le README ? Avez-vous placé les dossiers au bon endroit ? Est-ce que les droits des fichiers et dossiers sont les bons (notamment le fichier config, situé dans le dossier /news/inc/config.php qui doit avoir un chmod à 777) ?

    Si c'est le cas, quelles sont les étapes que vous avez suivies ?

    Peut-être que l'archive n'était pas complète ? Dans le doute, je viens de l'effacer et d'en remettre une nouvelle copie sur mon serveur. Merci de la télécharger à nouveau, de supprimer les fichiers précédents et de retenter avec les nouveaux.

    @Francis : Le sous menu de Gutuma n'apparait qu'une fois que l'on s'est connecté et que l'on rédige une newsletter.

    Petite précision : le mot de passe ne doit pas contenir des caractères tels que € car le cryptage buggue sinon.


    Jusqu'à présent, je n'avais testé qu'en local. Je viens de mettre l'application sur le serveur de l'hébergeur que j'utilise habituellement et tout fonctionne correctement. Ma version de pluxml en local est la 5.1.6 tandis que celle de l'hébergeur est la 5.1.5


    Par contre PHP est en 5.3

    Quelles sont les versions que vous utilisez ?
  • Salut Jerry

    mes remarques au niveau du code
    
    Warning: include(D:\EasyPHP\www\pluxml\plugins\gutuma/prepend.php) [function.include]: failed to open stream: No such file or directory in D:\EasyPHP\www\pluxml\plugins\gutuma\admin.php on line 11
    
    Warning: include() [function.include]: Failed opening 'D:\EasyPHP\www\pluxml\plugins\gutuma/prepend.php' for inclusion (include_path='.;C:\php\pear') in D:\EasyPHP\www\pluxml\plugins\gutuma\admin.php on line 11
    

    la ligne suivant dans le fichier le fichier admin.php, n'est pas nécessaire. le fichier prepend.php est inclus automatiquement par PluXml
    include(str_replace('plugins/gutuma/','core/admin/',dirname(__FILE__).'/prepend.php'));
    

    Consultant PluXml

    Ancien responsable du projet

  • Je me permets d'autres remarques

    1) fichier admin.php , ligne 60
    if($_SESSION['profil'] == 0):
    

    je preferais voir
    if($_SESSION['profil'] == PROFIL_ADMIN):
    

    2) pour rendre le code lisible, fichier admin.php, ligne 65, c'est quoi cette valeur 2 (PROFIL_MODERATOR ?)

    dans ce cas mettre
    if (!$_user['delete'] && $_user['profil'] < PROFIL_MODERATOR ) {
    

    nb: faire de meme partout où tu utilises un nombre mettre plutot la constante de type PROFIL_ADMIN, PROFIL_MODERATOR etc... Le code sera plus compréhensible et dans 6 mois tu seras bien content de savoir à quoi correspondent les valeurs.

    Consultant PluXml

    Ancien responsable du projet

  • Autre problème et je m'arreterai là

    fichier /news/install.php
    
    // If pluxml is used
    if (isset($_profil['salt'])) {
    	$salt = $_profil['salt'];
    } else {
    	$salt = gu_config::plx_charAleatoire();
    }
    
    

    la fonction gu_config::plx_charAleatoire() n'existe pas.
    l'installation s'arrete là.

    Consultant PluXml

    Ancien responsable du projet

  • Stéphane a écrit:
    Je me permets d'autres remarques

    1) fichier admin.php , ligne 60
    if($_SESSION['profil'] == 0):
    

    je preferais voir
    if($_SESSION['profil'] == PROFIL_ADMIN):
    

    2) pour rendre le code lisible, fichier admin.php, ligne 65, c'est quoi cette valeur 2 (PROFIL_MODERATOR ?)

    dans ce cas mettre
    if (!$_user['delete'] && $_user['profil'] < PROFIL_MODERATOR ) {
    

    nb: faire de meme partout où tu utilises un nombre mettre plutot la constante de type PROFIL_ADMIN, PROFIL_MODERATOR etc... Le code sera plus compréhensible et dans 6 mois tu seras bien content de savoir à quoi correspondent les valeurs.

    Ok, c'est noté. Je vais corriger ça. Merci beaucoup pour tes conseils.
  • Stéphane a écrit:
    Autre problème et je m'arreterai là

    fichier /news/install.php
    
    // If pluxml is used
    if (isset($_profil['salt'])) {
    	$salt = $_profil['salt'];
    } else {
    	$salt = gu_config::plx_charAleatoire();
    }
    
    

    la fonction gu_config::plx_charAleatoire() n'existe pas.
    l'installation s'arrete là.

    La fonction est normalement en bas du fichier gutuma.php. Je l'ai nommé ainsi car je l'ai copiée de la lib de pluxml. J'ai essayé (je ne dis pas que je l'ai forcément bien fait), que le module soit utilisable également si on n'utilise pas pluxml. C'est pour cette raison que je l'ai copiée.

    Ce qui m'étonne c'est que l'installation s'arrête.
  • en fait quand on accède a la page install.php, je suis redirigé vers la page profil de PluXml
    j'ai mis un point d'arret apres le bloc de code cité au dessus et le code ne s'arrete pas à cet endroit

    Consultant PluXml

    Ancien responsable du projet

  • la syntaxe gu_config::plx_charAleatoire()
    veut dire qu'il y a une classe gu_config avec dedans une fonction plx_charAleatoire(), fonction qui doit etre déclarée static si on est en php5 sinon ça fait des warnings

    Consultant PluXml

    Ancien responsable du projet

  • je viens de refaire un petit tour dans le code

    donc dans gutuma.php meme en bas il n'y a pas de fonction plx_charAleatoire

    dans le fichier news/inc/_pluxml.php es-tu sur que les chemins sont corrects suivant les cas d'appel d'où on se situe sur le site (front end, back end, gutuma)
    
    if (file_exists('../config.php')) {
    	include_once('../config.php');
    	# Définition des constantes
    	define('PLX_ROOT', '../');
    }else {
    	include_once('../../config.php');
    	# Définition des constantes
    	define('PLX_ROOT', '../../');
    }
    

    Consultant PluXml

    Ancien responsable du projet

  • la fonction plx_charAleatoire est en fait dans le fichier news/inc/setting.php

    Consultant PluXml

    Ancien responsable du projet

  • Jerry WhamJerry Wham Membres
    mai 2012 modifié
    Stéphane a écrit:
    la syntaxe gu_config::plx_charAleatoire()
    veut dire qu'il y a une classe gu_config avec dedans une fonction plx_charAleatoire(), fonction qui doit etre déclarée static si on est en php5 sinon ça fait des warnings

    Oui et c'est le cas.
    Stéphane a écrit:
    la fonction plx_charAleatoire est en fait dans le fichier news/inc/setting.php

    Toutes mes confuses. Je n'avais pas le code sous les yeux quand j'ai répondu et j'ai fait de mémoire. Le fichier setting.php qui contient fonction plx_charAleatoire, est inclus dans le fichier gutuma.php (qui est lui même ensuite inclus dans tous les autres fichiers.

    Stéphane a écrit:
    ...

    dans le fichier news/inc/_pluxml.php es-tu sur que les chemins sont corrects suivant les cas d'appel d'où on se situe sur le site (front end, back end, gutuma)
    
    if (file_exists('../config.php')) {
    	include_once('../config.php');
    	# Définition des constantes
    	define('PLX_ROOT', '../');
    }else {
    	include_once('../../config.php');
    	# Définition des constantes
    	define('PLX_ROOT', '../../');
    }
    

    Oui la pluspart du temps, les fichiers utilisent ../config.php. C'est le cas lorsque l'on navigue sur le site.


    Par contre, les liens pour s'inscrire à la newsletter, surtout ceux qui utilisent l'ajax (section appelée "gadgets" par le créateur initial de gutuma), se servent du fichier gadets.js.php situé dans le dossier js/.


    Le fichier config.php étant dans le dossier inc/ au même niveau que le dossier js/, il faut alors remonter de deux crans pour trouver le fichier config.php.

    Je ne sais pas si mes explications sont assez claires ?


    EDIT : Je viens de faire des corrections selon tes indications. J'ai modifié la définition de la constante RPATH en tenant compte du DIRECTORY_SEPARATOR qui est différent selon les systèmes (/ ou \). Je viens de tester avec wamp et ça fonctionne.


    Si Stéphane, tu vois d'autres erreurs, n'hésite pas à m'en faire part. Le code ne te choque pas trop ???
  • brar2010brar2010 Membres
    Malgré les modification tjrs même pbleme !!pas de connexion "news" !!!!
  • Jerry WhamJerry Wham Membres
    mai 2012 modifié
    brar2010 a écrit:
    Malgré les modification tjrs même pbleme !!pas de connexion "news" !!!!

    A quelle étape es-tu stoppé (installation, login) ? Quelle version de php as-tu? Quelle version de pluxml utilises-tu ? Quel est le message d'erreur ? Sur quelle page ? Que disent les fichiers log d'apache et de php ? Ton mot de passe contient-il des caractères exotiques (comme €, @, £ ou autre) ?


    Merci de répondre à ces quelques questions...
  • brar2010brar2010 Membres
    Jerry Wham a écrit:
    brar2010 a écrit:
    Malgré les modification tjrs même pbleme !!pas de connexion "news" !!!!

    A quelle étape es-tu stoppé (installation, login) ? Quelle version de php as-tu? Quelle version de pluxml utilises-tu ? Quel est le message d'erreur ? Sur quelle page ? Que disent les fichiers log d'apache et de php ? Ton mot de passe contient-il des caractères exotiques (comme €, @, £ ou autre) ?


    Merci de répondre à ces quelques questions...



    LE test est sous easy php:pbleme de login_passe
  • Jerry WhamJerry Wham Membres
    mai 2012 modifié
    Je viens de modifier l'archive car je me suis aperçu que je n'avais pas mis les bons fichiers. Peux-tu la retélécharger, supprimer les deux dossiers (gutuma dans le dossier plugin et news à la racine du site) et refaire une installation complète ? Merci de me dire ce que ça donne.
  • Je vais quand même tester avec easyPhp. Je tiens informé.
  • FrancisFrancis Membres
    mai 2012 modifié
    Je viens de tester l'installation, ça marche (pour info, je suis en local sous Xampp, avec PluXml 5.1.6).


    J'ai créé une liste avec deux abonnés, ça marche.
    Je viens d'envoyer une newsletter, mais je ne l'ai reçue que sur la première des deux adresses. L'autre est bonne, j'ai vérifié.
    Il faut que je fasse d'autres tests, je m'arrête là pour ce soir.
    [Edit du 6/5/2012 : c'était une erreur de ma part, j'avais oublié d'ajouter la liste dans le champ "Destinataire" qui était donc vide, avec la bonne manip ça marche très bien]


    En tout cas ça prend forme, l'interface est autrement mieux que celle d'origine de Gutuma, et le paramétrage est très complet.


    Ce serait intéressant que d'autres fassent eux aussi des tests, on attend les résultats de tous.
  • Jerry WhamJerry Wham Membres
    mai 2012 modifié
    Merci Francis pour ton retour. As-tu vérifié les spams pour ta deuxième adresse ?
  • FrancisFrancis Membres
    Excuse-moi, Jerry, il était un peu tard et j'ai fait trop vite.


    J'avais simplement oublié d'ajouter la liste comme destinataire ! J'avais bien regardé la liste spam, mais le problème n'était pas là, le message n'est pas classé parmi les spams, ni chez laposte.net, ni chez OVH.
    J'ai reçu une copie de la newsletter comme administrateur, mais l'envoi n'a évidemment pas fonctionné !


    J'avais vu le nom de la liste affiché en haut à droite, dans la liste déroulante et j'ai envoyé en pensant que ça revenait à une sélection de liste. En fait, il suffisait de lire ce qui est affiché !


    Il y a un message de rappel lorsque l'objet est vide, ce serait bien d'avoir aussi un message de ce type lorsque le contenu "Destinataires" est vide.


    J'ai fait ce matin un test avec 5 adresses, ça marche nickel !
    Merci encore Jerry, il va être bien utile ce plugin !
  • Cool.
    Je vais voir ce que je peux faire pour l'absence de destinataire.


    Est-ce que les autres utilisateurs peuvent nous confirmer que ça fonctionne, s'il vous plait ?
  • JosJos Membres
    Je vais tester d'ici peu. Merci beaucoup pour cette petite perle, PluXML devient vraiment complet.
  • BloodyBloody Membres
    Désolé Jerry,

    Ca ne fonctionne pas chez moi. :/
    Je ne vois pas le lien d'install quand je suis dans la partie "Gestion des utilisateurs".

    Pour mon profil (admin), dans la colonne "Action" du tableau est inscrit "non applicable".

    Une idée ? :)
  • Quand tu cliques sur le lien "Gutuma" situé dans la sidebar, tu es dirigé vers une page avec les utilisateurs. A ce niveau là, il n'y a pas un lien rouge "Installer le module" ?


    Pour le "non applicable" dans la colonne action c'est normal car pour un administrateur (d'autant plus pour le 001), il n'y pas possibilité de désactiver son droit en écriture. Il faut changer le statut en gestionnaire.
Connectez-vous ou Inscrivez-vous pour répondre.