Avertir les utilisateurs d'une mise à jour d'extension ?

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

  • #16
    Bonjour,

    Après quelques tests supplémentaires, j'ai constaté qu'il n'est pas nécessaire d'aller interroger le xml, le numéro de la nouvelle version est mis à jour automatiquement dans la table updates par la fonction findupdates.

    Concernant la fréquence du onAfterInitialise, c'est lancé après lancement d'un "application initialise method", ce qui ne nous renseigne pas trop. J'y ai donc mis un breakpoint et c'est appelé un peu tout le temps quand on est dans l'administration....

    Concernant le plugin cupdater, en regardant dans le code, il me semble qu'il va lancer à chaque fois (suivant la fréquence demandée) le contrôle et l'envoi de message pour toutes les extensions à mettre à jour. Donc, si tu tardes un peu, tu risques d'avoir pas mal de rappels dans ta boite mail.

    Pascal
    Les JoomlaDays Paris 2019, c'était du 8 au 9 mars... J'y étais et vous ?

    If anything can go wrong, it will...
    If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #17
      Merci Pascal,

      En fait, voilà comment je procède.
      Pour le déclenchement automatique et journalier de la vérification, j'utilise un fichier texte "lazydbbackup.upd" dans lequel j'ai l'horodatage de la dernière alerte (je gère la première fois en créant une valeur de -24 heures à la place du contenu du fichier à lire, ce qui forcera la première vérification).
      Je vérifie si cette valeur est inférieure de plus de 24 h (86400 secondes) à l'heure actuelle, et si ce n'est pas le cas, je ne fais rien.
      Sinon, je cherche un fichier texte d'update sur le serveur de mise à jour, je compare la version actuelle (en dur dans le fichier principal de LDB pour éviter de chercher dans la base), et si la nouvelle version est supérieure, je déclenche le mail d'alerte (si l'utilisateur n'a pas décoché l'option dans les paramètres).
      Je mets à jour le fichier horodaté pour ne plus rentrer dans cette vérification avant 24 heures.

      Utiliser les fichiers manifeste ou la base éviterait d'avoir à mettre la version en dur dans le fichier principal et de gérer un fichier texte sur le serveur de mises à jour pour le numéro de version, mais çà alourdirait certainement nettement le code.

      Pour l'instant, je butte sur un problème de traduction de variable de langue pour le sujet et le corps du mail, les variables ne sont pas traduites, elles restent sous forme de chaîne.
      J'imagine faire une erreur dans cette ligne, car le fichier de langue est bien lu à l'affichage du plugin :
      $updsubject = JText::_('PLG_LAZYDBBKP_UPDATE_SUBJECT');
      Je récupère PLG_LAZYDBBKP_UPDATE_SUBJECT au lieu de sa valeur !
      "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

      Commentaire


      • #18
        Je récupère PLG_LAZYDBBKP_UPDATE_SUBJECT au lieu de sa valeur !
        Les plugins n'ont pas le chargement du fichier language en standard, il faut le faire "à la main" : JPlugin::loadLanguage('plg_xxxx');

        Pascal
        Les JoomlaDays Paris 2019, c'était du 8 au 9 mars... J'y étais et vous ?

        If anything can go wrong, it will...
        If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #19
          Merci Pascal, ça fonctionne à moitié, peut-être parce que l'appel aux fichiers de langue n'est pas où il faut ou construit comme il faut...
          Testé sous Joomla! 3.8 et 3.9dev, les chaines sont bien traduites, je reçois les mails (testé en français seulement pour le moment).

          Sous PHP 7.2, Joomla! 3.9 l'administration me renvie une page d'erreur d'encodage, et sous Joomla! 3.8.6, j'ai cette alerte :
          Deprecated: Non-static method Joomla\CMS\Plugin\CMSPlugin::loadLanguage() should not be called statically in /home/www/***********/plugins/system/lazydbbackup/lazydbbackup.php on line 16
          la ligne 16 déclare l'appel :
          jimport('joomla.filesystem.folder'); // september 07 2012
          jimport('joomla.filesystem.file'); // september 07 2012
          JPlugin::loadLanguage('plg_system_lazydbbackup',JP ATH_ADMINISTRATOR);
          Je présume donc que cet appel doit se faire avec une autre méthode que cette ligne brute, et pour l'instant, je n'ai pas trouvé comment.

          Trouvé ! J'ai déplacé dans onAfterInitialise que j'ai passé en "Public" et c'est bon
          Dernière édition par RobertG à 26/03/2018, 15h27
          "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

          Commentaire


          • #20
            J'essaie d'éviter la nécessité de penser à changer la version dans le fichier principal à chaque modification, et j'ai créé une requête allant lire dans la table des extensions le champ "manifest_cache", mais je n'arrive pas à en extraire la valeur de la variable "version".
            Code:
                        $query->select('e.manifest_cache')
                            ->from('#__extensions AS e')
                            ->innerJoin('#__update_sites_extensions AS se ON se.extension_id = e.extension_id INNER JOIN #__update_sites AS s ON se.update_site_id = s.update_site_id')
                            ->where('s.name = "LazyDbBackup Updates"');
                        $db->setQuery($query);
                        $row = $db->loadRow();
            Je récupère bien dans $row le champ :
            stdClass Object ( [name] => plg_system_lazydbbackup [type] => plugin [creationDate] => March 25, 2018 [author] => Robert Gastaud [copyright] => GNU General Public License version 2 or later [authorEmail] => **********@robertg-conseil.fr [authorUrl] => www.joomxtensions.com [version] => 3.9.9 [description] => PLG_LAZYDBBKP_XML_DESCRIPTION [group] => [filename] => lazydbbackup )
            Il y aurait aussi le décodage direct du fichier manifeste du plugin, pour récupérer cette version...
            "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

            Commentaire


            • #21
              C'était trop simple !
              J'utilisais déjà le json_decode...
              $data = json_decode($row[0]);
              $version1 = $data->version;
              "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

              Commentaire


              • #22
                Comme je le disais, il serait peut-être plus rapide de lire le fichier manifeste du plugin pour en extraire la version actuelle, et interroger le XML d'updates déclaré dans ce même manifeste, mais pour l'instant, je n'ai pas été fichu de retrouver quelles fonctions du core utiliser pour ça !

                Idem pour récupérer la version dans le fichier XML d'updates. J'ai retrouvé et adapté ce code depuis le fichier install.php de com_installer, en remplaçant la variable "downloadurl" par "version" :
                Code:
                            jimport('joomla.updater.update');
                            $update = new JUpdate;
                            $url='https://updates.joomxtensions.com/lazydbbackup_xxxxxx_upd.xml';
                            $update->loadFromXml($url);
                            $package_url = trim($update->get('version', false)->_data);
                
                            if ($package_url)
                            {
                                $new_version = $package_url;
                            }
                Mais $package_url revient vide, avec cette erreur, que j'interprète comme une lecture du fichier qui ne renvoie rien :
                Notice: Trying to get property '_data' of non-object in /home/www/************/plugins/system/lazydbbackup/lazydbbackup.php on line 111
                Quelqu'un aurait-il une idée de pourquoi apparaît cette erreur et comment corriger ce code ?
                "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

                Commentaire


                • #23
                  Bonjour Robert,

                  J'ai ce message si le nom de fichier est incorrect.....c'est quoi ce xxxxxx dans le nom ? en mettant https://updates.joomxtensions.com/lazydbbackup_upd.xml, j'ai bien la version 3.7.4 qui en sort.

                  Pascal
                  Les JoomlaDays Paris 2019, c'était du 8 au 9 mars... J'y étais et vous ?

                  If anything can go wrong, it will...
                  If I can help, I will ..https://conseilgouz.com

                  Commentaire


                  • #24
                    Je ne voulais pas mettre l'URL du fichier de test !

                    Finalement, j'ai lu les deux fichiers avec du code PHP standard, et j'ai plus rapidement mes versions :
                    Code:
                                $url='https://updates.joomxtensions.com/lazydbbackup_xxxx_upd.xml';
                                $xml=simplexml_load_file($url) or die("Error: Cannot create object");
                                $new_version = $xml->update[0]->version;
                                //echo($package_version);
                                $url=JPATH_SITE."/plugins/system/lazydbbackup/lazydbbackup.xml";
                                $xml=simplexml_load_file($url);
                                $version = $xml->version;
                    Maintenant, il faut que je compare les numéros de version, et "4.0.0" n'est pas considéré comme supérieur à "3.9.9", il va falloir que je manipule ces chaînes.
                    "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

                    Commentaire


                    • #25
                      Bien, je pense être arrivé à mon but !
                      La procédure est la suivante, pour le cas où d'autres voudraient utiliser une méthode similaire ou auraient plus simple à me proposer :
                      • vérification que le paramètre de demande d'alerte est à "1" ou forçage s'il est absent ;
                      • si le paramètre a été mis à "0", on ne fait plus rien ;
                      • si le paramètre à 1 ou absent , recherche du délai (24 h) grâce à un fichier texte dans lequel est inscrit le "strtotime" de l'instant de passage précédent ;
                      • si le délai n'est pas atteint et que ce n'est pas le premier passage, on ne fait plus rien ;
                      • si le délai est atteint, ou lors du premier passage dans le code, on peut lancer la récupération des numéros de versions sur le site de mise à jour et sur le serveur, dans les fichiers XML manifeste et de mise à jour ;
                      • suit une transformation des numéros de versions en nombres pour comparaison ;
                      • si une nouvelle version existe, un mail est envoyé avec le numéro de la nouvelle version en sujet du mail ; que le mail ait été envoyé ou pas, le fichier repère est mis à jour avec le "strtotime" actuel pour n'autoriser une nouvelle vérification que 24 h plus tard.
                      Il me reste à tester les deux versions PDO et MySQLi du plugin...

                      Merci de votre aide !
                      Dernière édition par RobertG à 27/03/2018, 16h40
                      "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

                      Commentaire


                      • #26
                        Je me doutais bien qu'il y aurait un hic !
                        Je n'ai pas tenu compte de la version visée dans le champ "targetplatform" du fichier d'update, ce qui va peut-être m'obliger à utiliser la fonction findUpdates et donc à récupérer l'ID du plugin dans la base, ce que je voulais éviter...
                        "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

                        Commentaire


                        • #27
                          L'amélioration n'a pas été longue à faire. Récupération de la version de Joomla! avec JVersion et de celles définies comme cibles dans targetplatform. Lecture de chaque section "update" : si la première occurrence trouvée comme correspondant à la cible propose une version plus récente du plugin, le mail part. Cela implique que l'ajout des parties update du XML d'updates se fasse en début de fichier.
                          Et je viens d'ajouter dans le mail un lien direct vers la page de mise à jour.

                          Tests en cours qui nécessitent de bricoler les sites afin d'utiliser le nouveau code tout en modifiant à la baisse la version dans le manifeste du plugin sur le site. Avantage, sauf erreur, Joomla! n'utilise pas ce manifeste pour vérifier la version de l'extension, mais les infos en cache dans la base.
                          "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

                          Commentaire


                          • #28
                            Bon, ça a l'air de fonctionner. Sur deux sites de test, un 3.8.6 et un 3.9.0dev, j'ai bien reçu un nouveau mail signalant l'existence d'une mise à jour, 24 heures après les premiers.
                            Reste la question de savoir si 24 heures est trop court, sachant que les utilisateurs visés sont surtout ceux qui ne se connectent pas très régulièrement à l'administration de leur site et que, donc, il est important qu'ils puissent être rapidement informés en cas de correction de bug.

                            Je viens de faire la modif sur un site 4.0dev, je saurai dans 24 h si ça confirme le fonctionnement correct sur cette version aussi.
                            "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 - Site pro : www.robertg-conseil.fr hébergés chez PHPNET - sites perso chez PlanetHoster + sites gérés chez 1and1 et OVH

                            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

                            Partenaire de l'association

                            Réduire

                            Hébergeur Web PlanetHoster
                            Travaille ...
                            X