Fork me on GitHub

Rapport de message :*
 

Problème multimenu lié à un nombre important de groupes

Titre du sujet : Problème multimenu lié à un nombre important de groupes
par julien06 sur 13/05/2011 10:49:13

Bonjour à tous,

Lors de la réalisation d'un site avec XOOPS 2.5.0 et Multimenu 2.05, notre équipe a rencontrée un souci que nous avons pu corriger.

Lorsque nous avons plus d’une dizaine de groupe à gérer pour les droits au niveau des menus, les droits ne sont pas correctement respectés.

En effet, c’est une faille de multi-menu : lors de la recherche des droits pour les groupes dans la requête il y a un LIKE avec %no du groupe% or pour le groupe 2 nous allons aussi récupérer ce qui correspond au groupe 12 ou 22,etc….

Pour remédier à cette faille deux fichiers ont été corrigé avec les tags modif SVN :

Le fichier /www/modules/multimenu/include/function_commons.php
A la ligne 37 remplacer par :
//modif SVN pour pb droit au menu par groupes
        
$tabgroups explode(' ',$data['groups']);
        
$menu_count false;
        foreach(
$tabgroups as $group_id ){
            if (
in_array($group_id,$user_group)){$menu_count true;}    
        }
        if (
$menu_count) { //voir si utilisateur a le droit au menu
        //fin modif SVN pour pb droit au menu par groupes

Le fichier /www/modules/multimenu/blocks/include/item.php

A la ligne 43 remplacer par :
// Is the menu available?
//modif SVn pb droit menu pour group
      /* $menu_result = "SELECT image_dir
               FROM ".$xoopsDB->prefix('multimenu_menu')."
               WHERE status>=1 AND catid=" . $options[2] . " AND ( title='' ".$like." )"; */
        
$menu_result "SELECT image_dir,groups FROM ".$xoopsDB->prefix('multimenu_menu')." WHERE status>=1 AND catid=" $options[2] ;
        
$menu_list  $xoopsDB->queryF$menu_result );
        
        
$menu_count $xoopsDB->getRowsNum$menu_list );
        if( !
$menu_count ) { Return False; }
        
$myrow         $xoopsDB->fetchArray$menu_list );
        
$tabgroups explode(' ',$myrow['groups']);
        
//print_r($tabgroups);
        
$menu_count false;
        foreach(
$tabgroups as $group_id ){
            if (
in_array($group_id,$user_group)){$menu_count true;}    
        }
        if( !
$menu_count ) { Return False; }
//fin modif SVn pb droit menu pour group

A la ligne 121, remplacer par :
//modif SVn pb droit menu pour group
     /* $result = "SELECT *
        FROM  ".$xoopsDB->prefix("multimenu_link")."
        WHERE catid=".$options[2]." AND status>0 AND ( title='' ".$like." ) " . $where ."
                ORDER BY " . $options[6];
                ; */
        
$result "SELECT * FROM  ".$xoopsDB->prefix("multimenu_link")." WHERE catid=".$options[2]." AND status>0 " $where ." ORDER BY " $options[6];
                ;
        
$link_list $xoopsDB->queryF($result$options[3], $rand);


En espérant que cela puisse servir aux créateurs du module.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

62 Personne(s) en ligne (47 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 62 | Plus ...