19 declare(strict_types=1);
41 $usr_ids_to_request = array_diff($usr_ids, self::$requested_usr_ids);
42 self::$requested_usr_ids = array_merge(self::$requested_usr_ids, $usr_ids_to_request);
43 self::$requested_usr_ids_key_map = array_flip(self::$requested_usr_ids);
45 if ($usr_ids_to_request) {
46 $in = $DIC->database()->in(
'ud.usr_id', $usr_ids_to_request,
false,
'integer');
48 SELECT ud.usr_id, login, firstname, lastname, title, gender, 49 pprof.value public_profile,pup.value public_upload, pupgen.value public_gender 51 LEFT JOIN usr_pref pprof ON pprof.usr_id = ud.usr_id AND pprof.keyword = %s 52 LEFT JOIN usr_pref pupgen ON pupgen.usr_id = ud.usr_id AND pupgen.keyword = %s 53 LEFT JOIN usr_pref pup ON pup.usr_id = ud.usr_id AND pup.keyword = %s 57 $res = $DIC->database()->queryF(
59 [
'text',
'text',
'text'],
60 [
'public_profile',
'public_gender',
'public_upload']
63 while ($row = $DIC->database()->fetchAssoc(
$res)) {
65 $user->setId((
int) $row[
'usr_id']);
66 $user->setLogin((
string) $row[
'login']);
67 $user->setGender((
string) $row[
'gender']);
68 $user->setTitle((
string) $row[
'title']);
69 $user->setFirstname((
string) $row[
'firstname']);
70 $user->setLastname((
string) $row[
'lastname']);
71 $user->setPref(
'public_profile', $row[
'public_profile']);
72 $user->setPref(
'public_upload', $row[
'public_upload']);
73 $user->setPref(
'public_gender', $row[
'public_gender']);
75 self::$user_instances[(
int) $row[
'usr_id']] = $user;
86 if (!array_key_exists($usr_id, self::$requested_usr_ids_key_map)) {
87 self::preloadUserObjects([$usr_id]);
90 return self::$user_instances[$usr_id] ?? null;
static array $user_instances
static getUserObjectById(int $usr_id)
static array $requested_usr_ids
static preloadUserObjects(array $usr_ids)
static array $requested_usr_ids_key_map