Utilisateurs en ligne: 3
SimpleMachines-fr / Forum 08 Février 2012 à 22:55:45 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.


Connexion avec identifiant et mot de passe
Nouvelles:
Une mise à jour est disponible !
Passez à la version 1.0.18 pour la branche 1.0 et à la version 1.1.10 pour la branche 1.1!
 
 
Accueil Aide Rechercher wiki
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Bouton maintab_back en fonction du groupe ?  (Lu 1159 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Kilucru
Arrivant
*
Hors ligne Hors ligne

Sexe: Homme
Messages: 3


Voir le profil
« le: 10 Mai 2010 à 09:43:04 »

Bonjour !!

J'utilise un forum où les utilisateurs sont répartis en plusieurs groupes de membres, jusque là tout va bien.
Je voudrais créer des boutons dans le menu principal qui soient visibles uniquement par tel ou tel groupe de membre.

En bidouillant un peu dans  index.template.php j'ai réussit à mettre un bouton visible uniquement par les user par exemple :
Code:
// Admin panel
   if ($context['user']['is_logged'])
     echo ($context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '"> </td>' : '' , '
   <td valign="top" class="maintab_back">
   <a href="http://www.*******.com/site/admin/">Admin</a>
   </td>';

ou encore un bouton visible par les utilisateurs ayant accès à l'admin du forum :

Code:
// console
   if ($context['user']['is_logged'] && $context['allow_admin'])
     echo ($context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '"> </td>' : '' , '
   <td valign="top" class="maintab_back">
   <a href="http://www.********.com/site/console/">Console</a>
   </td>';

Et maintenant j'essaye -sans succès- de faire ça pour un groupe de membre particulier qui n'a pas accès à l'admin du forum. Comment puis-je faire ?

Merci d'avance à celui ou celle qui éclairera ma lanterne  Smiley
Journalisée
michi22
Arrivant
*
Hors ligne Hors ligne

Messages: 6


Voir le profil
« Répondre #1 le: 10 Mai 2010 à 10:49:29 »

C'est le cas sur un des forums que je fréquente, je demande à l'admin s'il veut bien me révéler son secret (au passage, ça m'intrigue aussi !)
Journalisée
Kilucru
Arrivant
*
Hors ligne Hors ligne

Sexe: Homme
Messages: 3


Voir le profil
« Répondre #2 le: 11 Mai 2010 à 01:18:49 »

Yop

Bon un ami m'a aidé, je vais essayer de détailler la solution ici au cas où d'autres voudraient faire de même.
En gros le but est de créer une nouvelle variable "GROUPS" dans un tableau, afin que dans le template on puisse paramétrer l'affichage du bouton.

On se sert donc du SSI.php sur la racine du forum :

Code:
function ssi_getGroupMember(){
global $context, $settings, $scripturl, $txt, $db_prefix, $ID_MEMBER;
global $user_info, $modSettings, $func;
$thisGroupsNames = array();
    if(!$context['user']['is_guest']){
$request = db_query("
SELECT * FROM  {$db_prefix}members WHERE ID_MEMBER=".$ID_MEMBER, __FILE__, __LINE__);
$row = mysql_fetch_assoc($request);
$this_member_groups = explode(',',$row['additionalGroups'].','.$row['ID_GROUP']);
foreach($this_member_groups as $this_group){
    $request = db_query("
SELECT * FROM  {$db_prefix}membergroups WHERE ID_GROUP=".$this_group, __FILE__, __LINE__);
    $row = mysql_fetch_assoc($request);
    $thisGroupsNames[] = $row['groupName'];
}
//echo '<pre>'.print_r($thisGroupsNames,true).'</pre>';
    }
    return $thisGroupsNames;
   
}

Dans le template ensuite :

Code:
require 'SSI.php';
$context['GROUPS'] = ssi_getGroupMember();

Et pour finir, on peut régler l'affichage du bouton selon le groupe :

Code:
//Bouton test
if (in_array('Truc',$context['GROUPS']) OR in_array('Machin',$context['GROUPS']))
     echo ($context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '"> </td>' : '' , '
   <td valign="top" class="maintab_back">
   <a href="http://www.monsite.com/mapage.html">test</a>
   </td>';

Mon bouton test ne sera visible que par les groupes "Truc" ou "Machin".

Voilà, merci quand même michi22  Tongue
Journalisée
smf-fr
Confirmé
****
Hors ligne Hors ligne

Sexe: Homme
Messages: 132


Voir le profil WWW
« Répondre #3 le: 11 Mai 2010 à 08:04:25 »

Bonjour,

Comment écrire n'importe quoi et introduire des failles de sécurité......
Il suffit de connaître l'id du groupe, simpement en allant dans admin>groupe de membres, et noter l'url indiquée lorsque l'on veut cliquer sur un groupe (http://xxxxx?group=x)
Ensuite dans le template il suffit de mettre, en remplaçant x ou y par le groupe voulu.
Code:
Global $user_info;
if (in_array(x, $user_info['groups']) || in_array(y, $user_info['groups']))
     echo ($context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '"> </td>' : '' , '
   <td valign="top" class="maintab_back">
   <a href="http://www.monsite.com/mapage.html">test</a>
   </td>';

Et si on veut allez plus loin on passera par un modSettings pour définir un ensemble de variables afin de paramétrer directement depuis l'admin sans toucher au code pour des modifications.

Le SSI.php n'est absolument pas utilisable dans les fichiers internes de smf, ce fichier a été conçu pour externaliser smf, cela provoque des failles de sécurité en plus de multiplier les opérations de la base de données.
« Dernière édition: 11 Mai 2010 à 08:07:02 par smf-fr » Journalisée

Kilucru
Arrivant
*
Hors ligne Hors ligne

Sexe: Homme
Messages: 3


Voir le profil
« Répondre #4 le: 11 Mai 2010 à 10:42:08 »

Merci du complément !
Journalisée
Pages: [1]   Haut de page
Imprimer
SimpleMachines-fr / Forum  |  Support SMF  |  SMF 1.1  |  Mods et personnalisation  |  Fil de discussion: Bouton maintab_back en fonction du groupe ?
 
Aller à:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines

Tous les logos et les marques présentes sur ce site appartiennent à leurs propriétaires respectifs.
Des détails sur les copyrights et les modules installés peuvent être trouvés Ici.

Vous pouvez syndiquer le contenu de ce site : Flux-RSS/RDF.

Site propulsé par pragmaMx 0.1.11.3.

Valid HTML 4.01 Transitional CSS ist valide!
Design by © www.ndeezign.com