diff --git a/bureau/class/m_admin.php b/bureau/class/m_admin.php index 1abf638e..715afb21 100644 --- a/bureau/class/m_admin.php +++ b/bureau/class/m_admin.php @@ -75,30 +75,32 @@ class m_admin { * table membres and local of the corresponding account. * Returns FALSE if an error occurs. */ - function get($uid) { - global $err,$db; + function get($uid,$recheck=false) { + global $err,$db,$lst_users_properties; // $err->log("admin","get",$uid); if (!$this->enabled) { $err->raise("admin",_("-- Only administrators can access this page! --")); return false; } - $db->query("SELECT m.*, parent.login as parentlogin FROM membres as m LEFT JOIN membres as parent ON (parent.uid = m.creator) WHERE m.uid='$uid';"); - if ($db->num_rows()) { - $db->next_record(); - $c=$db->Record; - } else { + + if (!isset($lst_users_properties) || empty($lst_users_properties) || !is_array($lst_users_properties) || $recheck ) { + $lst_users_properties=array(); + $db->query("SELECT m.*, l.*, parent.login as parentlogin FROM membres as m LEFT JOIN membres as parent ON (parent.uid = m.creator) LEFT JOIN local as l ON (m.uid = l.uid) ;"); + while ($db->next_record()) { + $lst_users_properties[$db->f('uid')]=$db->Record; + } + } + + if ( !isset($lst_users_properties[$uid]) ) { + if ( !$recheck ) { + // don't exist, but is not a forced check. Do a forced check + return $this->get($uid, true); + } $err->raise("admin",_("Account not found")); return false; } - $db->query("SELECT * FROM local WHERE uid='$uid';"); - if ($db->num_rows()) { - $db->next_record(); - reset($db->Record); - while (list($key,$val)=each($db->Record)) { - $c[$key]=$val; - } - } - return $c; + + return $lst_users_properties[$uid]; }