19declare(strict_types=1);
39 if (isset(self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID]) &&
40 self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID] !==
null) {
49 SELECT object_reference.ref_id FROM object_reference, tree, object_data
50 WHERE tree.parent = %s
51 AND object_data.type = %s
52 AND object_reference.ref_id = tree.child
53 AND object_reference.obj_id = object_data.obj_id',
58 while ($row =
$DIC->database()->fetchAssoc(
$res)) {
78 'max_time' => (
new DateTimeImmutable(
'@' . time()))->format(
'Y-m-d H:i:s')
82 $cache_key = implode(
'_', [self::CACHE_TYPE_NEW_MAILS, $user->
getId(), $left_interval]);
85 isset(self::$global_mail_services_cache[$cache_key]) &&
86 self::$global_mail_services_cache[$cache_key] !==
null) {
87 return self::$global_mail_services_cache[$cache_key];
91 SELECT COUNT(mail_id) cnt, MAX(send_time) send_time
93 WHERE folder_id = %s AND user_id = %s AND m_status = %s
95 if ($left_interval > 0) {
96 $query .=
' AND send_time > '
97 .
$DIC->database()->quote(date(
'Y-m-d H:i:s', $left_interval),
'timestamp');
102 [
'integer',
'integer',
'text'],
103 [0, $user->
getId(),
'unread']
105 $row =
$DIC->database()->fetchAssoc(
$res);
108 SELECT COUNT(mail_id) cnt, MAX(m.send_time) send_time
110 INNER JOIN mail_obj_data mo
111 ON mo.user_id = m.user_id
112 AND mo.obj_id = m.folder_id
115 AND m.m_status = %s';
116 if ($left_interval > 0) {
117 $query .=
' AND m.send_time > '
118 .
$DIC->database()->quote(date(
'Y-m-d H:i:s', $left_interval),
'timestamp');
123 [
'text',
'integer',
'text'],
124 [
'inbox', $user->
getId(),
'unread']
126 $row2 =
$DIC->database()->fetchAssoc(
$res);
128 self::$global_mail_services_cache[$cache_key] = [
129 'count' => ((
int) $row[
'cnt'] + (
int) $row2[
'cnt']),
131 (
string) $row[
'send_time'],
132 (string) $row2[
'send_time']
136 return self::$global_mail_services_cache[$cache_key];
Class for global mail information (e.g.
static getMailObjectRefId()
static getNewMailsData(ilObjUser $user, int $left_interval=0)
final const int CACHE_TYPE_REF_ID
static array $global_mail_services_cache
final const int CACHE_TYPE_NEW_MAILS