Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

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

  • Problème de disparition d'extensions (Joaktree et Yoorecipes) : que faire ?

    Bonjour à tous !

    Je me trouve confronté à deux problèmes de disparition d'extensions, leurs auteurs ayant, pour des raisons qui les regardent, cessé leur diffusion.

    Une ne me posera pas trop de problème dans la mesure où il y a des alternatives sur le JED, c'est Yoorecipes, dont d'ailleurs je n'avais pas renouvelé mon abonnement il y a deux ans parce que le site qui l'utilise est en stand-by. J'ai commencé à tester Gary's CookBook, mais le rendu et la saisie sont bien différents de Yoorecipes. Le module CookBook de ZOO me semble bien cher pour un site personnel de simple plaisir, même s'il semble bien fait. Bref, je préférerais quand même conserver Yoorecipes...

    L'autre, si elle devait se retrouver bientôt incompatible avec les futures versions de Joomla!, me manquera par contre énormément, dans la mesure où elle n'a absolument aucun équivalent sous forme d'extension pour Joomla!, c'est Joaktree.
    L'équipe qui a créé Webtrees, successeur de PhpGedView, bien qu'ayant son site sous Joomla!, n'a pas développé d'application intégrable à un site Joomla!, et bien qu'ayant une version Webtrees de ma généalogie, j'accroche moins et j'imagine mal être contraint d'abandonner Joaktree.

    La question que je me pose donc, et que je vous pose parce que mes connaissances en PHP sont limitées, est de savoir comment je pourrais gérer moi-même, pour mon propre usage, la compatibilité et surtout la sécurité de ces versions de Yoorecipes (la mienne est ancienne, 4.2.1 d'août 2014) et Joaktree dans l'avenir.
    Pour l'instant, ces deux extensions fonctionnent sans problème apparent sous PHP 7 et Joomla! 3.6.4 (sauf présence pour Joaktree de nombreux "deprecated" qu'il faudrait corriger, mais qui ne se voient pas avec le rapport d'erreur à "aucun").

    Que me conseillez-vous comme lectures pour pouvoir continuer à utiliser ces extensions sans risques ?

    Je vous remercie par avance de vos conseils,
    Robert
    Dernière édition par RobertG à 21/12/2016, 16h07 Raison: ajout d'infos au titre
    "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
    Re : Problème de disparition d'extension : que faire ?

    Re-bonjour à tous,

    Je viens de m'apercevoir, concernant Joaktree, qu'il ne supporte pas, pour certaines fonctions, PHP 7, et qu'il va vraiment me falloir modifier le code.
    Des conseils ?

    Merci d'avance,
    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

    Commentaire


    • #3
      Re : Problème de disparition d'extension : que faire ?

      Je continue mon monologue !

      Je travaille pour le moment sur Joaktree et j'ai corrigé une grande partie du code de l'administration pour le rendre compatible avec PHP 7.0 .
      Côté site, j'ai également fait des modification afin de faire disparaître les erreurs "Deprecated" et "Notice" rencontrées sur certaines vues.

      Par contre, sur d'autres, je rencontre des erreurs fatales "Fatal error: Using $this when not in object context".
      Lorsque je trouve le code coupable, je ne comprends pas pourquoi cette erreur se produit. Début de la fonction qui coince :
      Code PHP:
          function getAccess() {
              static 
      $_access;
              
              if (!isset(
      $_access)) {
                  
      $db     JFactory::getDBO();    
                  
      $treeId intval$this->getTreeId() );
                  
      $userAccess self::getUserAccess();

                  
      // determine the access of the user to the tree
                  
      if (isset($treeId) and (intval($treeId) > 0)) {
                      
      // only execute this query when the tree is known 
      Que devrai-je modifier pour corriger cette erreur ?
      Merci par avance de votre aide,
      Robert
      Dernière édition par RobertG à 14/12/2016, 10h01
      "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
        Re : Problème de disparition d'extension : que faire ?

        Robert,
        j'ai connu ça ;p et c'est VRAIMENT galère a gérer.
        Rien qu'a voir le code présenté, tu vas avoir beaucoup de choses à réécrire pour la portabilité 3.7 qui arrive.
        Dans les fichiers /Models/ (en partant du principe que le composant respecte déjà la structure MVC 3.0), l'accés aux Objets suivants s'écrit comme suit:
        Code PHP:
        // Initialise variables.
            
        $app JFactory::getApplication();
            
        $session JFactory::getSession();
            
        $acl ComponentxxxHelper::getActions(); 
        Dans les fichiers /Views/ et la vérification pour le droit d'éditer par exemple :
        Code PHP:
            // Initialiase variables.
            
        $this->model    $model    $this->getModel();
            
        $user        JFactory::getUser();

            
        //Check ACL before opening the form (prevent from direct access)
            
        if (!$model->canEdit($itemtrue))
                
        $model->setError(JText::_('JERROR_ALERTNOAUTHOR')); 
        Avec une bonne connaissance de l'API 3.6, c'est faisable, mais revient souvent à tout réécrire ...
        Developper of JBreeding Manager: http://www.jbreeding.fr/
        J-cook Referral : Service Générateur d'Extensions pour Joomla

        Commentaire


        • #5
          Re : Problème de disparition d'extension : que faire ?

          Juste pour compléter,
          je viens de jeter un œil sur com_joaktree. Je n'avais pas compris que ce comp était déjà porté sous 3.0.
          Il y aura donc quelques retouches a effectuer, au cas par cas, mais rien de bien méchant je pense ...
          Developper of JBreeding Manager: http://www.jbreeding.fr/
          J-cook Referral : Service Générateur d'Extensions pour Joomla

          Commentaire


          • #6
            Re : Problème de disparition d'extension : que faire ?

            Merci de ta réponse !
            Oui, c'est la galère.
            Tout réécrire, je n'en serai pas capable.
            En remplaçant
            $treeId = intval( $this->getTreeId() );
            par
            $treeId = intval( self::getTreeId(true) );
            l'erreur "$this" disparaît, mais la fonction getAccess renvoie "false".
            Et pour l'instant, si j’ai réussi à régler les erreurs d'affichage en backend et partiellement en frontend, je suis planté sur l'import de gedcom qui ne démarre pas, le curseur tourne indéfiniment sans erreur et sans import réalisé.

            Il fonctionne en effet sous Joomla! 3, mais avec PHP 7, il y a énormément de "deprecated" liés par exemple à des appels statiques de fonctions pas déclarées comme telles, et ces erreurs sur certaines lignes utilisant "$this".
            Dernière édition par RobertG à 14/12/2016, 12h10
            "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


            • #7
              Re : Problème de disparition d'extension : que faire ?

              salut
              il y a une feuille de changements qui peut t'etre utile
              https://docs.joomla.org/Potential_ba..._Platform_12.2

              pour ton $this en context, c'est plutot un souci php. Faudrait voir le code d'origine de ton fichier et celui que tu as changé
              typiquement lorsque tu as une classe statique et que tu y utilises $this
              CEd
              Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
              http://www.template-creator.com Outil de création de templates
              Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

              Commentaire


              • #8
                Re : Problème de disparition d'extension : que faire ?

                les deprecated tu peux les traiter à la fin. Il faut déjà faire tourner ton bordel, ensuite tu peux nettoyer et être au top du top
                Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                http://www.template-creator.com Outil de création de templates
                Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                Commentaire


                • #9
                  Re : Problème de disparition d'extension : que faire ?

                  Pourquoi veux tu absolument faire tourner ton Joomla sous php7. Si tout est fonctionnel sous php5.6, (com_joaktree compris) franchement tu as le temps.
                  Perso je n'ai rien qui tourne sous php7 ...
                  Dernière édition par liubov à 14/12/2016, 13h43
                  Developper of JBreeding Manager: http://www.jbreeding.fr/
                  J-cook Referral : Service Générateur d'Extensions pour Joomla

                  Commentaire


                  • #10
                    Re : Problème de disparition d'extension : que faire ?

                    Merci Cédric,
                    C'est en effet probablement un problème PHP.
                    Sous PHP 5.6 comme sous PHP 7, l'extension fonctionne, les deprecated étant masquées par un rapport d'erreur à "aucun", et il n'y a pas d'erreur fatale, en tout cas, je n'en ai pas reproduit.
                    Une fois ces deprecated réglés, la plupart liés à des fonctions non déclarées statiques, et les corrections pour les "=&", c'est là qu'apparaissent les erreurs "$this".

                    @liubov : tous mes sites tournent maintenant sous PHP 7, même celui utilisant Joaktree, avec un nombre impressionnant de lignes deprecated, notice ou warning si je laisse le rapport d'erreur. Donc mon but étant de toutes manières de pouvoir continuer à utiliser Joaktree le plus longtemps possible, j'ai intérêt à régler les problèmes à la fois liés à Joomla! lui-même et à PHP 7.
                    "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


                    • #11
                      Re : Problème de disparition d'extension : que faire ?

                      Hello.

                      De mon côté mes serveurs sont sous debian, donc je n'aurais pas la problématique de php7 avant 2017.

                      @liubov : Toutefois rien que par rapport à la performance je ne tarderai à passer à php7.

                      J'aurai donc exactement le même problème, cherchant aussi en vain un successeur à Joaktree.

                      @robertg : Merci d'avoir déjà bien 'débroussaillé' le problème.

                      Bonne journée.
                      A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                      Rejoignez le Joomla Users Groupe Alsace...
                      roland_d_alsace va-t-il devenir roland_du_grand_est ?

                      Commentaire


                      • #12
                        Re : Problème de disparition d'extension : que faire ?

                        Pour l'instant, j'arrive à ne plus avoir de messages d'erreur à l'affichage côté site et administration, en forçant l'accès à true dans deux fichiers (ancestors.php et descendants.php), le problème se situant dans la fonction getAccess de components/com_joaktree/controllers/helper.php
                        $_access = true ; //JoaktreeHelper::getAccess();
                        Par contre, dans les liens de menus "descendants", j'ai deux lignes pour lesquelles je n'ai pas encore la solution :
                        Notice: Array to string conversion in /home/www/developpement/joaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 276

                        Notice: Undefined property: TableJoaktree_persons::$Array in /home/www/developpement/joaktree/administrator/components/com_joaktree/tables/JMFPKtable.php on line 276
                        avec impossibilité de choisir l'individu de référence, pourtant, ça s'affiche bien côté site.
                        Il faut maintenant que je teste les diverses fonctions d'administration car tout à l'heure, il m'était impossible d'importer un gedcom.
                        "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


                        • #13
                          Re : Problème de disparition d'extension : que faire ?

                          la plupart liés à des fonctions non déclarées statiques
                          attention, ce n'est pas parce qu'elle n'est pas déclarée statique qu'elle doit l'être ...
                          tu peux avoir une classe de type objet avec $this->func() ou de type statique avec self::func()
                          les deux sont différentes et sont utilisées dans des conditions différentes

                          $_access = true ; //JoaktreeHelper::getAccess();
                          là tu forces l'accès, donc tu contournes une règle de sécurité. Ok pour les tests, mais à remettre d'aplomb ensuite !

                          donne le code de ta ligne 276 pour voir
                          Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                          http://www.template-creator.com Outil de création de templates
                          Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                          Commentaire


                          • #14
                            Re : Problème de disparition d'extension : que faire ?

                            A ce niveau, c'est l'accès à la visualisation du tableau d'ascendance ou de descendance qui est défini, donc à mon avis peu de risque, mais j'espère bien trouver la solution au niveau de la fonction getAccess du helper.

                            La ligne 276 est la troisième ici :
                            // check whether all fields are filled and build where statement
                            for($i = 0; $i < count( $k ); $i++) {
                            if ($this->$k[$i] === null) {
                            return false;
                            } else {
                            $query->where(' '.$this->_db->quoteName($k[$i]).' = '.$this->_db->Quote($this->$k[$i]).' ');
                            }
                            }
                            et j'ai plus haut $k = $this->_tbl_key; $k étant un tableau rempli dans _construct
                            Dernière édition par RobertG à 14/12/2016, 14h56
                            "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


                            • #15
                              Re : Problème de disparition d'extension : que faire ?

                              essaye is_null() à la place de l'opérateur === . le triple = est utilisé pour des questions de perf. Normalement, c'est la même chose...
                              Code PHP:
                              if ( is_null($this->$k[$i]) ) { 
                              Developper of JBreeding Manager: http://www.jbreeding.fr/
                              J-cook Referral : Service Générateur d'Extensions pour Joomla

                              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