MyBB.support, le portail francophone de MyBB

Version complète : Problème de notification de message privé et de variables de groupes
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour,

Il y a peu, moi et un amis avons décidé de lancer un forum tournant sous MyBB 1.6.3,

Nous avons décidé de personnaliser le menu du Header. Après avoir conçu graphiquement l'image du nouveau menu, j'ai codé un bout de php qui normalement, est censé reconnaître si le visiteur est un admin, un modérateur, un membre ou un invité dans le template Header. Dans le but d'afficher une image différente, un invité n'aura pas le bouton "Admin" tout comme un membre n'aura pas le bouton "Modération" par exemple.

Je me suis donc inspiré du code du forum d'un ami sur lequel cela fonctionne très bien, le soucis étant que le forum de cet ami est sous MyBB 1.4.7
Il utilise pour reconnaître le niveau du compte les variables $admin, $modo et $co.
J'aimerais savoir si ces variables existent encore dans la version 1.6, et si elles ont le même nom, car sur mon forum, les variables ne sont soit pas reconnues, soit elles sont vides. N'ayant pas de message d'erreurs, je suppose qu'elles sont vides.

Voici le code en question :
Code PHP :
<div id="menulcda"><img src="images/menulcda<?php if(isset($admin)) echo "admin"; else if(isset($modo)) echo "modo"; else echo $co; ?>.png" NAME="Commandes" USEMAP="#<?php if(isset($admin)) echo "admin"; else if(isset($modo)) echo "modo"; else echo $co; ?>"></div

Les images portent le nom de menulcdaadmin ( pour les admins ), menulcdamodo ( pour les modos ), menulcdaco ( pour les membres ) et menulcdanonco ( pour les invités ). Le tout est en png.

Et donc, lorsque je visite l'index du forum, l'image n'est pas affichée. Chrome m'affiche cependant un petit carré m'indiquant l'emplacement ou se trouverait logiquement l'image, lorsque je veux enregistrer cette image, je vois qu'elle se nomme menulcda.png C'est ainsi que j'en conclus que les variables sont vides.

J'ai bien sûr installé le plugin permettant de placer du code php dans les templates.

Merci d'avance si vous pouvez m'apporter un élément de réponse,
Cordialement,
Pandiablo.


Edit : Mise à jour du titre pour les messages ci-dessous concernant mon second problème.
À ma connaissance il n'existe pas de variable "$admin, $modo et $co" dans une installation normale de MyBB.

Par exemple il est possible de savoir si un membre est admin, si la variable $mybb->user['cancp'] est "true".

D'autres variables disponibles sont :
$usergroup['canmodcp'] (modérateur)
$usergroup['cancp'] (admin)
$usergroup['issupermod'] (super modérateur)

Bon codage... Wink
Je vous aim...

Merci beaucoup, j'vais de suite essayer ça et avec un peu de malchance, j'reviens vous embêter après Big Grin !

Edit : Je viens de tilter, il n'y a donc aucun moyen de savoir si le visiteur est un membre enregistré ou un invité ?

Edit 2 : C'est bizarre mais, même avec les nouvelles variables, l'image ne s'affiche toujours pas ( pour les admins en tout cas ). Mon code me semble pourtant être juste...
Un invité n'aura pas de UID, alors il peut être détecté avec
Code PHP :
if($mybb->user['uid'] != 0){
 
// Membre enregistré
}else{
 
// Invité


Pour les autres il est possible d'utiliser aussi ceci :
Code PHP :
if($mybb->usergroup['canmodcp'] == 1// Modérateur

if($mybb->usergroup['cancp'] == 1// Admin 
Problème corrigé merci de votre aide !

C'est vraiment trop classe, oh que j'aime mon forum.

Longue vie à MyBB ! \o/
Le double-post c'est le mal, mais j'ai un second problème et je me voyais encore moins créé deux sujets de demande d'aide à la suite.

J'ai donc installé ma barre de navigation : Barre de navigation "normale"

Et j'aimerais que lorsque que l'on a un nouveau message privé, non lu donc, il y ait cette image qui apparaissent : Barre de navigation avec nouveau mp
Savez vous ce que je dois modifier ? Et surtout où dois-je le changer ?

Encore merci d'avance,
Cordialement,
Pandiablo
J'ai en partit réglé mon soucis, cependant il me reste une dernière zone d'ombre.

Ainsi, même si je vais passer pour le vilain de service, je relance mon sujet à la recherche d'une personne sachant quelle variable contient l'information "Tu as un (ou plusieurs) message(s) privé(s) non lu(s)"

J'ai essayé d'utiliser le champs "unreadpms" de la base de donnée mybb_users qui contient le nombre de message non lus, ca parait pourtant simple mais je ne comprend pas pourquoi la barre de navigation ne réagit pas comme je le souhaite, voici mon code :
Code PHP :
<?php
$mp 
mysql_query('SELECT unreadpms FROM mybb_users WHERE username="$mybb->user[\'username\']"');
?>
<div id="menulcda">
<IMG SRC="images/menulcda
<?php

$text 
'';

if(isset(
$admin))
    {
    
$text 'admin';
    }
else if(isset(
$modo))
    {
    
$text 'modo';
    }
else if(
$co == 'co')
    {
    
$text 'co';
    }
else
    {
    
$text 'nonco';
    }
    
if(
$mp >= && $text != 'nonco')
    {
    
$text .= 'mp';
    }
    
echo 
$text;
    
?>.png" NAME="Menu" ALT="Menu" USEMAP="#<?php if(isset($admin)) echo "admin"; else if(isset($modo)) echo "modo"; else echo $co?>">
</div> 

Peut être il y a t-il une erreur qui m'aurait échappé ?

Edit : Petite précision, les variables $admins $modo et $co ont été définis par mes soins dans les templates du header concerné, ainsi si le compte connecté est admin, la variable $admin est créée, si il est modo c'est $modo et ensuite $co contient "co" ou "nonco" en fonction de s'il s'agit d'un membre (co) ou d'un invité (nonco)

Merci à ceux qui sauront éclairer ma lanterne,
Pandiablo.

Edit2 : Je viens de voir qu'il y avait un autre champ dans la même bdd qui je pense concerne aussi les messages privés : pmnotice, il m'a semble, d'après quelques tests, qu'il était à 1 lorsqu'il n'y avait rien de nouveau et il augmentait s'il y avait des nouveaux messages non lus, mais comme avec le premier champ, la barre de navigation ne réagit pas comme je le souhaite, ne réagit même pas du tout, j'ai beau changé les champs, son comportement reste le même, et je n'arrive pas à expliquer ce phénomène.
Problème résolu !

J'ai finalement réussi à trouver que la variable qui contenait l'information "nouveau message privé était $mybb->user['pms_unread'], elle est égale à 1 lorsque vous avez des messages non lus et à 0 quand il n'y en a pas.

Si je viens détailler ma trouvaille alors que je suis l'auteur de cette demande d'aide, c'est uniquement pour ceux qui se poseront la question après moi car il est vrai que c'est indiqué nul part.

Pandiablo.
 Utilitaire de traduction fourni par Regentronique