Problème de Parse error!

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

  • Problème de Parse error!

    Bonjour à tous! Je viens de créer un site, qui fonctionne très bien en local. Après l'install sur le serveur (chez OVH), le site beug et me retourne cette erreur:

    Parse error: syntax error, unexpected ',', expecting '(' in /homez.301/arclubla/www/modules/mod_roknavmenu/helper.php on line 32

    Pourtant, le fichier n'est pas mofifié, et ca marche en local et pas en distant! Quelle est cette erreur? Merci de m'aider car la je craque, je n'ai pas l'affichage de mon menu... Je précise que l'erreur est située dans le dossier du modu le menu rocknavmenu, lié au template Akiraka (Rocket Thème Template).

    Je vous met également le fichier complet:

    <?php
    /**
    * @version $Id$
    * @package RocketWerx
    * @subpackage RokNavMenu
    * @copyright Copyright (C) 2009 RocketWerx. All rights reserved.
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
    */
    // no direct access
    defined('_JEXEC') or die('Restricted access');

    require_once (dirname(__FILE__).DS.'lib'.DS.'RokNavMenuTree.php ');


    /**
    * mod_roknavmenu Helper class
    *
    * @static
    * @package Joomla
    * @subpackage Menus
    * @since 1.5
    */
    class modRokNavMenuHelper
    {
    function getMenu(&$params)
    {
    $menu = new RokNavMenuTree($params);

    $items = &JSite::getMenu();
    // Get Menu Items
    $rows = $items->getItems('menutype', $params->get('menutype'));
    $maxdepth = $menu->getParameter(RokNavMenuTree::MENUPARAM_MAX_DEPTH, 20);

    // Build Menu Tree root down (orphan proof - child might have lower id than parent)
    $user =& JFactory::getUser();
    $ids = array();
    $ids[0] = true;
    $last = null;
    $unresolved = array();
    // pop the first item until the array is empty if there is any item
    if ( is_array($rows)) {
    while (count($rows) && !is_null($row = array_shift($rows)))
    {
    $row->ionly = $params->get(RokNavMenuTree::MENUPARAM_MENU_IMAGES_LINK) ;
    if (!$menu->addNode($params, $row)) {
    // no parent yet so push item to back of list
    // SAM: But if the key isn't in the list and we dont _add_ this is infinite, so check the unresolved queue
    if(!array_key_exists($row->id, $unresolved) || $unresolved[$row->id] < $maxdepth) {
    array_push($rows, $row);
    // so let us do max $maxdepth passes
    // TODO: Put a time check in this loop in case we get too close to the PHP timeout
    if(!isset($unresolved[$row->id])) $unresolved[$row->id] = 1;
    else $unresolved[$row->id]++;
    }
    }
    }
    }
    return $menu;
    }

    /**
    * Perform the basic common formatting to all menu nodes
    */
    function formatMenu(&$menu) {


    //set the active tree branch
    $joomlamenu = &JSite::getMenu();
    $active = $joomlamenu->getActive();
    if (isset($active) && isset($active->tree) && count($active->tree)) {
    foreach ($active->tree as $active_node) {
    $active_child = $menu->findChild($active_node);
    if ($active_child !== false) {
    $active_child->addListItemClass(RokNavMenuNode::CLASS_ACTIVE);
    }
    }
    }

    // set the current node
    if (isset($active)) {
    $current_child = $menu->findChild($active->id);
    if ($current_child !== false) {
    $current_child->css_id = RokNavMenuNode::ID_CURRENT;
    }
    }


    // Limit the levels of the tree is called for By limitLevels
    if ($menu->getParameter(RokNavMenuTree::MENUPARAM_LIMIT_LEVE LS)) {
    $start = $menu->getParameter(RokNavMenuTree::MENUPARAM_START_LEVE L);
    $end = $menu->getParameter(RokNavMenuTree::MENUPARAM_END_LEVEL) ;

    //Limit to the active path if the start is more the level 0
    if ($start > 0) {
    $found = false;
    // get active path and find the start level that matches
    if (isset($active) && isset($active->tree) && count($active->tree)) {
    foreach ($active->tree as $active_node) {
    $active_child = $menu->findChild($active_node);
    if ($active_child !== false) {
    if ($active_child->level == $start-1) {
    $menu->resetTop($active_child->id);
    $found = true;
    break;
    }
    }
    }
    }
    if (!$found){
    $menu->_children= array();
    }
    }
    //remove lower then the defined end level
    $menu->removeLevel($end);
    }

    // Remove the child nodes that were not needed to display unless showAllChildren is set
    $showAllChildren = $menu->getParameter(RokNavMenuTree::MENUPARAM_SHOW_ALL_C HILDREN);
    if (!$showAllChildren) {
    if ($menu->hasChildren()){
    foreach($menu->getChildren() as $toplevel) {
    if (isset($active) && isset($active->tree) && array_search($toplevel->id, $active->tree) !== false){
    $last_active = $menu->findChild($active->tree[count($active->tree)-1]);
    if ($last_active !== false) {
    $toplevel->removeLevel($last_active->level+1);
    }
    }
    else {
    $toplevel->removeLevel($toplevel->level);
    }
    }
    }
    }
    }
    }

    Aidez moi s'il vous plait ;-(

  • #2
    Bonjour,
    la ligne 32 c'est ça :
    Code:
    $maxdepth = $menu->getParameter(RokNavMenuTree::MENUPARAM_MAX_DEPTH, 20);
    Il attend une parenthèse "(" à la place de la virgule "," donc il voudrait probablement :
    Code:
    $maxdepth = $menu->getParameter(RokNavMenuTree::MENUPARAM_MAX_DEPTH(), 20);
    Maintenant si tu dois ajouter des () partout, tu n'es pas arrivé...
    Peut être un pb de version de php ? Essaye de mettre
    Code:
    SetEnv PHP_VER 5
    dans un fichier htaccess.txt, monte le dans la racine du site en ftp et renomme le en .htaccess
    Schtroumpfe toi le Schtroumpf t'aidera.
    Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

    Commentaire


    • #3
      Merci, alors la parenthèse ca a l'air d'etre ca, maintenant a la ligne 44 il me marque ca:

      Parse error: syntax error, unexpected ')', expecting '(' in /homez.301/arclubla/www/modules/mod_roknavmenu/helper.php on line 44

      Et je ne vois vraiment pas... Ton astuce avec le fichier .htaccess ne fais rien... N'est-ce pas un problème d'encodage du fichier? Je suis sur le site, j'attends avec impatience ta réponse! Merci bcp

      Commentaire


      • #4
        Re,
        unexpected ')', expecting '(' ... avmenu/helper.php on line 44
        ben oui, il va reporter le problème de proche en proche, il faudrait mettre () après tous les trucs en majuscules précédés de :: en espérant qu'il n'y en pas dans 50 000 fichiers rocketheme...
        ... surement un réglage php mais pour l'instant je ne vois pas...
        Schtroumpfe toi le Schtroumpf t'aidera.
        Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

        Commentaire


        • #5
          Merci sa a l'air de marcher, maintenant à un autre endroit il me marque ca:

          Parse error: syntax error, unexpected '=', expecting ')' in /homez.301/arclubla/www/modules/mod_roknavmenu/lib/RokNavMenuTree.php on line 34

          ca a l'air d'etre lié à la fonction construct...

          function __construct(&$params = null)

          comment résoudre?

          Commentaire


          • #6
            Re,
            enlève le =null, c'est une monstruosité de mettre une valeur par défaut sur un paramètre passé en référence... en tout cas de mon point de vue.
            Schtroumpfe toi le Schtroumpf t'aidera.
            Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

            Commentaire


            • #7
              J'ai de nouveau besoin de votre aide! Suite aux infos de Grand Schtroumpf, les fichiers ont l'air de se corriger, mais maintenant il m'affiche ca:

              Parse error: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /homez.301/arclubla/www/modules/mod_roknavmenu/lib/RokNavMenuTree.php on line 155

              voici le fichier, a partir de l'erreur:

              /**
              * Rok Nav Menu Tree Class.
              */
              class RokNavMenuTree extends RokMenuTreeBase
              {
              const MENUPARAM_MENU_IMAGES = "menu_images";
              const MENUPARAM_LIMIT_LEVELS = "limit_levels";
              const MENUPARAM_START_LEVEL = "startLevel";
              const MENUPARAM_END_LEVEL = "endLevel";
              const MENUPARAM_SHOW_ALL_CHILDREN = "showAllChildren";
              const MENUPARAM_TAG_ID = "tag_id";
              const MENUPARAM_CLASS_SUFFIX = "class_sfx";
              const MENUPARAM_MENU_IMAGES_LINK = "menu_images_link";
              const MENUPARAM_MAX_DEPTH = "maxdepth";

              function addNode(&$params, $item)
              {
              // Get menu item data
              $node = $this->_getItemData($params, $item);
              return $this->addChild($node);
              }


              function resetTop($top_node_id) {
              $new_top_node = $this->findChild($top_node_id);
              if ($new_top_node !== false)
              {
              $this->id = $new_top_node->id;
              $this->_children = $new_top_node->getChildren();
              }
              else {
              return false;
              }
              }

              function _getItemData(&$params, $item)
              {
              //Create the new Node
              $node = new RokNavMenuNode();

              // Menu Link is a special type that is a link to another item
              if ($item->type == RokNavMenuNode::TYPE_MENU_LINK)
              {
              $menu = &JSite::getMenu();
              if ($newItem = $menu->getItem($item->query['Itemid'])) {
              $tmp = clone($newItem);
              $tmp->name = $item->name;
              $tmp->mid = $item->id;
              $tmp->parent = $item->parent;
              $tmp->url = null;
              $tmp->nav = RokNavMenuNode::TARGET_CURRENT;
              } else {
              return false;
              }
              }
              else {
              $tmp = clone($item);
              $tmp->name = $item->name;
              $tmp->mid = $tmp->id;
              $tmp->url = null;
              $tmp->nav = RokNavMenuNode::TARGET_CURRENT;
              }

              $iParams = new JParameter($tmp->params);

              if ($params->get(RokNavMenuTree::MENUPARAM_MENU_IMAGES) && $iParams->get('menu_image') && $iParams->get('menu_image') != -1) {
              $image = JURI::base(true).'/images/stories/'.$iParams->get('menu_image');
              if($tmp->ionly){
              $tmp->name = null;
              }
              } else {
              $image = null;
              }


              switch ($tmp->type)
              {
              case RokNavMenuNode::TYPE_SEPARATOR:
              $tmp->outtype = RokNavMenuNode::TYPE_SEPARATOR;
              break;
              case RokNavMenuNode::TYPE_URL:
              if ((strpos($tmp->link, 'index.php?') === 0) && (strpos($tmp->link, 'Itemid=') === false)) {
              $tmp->url = $tmp->link.'&amp;Itemid='.$tmp->id;
              } else {
              $tmp->url = $tmp->link;
              }
              $tmp->outtype = RokNavMenuNode::TYPE_MENU_ITEM;
              break;
              default :
              $router = JSite::getRouter();
              $tmp->url = $router->getMode() == JROUTER_MODE_SEF ? 'index.php?Itemid='.$tmp->id : $tmp->link.'&Itemid='.$tmp->id;
              $tmp->outtype = RokNavMenuNode::TYPE_MENU_ITEM;
              break;
              }


              if ($tmp->url != null)
              {
              // set the target based on menu item options
              switch ($tmp->browserNav)
              {
              default:
              case 1:
              $tmp->nav = RokNavMenuNode::TARGET_NEW;
              break;
              case 2:
              $tmp->url = str_replace('index.php', 'index2.php', $tmp->url);
              $tmp->nav = RokNavMenuNode::TARGET_NEW_NO_TOOLBAR;
              break;
              case 0:
              default:
              $tmp->nav = RokNavMenuNode::TARGET_CURRENT;
              break;
              }

              // Get the final URL
              if ($tmp->home == 1) { // Set Home Links to the Base
              $tmp->url = JURI::base();
              }
              else if ($tmp->type != RokNavMenuNode::TYPE_SEPARATOR && $tmp->type != RokNavMenuNode::TYPE_URL) {
              $iSecure = $iParams->def('secure', 0);

              // Set Content links that can be put through JRoute through it
              if (strcasecmp(substr($tmp->url, 0, 4), 'http') && (strpos($tmp->url, 'index.php?') !== false)) {
              $tmp->url = JRoute::_($tmp->url, true, $iSecure);
              }
              // TODO force index2.php urls to ssl
              else if (strcasecmp(substr($tmp->url, 0, 4), 'http') && (strpos($tmp->url, 'index.php2?') !== false)) {

              }
              }
              else if($tmp->type == RokNavMenuNode::TYPE_URL) {
              $tmp->url = str_replace('&', '&amp;', $tmp->url);
              }
              else {

              }
              }


              $node->id = $tmp->mid;
              $node->parent = $tmp->parent;
              $node->title = $tmp->name;
              $node->access = $tmp->access;
              $node->link = $tmp->url;
              $node->level = $item->sublevel;
              $node->image = $image;
              $node->alias = $tmp->alias;
              $node->nav = $tmp->nav;


              $node->setParameters($tmp->params);
              $node->type = $tmp->outtype;
              $node->order = $item->ordering;
              $node->addListItemClass("item" . $node->id);
              $node->addSpanClass($tmp->outtype);
              return $node;
              }
              }

              /**
              * RokNavMenuNode
              */
              class RokNavMenuNode extends RokMenuTreeBase
              {
              const TYPE_MENU_LINK = "menulink";
              const TYPE_SEPARATOR = "separator";
              const TYPE_MENU_ITEM = "menuitem";
              const TYPE_URL = "url";

              const TARGET_CURRENT = "current";
              const TARGET_NEW = "new";
              const TARGET_NEW_NO_TOOLBAR = "newnotool";

              const CLASS_PARENT = "parent";
              const CLASS_ACTIVE = "active";
              const ID_CURRENT = "current";


              var $title = null;
              var $link = null;

              var $image = null;
              var $alias = null;
              var $type = null;
              var $target = null;
              var $order = null;
              var $nav = null;


              var $_li_classes = array();
              var $_a_classes = array();
              var $_span_classes = array();
              var $css_id = null;

              function isAccessable(){
              $user =& JFactory::getUser();
              $aid = (int) $user->get('aid', 0);
              if (null == $this->access ) {
              return null;
              }
              else if ($aid >= $this->access) {
              return true;
              }
              else {
              return false;
              }
              }

              function getListItemClasses() {
              $html_classes = " ";
              foreach ($this->_li_classes as $class) {
              $html_classes .= $class. " ";
              }
              return rtrim(ltrim($html_classes));
              }

              function addListItemClass($class) {
              $this->_li_classes[] = $class;
              }

              function hasListItemClasses(){
              return count($this->_li_classes);
              }


              function getLinkClasses() {
              $html_classes = " ";
              foreach ($this->_a_classes as $class) {
              $html_classes .= $class. " ";
              }
              return rtrim(ltrim($html_classes));
              }

              function addLinkClass($class) {
              $this->_a_classes[] = $class;
              }

              function hasLinkClasses(){
              return count($this->_a_classes);
              }

              function getSpanClasses() {
              $html_classes = " ";
              foreach ($this->_span_classes as $class) {
              $html_classes .= $class. " ";
              }
              return rtrim(ltrim($html_classes));
              }

              function addSpanClass($class) {
              $this->_span_classes[] = $class;
              }
              function hasSpanClasses(){
              return count($this->_span_classes);
              }

              function addChild(&$node) {
              if($node->isAccessable()) {
              $ret = parent::addChild($node);
              if ($ret === true) {
              if (!array_search(RokNavMenuNode::CLASS_PARENT, $this->_li_classes)) {
              $this->addListItemClass(RokNavMenuNode::CLASS_PARENT);
              }
              }
              return $ret;
              }
              return true; // item is not accessable so return true to remove from the stack
              }

              }



              Quelle est l'erreur? Pourquoi suis je obligé de modifié tout les fichiers de Roknavmenu, alors que ca marche en local? D'après vous y aurait-il d'autres erreurs dans ce script? Aidez moi, je suis en ligne! Je vous remercie beaucoup beaucoup ! Anthony

              Commentaire


              • #8
                Re,
                ici un Russe qui a eu le même problème qu toi :
                http://joomlaforum.ru/index.php?topic=74742.0
                d'après la traduction Google, ça s'est arrangé tout seul.

                Bon d'après ce que je lis ici et là, ça serait bien un problème de php5.
                Tu es sûr de bien avoir suivi la manip pour le .htaccess (mon message d'hier, 23h55) ?
                Schtroumpfe toi le Schtroumpf t'aidera.
                Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

                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