Ragazzi ho un problema,devo stampare il rid dell'utente loggato,per poi reindirizzare l'utente a frame ben precisi di un swf.
ora,io ho questo codice:
<?php
function get_user_highest_role($uid) {
$query = "SELECT max( {role}.rid ) "
."FROM {role}, {users_roles} "
."WHERE {users_roles}.rid = {role}.rid "
."AND {users_roles}.uid = %d";
return db_result(db_query($query, $uid));
}
?>
e per recuperare il valore:
$uRid= get_user_highest_role(1);
il problema,è che se stampo il valore tramite echo,tutto funziona,ma sempre ed in ogni caso,mi restituisce il rid dell'admin.. dove sta l'errore ?..nn capisco...
uid = 1 corrisponde sempre e comunque all'admin.
Comunque, non ti conviene, invece di farti una query tua, usare l'oggetto $user e in particolare $user->roles?
uhm...
in effetti cercando un po su d.org e dovendo passare anche altre variabili,sono arrivato a crearmi una cosa di questo tipo,proprio come dicevi tu tramite il global user,la riporto cosi magari è utile a qualcuno:
<?php
global $user;
if ($user->name) {$nick= $user->name; $uid= $user->uid;} // se l'utente è loggato trovo il nickname
else{ $nick='guest'; $sty= '1'; } // se non è loggato imposto il nick a guest e rid a 1
if (in_array('authenticated user', $user->roles)) { $sty="2"; } // assegno rid 2 ai registrati normali
if (in_array('mioruolo3', $user->roles)) { $sty="3"; } // assegno rid 3
if (in_array('mioruolo4', $user->roles)) { $sty="4"; } // assegno rid 4
if (in_array('mioruolo5', $user->roles)) { $sty="5";} // assegno rid 5
if (in_array('ruolo amministratori', $user->roles)) { $sty="6";} // amministratori
?>
Magari c'è un sistema piu semplice,ho provato tramite user->roles e mi restituiva un bell'Array,in questo modo cmq,tutto funziona perfettamente...
Ma cosi a titolo informativo,nel codice sopra dove sarebbe l'errore?..mica l'ho ancora capito sai... O_o
ottima cosa postare il codice, almeno chiunque avesse la stessa necessità può visionarlo "in lingua italiana". Il codice di sopra non l'ho testato, ma penso che Pinolo ti volesse solo consigliare di non fare una query al database in quel modo per un'informazione che è già presente tra le variabili di Drupal.... diciamo che ti complichi la vita. Ma poi in realtà ognuno fà quel che gli pare...
Altra considerazione che mi vein da fare a riguardo la critica di Pinolo è che se una certa informazione è già presente tra le variabili vuol dire che è già stata fatta una Query di quel tipo al database, sarebbe dispoendioso in termini di risorse rifarla ...
Ma non è un errore, è solo una questione di ottimizazione...
Slice2Theme Servizio per la conversione di Design in markup HTML e/o temi.
WeBrain Solution | Pillsofbits Of Bits
Se chiami la funzione con il parametro 1 otterrai sempre i dati relativi all'admin. Dovevi passargli $user->uid
Beh, gli array si possono manipolare e riordinare. Per ottenere un sistema funzionante anche quando cambierai i ruoli, puoi cercare di ordinare l'array in base a rid.
Il post è vecchiotto, ma rispondo lo stesso per tenerne traccia:
io ho usato questo:
print 'Ruolo: '.implode(', ', $user->roles).'';