Role d'user du forum

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

J'ai fais un forum et je voudrais que sous le nom de l'auteur d'un topic ou d'un commentaires, je puisse afficher son rôle (admin, modérateur, etc...)

J'ai testé avec $GLOBALS['user']->roles dans un foreach mais logiquement ça me met tous les rôles de l'utilisateur qui regarde le message.

Comment puis-je récuperer le rôle de l'auteur du message? Sachant que j'utilise le module Author_pane.

Merci d'avance,

PEACE

Forum : 
Version de Drupal : 

Normalement, dans la structure de données des nodes (donc des topics) et des commentaires, tu dois avoir un uid. Avec sa, tu peux faire un user_load sur l'uid et récupérer surement le rôle du user en question.

Bon, J'ai regardé l'API maisje ne comprend pas comment marche user_load... J'ai essayé en tapant dans la base de données mais ça ne marche pas non plus...

Y a-t-il un exemple d'utilisation de user_load?

Je n'ai pas de Drupal installé pour tester, mais de mémoire :
user_load($uid) te renvoie un objet user, que tu peux consulter.
Par exemple, pour afficher le login tu fais :

//On considère que tu as récupéré le uid avant...
$user = user_load($uid);
drupal_set_message($user -> name);

Les rôles, je ne sais plus exactement où on les trouve.
Il me semble que c'est quelque chose comme :
$user -> roles, où roles doit être un tableau.
Un bon moyen de s'en sortir est d'afficher le contenu de la variable $user que tu récupère, avec le module devel. C'est d'ailleurs un truc auquel j'ai souvent recours sous drupal, car on peut jamais deviner comment sont structurés les variables $node, $comment etc... qu'on récupère avec les fonction load de Drupal.

Devel fournit un "print_r" amélioré :

tu fais : drupal_set_message(dprint_r($user,1));
Et tu vas avoir toute la structure de ta variable hiérarchisée, rôles compris :)

merci.

J'ai essayé :

//En commentaire c'est les différentes méthodes que j'ai essayé en modifiant la requete
//$user = user_load(array('name' => $account_name));
//$uid=$node->uid;
//$nids=menu_get_object('node');
//$uid=$nids->uid;
//$user = user_load($account);

$account = user_load(array('uid' => $node->uid));

$query_user = 'SELECT role.name as type
FROM role, users_roles, users
WHERE role.rid = users_roles.rid
AND users.uid=users_roles.uid
AND users.uid = %d';

$result = db_query(db_rewrite_sql($query_user),$account);
$nb=0;
while ($row = db_fetch_array($result))
{
if($nb==0)
{
print $row['type'];
}
$nb++;
}

J'ai l'impression d'avoir tous testé mais de passer à côté de quelque chose.
Quoi que je teste je récupère le rôle de celui qui visite la page.

Apparemment, le uid d'un node égal à l'uid du visiteur et non de l'auteur du node...

N'y a-t-il pas une solution plus simple?

Je pige pas trop ton code. Normalement si, le node_load récupère bien l'uid de l'auteur. C'est d'ailleurs utilisé à mon avis dans l'affichage par défaut des nodes, par Drupal.

Donc logiquement, le code se résume à sa :

$node = node_load($nid);
$user = user_load($node -> uid);

Puis il faut fouiller dans user...

Quoi que je teste ça me récupere le uid de celui qui visionne la page et pas l'uid de l'auteur.

Pour info, j'ai déjà afficher le $user avec un var_export donc je vois la structure du node...

La requete a pour but de recuperer le uid directement dans la BDD, parce que je me suis dis que le uid qu'on récupere sur le site doit être temporaire et donc l'uid de la BDD correspond à l'auteur du node.

J'ai l'impression de tourner en rond...