Mise à jour d'un module Joomla 2.5 vers 3.x (problème version PHP)

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

  • [RÉGLÉ] Mise à jour d'un module Joomla 2.5 vers 3.x (problème version PHP)

    Bonjour à tous.
    Je possède un site internet basé sur Joomla. A l'origine, celui-ci à été créé sur Joomla 2.5. J'ai réussi à le migrer vers la dernière version en date (3.9.2). J'ai fait cette opération moi-même car le prestataire qui me l'a réalisé il y à 5 ans ne travail plus avec ce CMS et n'a pas voulu réaliser la migration (trop compliqué paraît-il).
    Je suis content car le site fonctionne parfaitement, j'ai pu passer en PHP7, activer le certificat SSL...etc. Du coup j'ai un site qui tourne bien.... A l'exception d'un module qui me fait planter tout le site s'il est actif.

    Ce module à été écrit par cet ancien prestataire et ne bénéficie donc pas de mise à jour. C'est un petit script qui s'appelle "a voir aussi" et qui affiche sur la droite de la page les produits de la même catégorie que la page visité.

    Visiblement, ce qui fait planter le module est la version PHP. L'erreur obtenue est :

    Code:
    [B]Warning: Use of undefined constant DS - assumed 'DS' (this will throw an Error in a future version of PHP) in /home/handifleao/www/securacces/modules/mod_voiraussi/mod_voiraussi.php on line 11
    
    Warning: require_once(/home/handifleao/www/securacces/modules/mod_voiraussiDShelper.php): failed to open stream: No such file or directory in /home/handifleao/www/securacces/modules/mod_voiraussi/mod_voiraussi.php on line 11
    
    Fatal error: require_once(): Failed opening required '/home/handifleao/www/securacces/modules/mod_voiraussiDShelper.php' (include_path='.:/usr/local/php7.3/lib/php') in /home/handifleao/www/securacces/modules/mod_voiraussi/mod_voiraussi.php on line 11[/B]
    Peut-être que quelqu'un d'entre vous aurait la solution pour m'aider à résoudre ce problème ?

    Je joins à ce post le module zippé....

    D'avance un grand merci !
    Fichiers joints
    Dernière édition par Scuba070 à 03/02/2019, 10h39

  • #2
    Bonjour,

    En fait, "DS" correspond au séparateur "/" dans les chemins.
    Il faut soit le remplacer partout dans le code, soit voir si sa définition au début du fichier principal est bien prise en compte.
    define('DS', DIRECTORY_SEPARATOR);
    "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
      J'ai oublié de préciser une chose importante.

      J'ai tenté diverses solutions trouvé ici et , sans succès car cela me donne une autre erreur une fois en place:
      Code:
      0 - Using $this when not in object context

      Commentaire


      • #4
        Envoyé par RobertG Voir le message
        Bonjour,

        En fait, "DS" correspond au séparateur "/" dans les chemins.
        Il faut soit le remplacer partout dans le code, soit voir si sa définition au début du fichier principal est bien prise en compte.
        Merci Robert G

        Merci pour votre réponse. Je viens de comparer mon fichier PHP avec celui d'un autre module et j'ai compris ce que vous avez écrit.

        Ainsi j'ai transformé
        Code:
        require_once( dirname(__FILE__).DS.'helper.php' );
        en
        Code:
        require_once dirname(__FILE__) . '/helper.php';
        Je n'ai plus l'erreur "undefined constant DS" mais du coup je retrouve ma deuxième erreur

        Code:
        0 - Using $this when not in object context
        Mais cette fois je n'ai aucune idée de comment m'en sortir...

        Commentaire


        • #5
          En activant le rapport d'erreur sur déceloppement, j'arrive à en savoir un peu plus :

          Code:
          Using $this when not in object context
          /home/handifleao/www/securacces/libraries/src/Application/CMSApplication.php:370 [TABLE="cellpadding: 0, cellspacing: 0"]
          [TR]
          [TD="colspan: 3"][B]Call stack[/B][/TD]
           		[/TR]
          [TR]
          [TD][B]#[/B][/TD]
           			[TD][B]Function[/B][/TD]
           			[TD][B]Location[/B][/TD]
           		[/TR]
          [TR]
          [TD]1[/TD]
           			[TD]()[/TD]
           			[TD]JROOT/libraries/src/Application/CMSApplication.php:370[/TD]
           		[/TR]
          [TR]
          [TD]2[/TD]
           			[TD]Joomla\CMS\Application\CMSApplication::getMenu()[/TD]
           			[TD]JROOT/libraries/src/Application/SiteApplication.php:275[/TD]
           		[/TR]
          [TR]
          [TD]3[/TD]
           			[TD]Joomla\CMS\Application\SiteApplication::getMenu()[/TD]
           			[TD]JROOT/modules/mod_voiraussi/tmpl/default.php:10[/TD]
           		[/TR]
          [TR]
          [TD]4[/TD]
           			[TD]require()[/TD]
           			[TD]JROOT/modules/mod_voiraussi/mod_voiraussi.php:9[/TD]
           		[/TR]
          [TR]
          [TD]5[/TD]
           			[TD]include()[/TD]
           			[TD]JROOT/libraries/src/Helper/ModuleHelper.php:200[/TD]
           		[/TR]
          [TR]
          [TD]6[/TD]
           			[TD]Joomla\CMS\Helper\ModuleHelper::renderModule()[/TD]
           			[TD]JROOT/libraries/src/Document/Renderer/Html/ModuleRenderer.php:98[/TD]
           		[/TR]
          [TR]
          [TD]7[/TD]
           			[TD]Joomla\CMS\Document\Renderer\Html\ModuleRenderer->render()[/TD]
           			[TD]JROOT/libraries/src/Document/Renderer/Html/ModulesRenderer.php:47[/TD]
           		[/TR]
          [TR]
          [TD]8[/TD]
           			[TD]Joomla\CMS\Document\Renderer\Html\ModulesRenderer->render()[/TD]
           			[TD]JROOT/libraries/src/Document/HtmlDocument.php:491[/TD]
           		[/TR]
          [TR]
          [TD]9[/TD]
           			[TD]Joomla\CMS\Document\HtmlDocument->getBuffer()[/TD]
           			[TD]JROOT/libraries/src/Document/HtmlDocument.php:783[/TD]
           		[/TR]
          [TR]
          [TD]10[/TD]
           			[TD]Joomla\CMS\Document\HtmlDocument->_renderTemplate()[/TD]
           			[TD]JROOT/libraries/src/Document/HtmlDocument.php:557[/TD]
           		[/TR]
          [TR]
          [TD]11[/TD]
           			[TD]Joomla\CMS\Document\HtmlDocument->render()[/TD]
           			[TD]JROOT/libraries/src/Application/CMSApplication.php:1044[/TD]
           		[/TR]
          [TR]
          [TD]12[/TD]
           			[TD]Joomla\CMS\Application\CMSApplication->render()[/TD]
           			[TD]JROOT/libraries/src/Application/SiteApplication.php:778[/TD]
           		[/TR]
          [TR]
          [TD]13[/TD]
           			[TD]Joomla\CMS\Application\SiteApplication->render()[/TD]
           			[TD]JROOT/libraries/src/Application/CMSApplication.php:202[/TD]
           		[/TR]
          [TR]
          [TD]14[/TD]
           			[TD]Joomla\CMS\Application\CMSApplication->execute()[/TD]
           			[TD]JROOT/index.php:49[/TD]
           		[/TR]
          [/TABLE]
          J'ai donc ouvert le fichier CMSapplication et voici le code de la ligne 370 :

          Code:
              public function getMenu($name = null, $options = array())
              {
                  if (!isset($name))
                  {
                      $name = $this->getName();
                  }
          
                  // Inject this application object into the \JMenu tree if one isn't already specified
                  if (!isset($options['app']))
                  {
                      $options['app'] = $this; [COLOR=#FF0000][B]la ligne 370 est ici[/B][/COLOR]
                  }
          
                  try
                  {
                      $menu = \JMenu::getInstance($name, $options);
                  }
                  catch (\Exception $e)
                  {
                      return;
                  }
          
                  return $menu;
              }
          Que dois-je modifier ici et comment ?

          D'avance, merci

          Commentaire


          • #6
            Bon je continue seul à essayer de solutionner mon problème. J'écris ici toutes mes avancées, peut-être que cela servira à quelqu'un un jour...

            J'ai résolu -en partie- l'erreur
            0 - Using $this when not in object context
            En cherchant un peu sur les forum, la ligne suivante était incorrecte :

            Code:
            $parentItemid = JSite::getMenu()->getActive()->parent_id;
            Voici la correction :
            Code:
            $parentItemid = JFactory::getApplication()->getMenu()->getActive()->parent_id;
            Désormais, le site ne plante plus, mais j'ai encore une erreur :
            Code:
            [B]Notice[/B]: Undefined index: Itemid in [B]/home/handifleao/www/securacces/modules/mod_voiraussi/tmpl/default.php [/B]on line [B]22[/B]
            Voici le code incluant la ligne 22 :

            Code:
            //Obtain a database connection
            $db = JFactory::getDbo();
            //Retrieve the shout                    
            $query = $db->getQuery(true)
                        ->select('m.id as itemId')
                        ->from('#__menu as m')
                        ->where('m.parent_id =' . (int)$parentItemid . ' AND m.id !=' . (int)$_GET['Itemid']) [COLOR=#FF0000][B]la ligne 22 est ici[/B][/COLOR]
                        ->order('m.lft ASC');
            Une idée de comment corriger ce problème ?



            Commentaire


            • #7
              J'ai peut être une question bête.... Mais je vois à des endroits Itemid, à d'autres itemId, ou encore ItemId.

              La casse est-elle importante ?

              Commentaire


              • #8
                Bonjour,

                Votre problème vient bien du module "voiraussi" qui est soit "pas à jour", soit incompatible avec la version actuelle Joomla, donc, désactivez le.

                Si vous souhaitez que l'on vous aide, merci de copier le contenu du module.

                Pascal

                PS: ne touchez pas au fichier CMSapplication qui est un fichier standard Joomla pour corriger un problème dans un autre module
                Dernière édition par pmleconte à 02/02/2019, 15h41
                If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                Commentaire


                • #9
                  Votre ItemId vient certainement d'un formulaire de votre module. Regardez si vous ne trouvez pas cela dans le fichier xml du module.

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

                  Commentaire


                  • #10
                    Oups! , je viens de voir que vous aviez mis le zip du module.

                    Je regarde si je vois quelque chose.

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

                    Commentaire


                    • #11
                      Pas terrible sa programmation: il charge $list dans le helper (youpi) puis il a oublié un truc (le menu associé à l'article), donc il l'ajoute dans le default.php.

                      Je pense que cette syntaxe est incorrecte, mais essayez déjà de remplacer (int)$_GET['Itemid'] par JRequest::getInt('id') dans default.php, mais je ne suis pas sûr que cela fonctionne.

                      Autre solution : retirez .'&Itemid='.$ArrayItemId[$i]->itemId) en ligne 41 ainsi que la requête sql.

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

                      Commentaire


                      • #12
                        J'ai un peu simplifié votre code et on doit pouvoir jouer aussi sur l'ordre d'affichage.

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

                        Commentaire


                        • #13
                          J'ai ajouté le choix de l'ordre d'affichage dans les paramètres du module (ainsi que le filtrage par langue dans le helper.php).

                          Pascal
                          Fichiers joints
                          woluweb aime ceci.
                          If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                          Commentaire


                          • #14
                            Envoyé par pmleconte Voir le message
                            Pas terrible sa programmation: il charge $list dans le helper (youpi) puis il a oublié un truc (le menu associé à l'article), donc il l'ajoute dans le default.php.

                            Je pense que cette syntaxe est incorrecte, mais essayez déjà de remplacer (int)$_GET['Itemid'] par JRequest::getInt('id') dans default.php, mais je ne suis pas sûr que cela fonctionne.

                            Autre solution : retirez .'&Itemid='.$ArrayItemId[$i]->itemId) en ligne 41 ainsi que la requête sql.

                            Pascal
                            Bonsoir Pascal.

                            Un immense merci car vos modifs ont permis de corriger les erreurs de liens ! Un grand pas de fait....

                            Seulement, il manque maintenant les images au dessus des articles proposés.

                            Pour info, avant votre modif, j'avais bien les images correctes sur chaque article, mais les liens n'était pas bon.

                            Désormais, c'est l'inverse....

                            Si vous voulez je peux en MP vous envoyer le lien du site pour voir le problème en direct...

                            En tout cas merci de m'aider !!

                            Commentaire


                            • #15
                              Bonjour,

                              J'avais effectivement un bug (oubli impardonnable d'un ".....).

                              Ci-joint la version corrigée.

                              Pascal

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

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X