ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilMailUserCache.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
10 {
15  protected static $user_instances = array();
16 
21  protected static $requested_usr_ids = array();
22 
27  protected static $requested_usr_ids_key_map = array();
28 
33  public static function preloadUserObjects(array $usr_ids)
34  {
35  global $DIC;
36 
37  $usr_ids_to_request = array_diff($usr_ids, self::$requested_usr_ids);
38  self::$requested_usr_ids = array_merge(self::$requested_usr_ids, $usr_ids_to_request);
39  self::$requested_usr_ids_key_map = array_flip(self::$requested_usr_ids);
40 
41  if ($usr_ids_to_request) {
42  $in = $DIC->database()->in('ud.usr_id', $usr_ids_to_request, false, 'integer');
43  $query = "
44  SELECT ud.usr_id, login, firstname, lastname, title, gender, pprof.value public_profile,pup.value public_upload, pupgen.value public_gender
45  FROM usr_data ud
46  LEFT JOIN usr_pref pprof ON pprof.usr_id = ud.usr_id AND pprof.keyword = %s
47  LEFT JOIN usr_pref pupgen ON pupgen.usr_id = ud.usr_id AND pupgen.keyword = %s
48  LEFT JOIN usr_pref pup ON pup.usr_id = ud.usr_id AND pup.keyword = %s
49  WHERE $in
50  ";
51 
52  $res = $DIC->database()->queryF(
53  $query,
54  array('text', 'text', 'text'),
55  array('public_profile', 'public_gender', 'public_upload')
56  );
57 
58  while ($row = $DIC->database()->fetchAssoc($res)) {
59  $user = new ilObjUser;
60  $user->setId($row['usr_id']);
61  $user->setLogin($row['login']);
62  $user->setGender($row['gender']);
63  $user->setTitle($row['title']);
64  $user->setFirstname($row['firstname']);
65  $user->setLastname($row['lastname']);
66  $user->setPref('public_profile', $row['public_profile']);
67  $user->setPref('public_upload', $row['public_upload']);
68  $user->setPref('public_gender', $row['public_gender']);
69 
70  self::$user_instances[$row['usr_id']] = $user;
71  }
72  }
73  }
74 
80  public static function getUserObjectById($usr_id)
81  {
82  if (!$usr_id) {
83  return null;
84  }
85 
86  if (!array_key_exists($usr_id, self::$requested_usr_ids_key_map)) {
87  self::preloadUserObjects(array($usr_id));
88  }
89 
90  return isset(self::$user_instances[$usr_id]) ? self::$user_instances[$usr_id] : null;
91  }
92 }
global $DIC
Definition: saml.php:7
foreach($_POST as $key=> $value) $res
static preloadUserObjects(array $usr_ids)
static getUserObjectById($usr_id)
$query
$user
Definition: migrateto20.php:57
$row
if(php_sapi_name() !='cli') $in
Definition: Utf8Test.php:37