Could anyone shed any light as to why I can get this working.
I want to query an array to see if the USER->id
that is currently logged in is assigned a specific role:
$contextroles = get_records_sql("SELECT userid FROM {$CFG->prefix}role_assignments WHERE contextid = 23 AND roleid = 3");
function object2array($object) {
if (is_object($object)) {
foreach ($object as $key => $value) {
$array[$key] = $value;
}
}
else {
$array = $object;
}
return $array;
}
$alloweduser = object2array($contextroles);
if (in_array($USER->id, $alloweduser)) {
echo'Your in<br />';
echo $USER->id.'<br />';
print_r($alloweduser);
}
else{
echo'<br />You do not have permission to acces this database.<br />';
echo $USER->id.'<br />';
print_r($alloweduser);
exit;
}
Im currently getting this output:
You do not have permission to acces this database.
5410
Array ( [7] => stdClass Object ( [userid] => 7 ) [9] => stdClass Object ( [userid] => 9 ) [27] => stdClass Object ( [userid] => 27 ) [98] => stdClass Object ( [userid] => 98 ) [203] => stdClass Object ( [userid] => 203 ) [252] => stdClass Object ( [userid] => 252 ) [5410] => stdClass Object ( [userid] => 5410 ) )
As you can see 5410 is in the array so should not get accessed denied. Thanks in advance for any help.
$USER, $CFG
come from? And what's wrong with object which you MUST convert it to array? – Gradualobject2array()
function is redundant. Casting an object to(array)
has the same effect. – Yagerget_records_sql()
does. Maybe you can just modify it so that it returns an array? What is$USER->id
? And additionally I'm not sure if you can do aforeach
on an object. Also, "5410" is not in the array but rather anotherstdObject
which holds the userid "5410". That's a difference. – Singley