ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
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}
if(php_sapi_name() !='cli') $in
Definition: Utf8Test.php:37
An exception for terminatinating execution or to throw for unit testing.
static getUserObjectById($usr_id)
static preloadUserObjects(array $usr_ids)
setId($a_id)
set object id @access public
$query
foreach($_POST as $key=> $value) $res
$DIC
Definition: xapitoken.php:46