19 declare(strict_types=1);
40 if (isset(self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID]) &&
41 null !== self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID]) {
42 return (
int) self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID];
48 $res = $DIC->database()->queryF(
50 SELECT object_reference.ref_id FROM object_reference, tree, object_data 51 WHERE tree.parent = %s 52 AND object_data.type = %s 53 AND object_reference.ref_id = tree.child 54 AND object_reference.obj_id = object_data.obj_id',
59 while ($row = $DIC->database()->fetchAssoc(
$res)) {
60 self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID] = (
int) $row[
'ref_id'];
63 self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID] =
MAIL_SETTINGS_ID;
66 return (
int) self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID];
83 $cacheKey = implode(
'_', [self::CACHE_TYPE_NEW_MAILS, $user->
getId(), $leftInterval]);
86 isset(self::$global_mail_services_cache[$cacheKey]) &&
87 null !== self::$global_mail_services_cache[$cacheKey]) {
88 return self::$global_mail_services_cache[$cacheKey];
92 SELECT COUNT(mail_id) cnt, MAX(send_time) send_time 94 WHERE folder_id = %s AND user_id = %s AND m_status = %s 96 if ($leftInterval > 0) {
97 $query .=
' AND send_time > ' 98 . $DIC->database()->quote(date(
'Y-m-d H:i:s', $leftInterval),
'timestamp');
101 $res = $DIC->database()->queryF(
103 [
'integer',
'integer',
'text'],
104 [0, $user->
getId(),
'unread']
106 $row = $DIC->database()->fetchAssoc(
$res);
109 SELECT COUNT(mail_id) cnt, MAX(m.send_time) send_time 111 INNER JOIN mail_obj_data mo 112 ON mo.user_id = m.user_id 113 AND mo.obj_id = m.folder_id 116 AND m.m_status = %s';
117 if ($leftInterval > 0) {
118 $query .=
' AND m.send_time > ' 119 . $DIC->database()->quote(date(
'Y-m-d H:i:s', $leftInterval),
'timestamp');
122 $res = $DIC->database()->queryF(
124 [
'text',
'integer',
'text'],
125 [
'inbox', $user->
getId(),
'unread']
127 $row2 = $DIC->database()->fetchAssoc(
$res);
129 self::$global_mail_services_cache[$cacheKey] = [
130 'count' => ((
int) $row[
'cnt'] + (
int) $row2[
'cnt']),
132 (
string) $row[
'send_time'],
133 (string) $row2[
'send_time']
137 return self::$global_mail_services_cache[$cacheKey];
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static array $global_mail_services_cache
static getNewMailsData(ilObjUser $user, int $leftInterval=0)
final const CACHE_TYPE_NEW_MAILS
final const CACHE_TYPE_REF_ID
static getMailObjectRefId()