19declare(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]) {
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)) {
80 'max_time' => (
new DateTimeImmutable(
'@' . time()))->format(
'Y-m-d H:i:s')
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');
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');
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];
Class for global mail information (e.g.
static getMailObjectRefId()
static array $global_mail_services_cache
static getNewMailsData(ilObjUser $user, int $leftInterval=0)
const CACHE_TYPE_NEW_MAILS