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 - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #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 - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

    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 - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      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 - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

            Commentaire


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

              salut
              il y a une feuille de changements qui peut t'etre utile


              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 - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                    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 - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                        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 - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                            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
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X