19 declare(strict_types=1);
39 if (isset(self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID]) &&
40 null !== self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID]) {
41 return (
int) self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID];
47 $res = $DIC->database()->queryF(
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)) {
59 self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID] = (
int) $row[
'ref_id'];
62 self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID] =
MAIL_SETTINGS_ID;
65 return (
int) self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID];
84 $cacheKey = implode(
'_', [self::CACHE_TYPE_NEW_MAILS, $user->
getId(), $leftInterval]);
87 isset(self::$global_mail_services_cache[$cacheKey]) &&
88 null !== self::$global_mail_services_cache[$cacheKey]) {
89 return self::$global_mail_services_cache[$cacheKey];
93 SELECT COUNT(mail_id) cnt, MAX(send_time) send_time 95 WHERE folder_id = %s AND user_id = %s AND m_status = %s 97 if ($leftInterval > 0) {
98 $query .=
' AND send_time > ' 99 . $DIC->database()->quote(date(
'Y-m-d H:i:s', $leftInterval),
'timestamp');
102 $res = $DIC->database()->queryF(
104 [
'integer',
'integer',
'text'],
105 [0, $user->
getId(),
'unread']
107 $row = $DIC->database()->fetchAssoc(
$res);
110 SELECT COUNT(mail_id) cnt, MAX(m.send_time) send_time 112 INNER JOIN mail_obj_data mo 113 ON mo.user_id = m.user_id 114 AND mo.obj_id = m.folder_id 117 AND m.m_status = %s';
118 if ($leftInterval > 0) {
119 $query .=
' AND m.send_time > ' 120 . $DIC->database()->quote(date(
'Y-m-d H:i:s', $leftInterval),
'timestamp');
123 $res = $DIC->database()->queryF(
125 [
'text',
'integer',
'text'],
126 [
'inbox', $user->
getId(),
'unread']
128 $row2 = $DIC->database()->fetchAssoc(
$res);
130 self::$global_mail_services_cache[$cacheKey] = [
131 'count' => ((
int) $row[
'cnt'] + (
int) $row2[
'cnt']),
133 (
string) $row[
'send_time'],
134 (string) $row2[
'send_time']
138 return self::$global_mail_services_cache[$cacheKey];
static array $global_mail_services_cache
static getNewMailsData(ilObjUser $user, int $leftInterval=0)
const CACHE_TYPE_NEW_MAILS
static getMailObjectRefId()