ILIAS  release_8 Revision v8.25-1-g13de6a5eca6
class.ilMailUserCache.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
26{
28 protected static array $user_instances = [];
30 protected static array $requested_usr_ids = [];
32 protected static array $requested_usr_ids_key_map = [];
33
37 public static function preloadUserObjects(array $usr_ids): void
38 {
39 global $DIC;
40
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);
44
45 if ($usr_ids_to_request) {
46 $in = $DIC->database()->in('ud.usr_id', $usr_ids_to_request, false, 'integer');
47 $query = "
48 SELECT ud.usr_id, login, firstname, lastname, title, gender,
49 pprof.value public_profile,pup.value public_upload, pupgen.value public_gender
50 FROM usr_data ud
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
54 WHERE $in
55 ";
56
57 $res = $DIC->database()->queryF(
58 $query,
59 ['text', 'text', 'text'],
60 ['public_profile', 'public_gender', 'public_upload']
61 );
62
63 while ($row = $DIC->database()->fetchAssoc($res)) {
64 $user = new ilObjUser();
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']);
74
75 self::$user_instances[(int) $row['usr_id']] = $user;
76 }
77 }
78 }
79
80 public static function getUserObjectById(int $usr_id): ?ilObjUser
81 {
82 if ($usr_id < 1) {
83 return null;
84 }
85
86 if (!array_key_exists($usr_id, self::$requested_usr_ids_key_map)) {
87 self::preloadUserObjects([$usr_id]);
88 }
89
90 return self::$user_instances[$usr_id] ?? null;
91 }
92}
static array $requested_usr_ids_key_map
static getUserObjectById(int $usr_id)
static array $user_instances
static preloadUserObjects(array $usr_ids)
static array $requested_usr_ids
User class.
global $DIC
Definition: feed.php:28
$res
Definition: ltiservices.php:69
$query