56        if (isset(self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID]) &&
 
   57            null !== self::$global_mail_services_cache[self::CACHE_TYPE_REF_ID]) {
 
   65                                SELECT object_reference.ref_id FROM object_reference, tree, object_data 
   66                                WHERE tree.parent = %s 
   67                                AND object_data.type = %s 
   68                                AND object_reference.ref_id = tree.child 
   69                                AND object_reference.obj_id = object_data.obj_id',
 
   70                array(
'integer', 
'text'),
 
   74            while ($row = 
$DIC->database()->fetchAssoc(
$res)) {
 
   95    public static function getNewMailsData(
int $usr_id, 
int $leftInterval = 0) : array
 
  103        $cacheKey = implode(
'_', [self::CACHE_TYPE_NEW_MAILS, $usr_id, $leftInterval]);
 
  106            isset(self::$global_mail_services_cache[$cacheKey]) &&
 
  107            null !== self::$global_mail_services_cache[$cacheKey]) {
 
  108            return self::$global_mail_services_cache[$cacheKey];
 
  112            SELECT COUNT(mail_id) cnt, MAX(send_time) send_time 
  114            WHERE folder_id = %s AND user_id = %s AND m_status = %s 
  116        if ($leftInterval > 0) {
 
  117            $query .= 
' AND send_time > ' . 
$DIC->database()->quote(date(
'Y-m-d H:i:s', $leftInterval), 
'timestamp');
 
  122            [
'integer', 
'integer', 
'text'],
 
  123            [0, $usr_id, 
'unread']
 
  125        $row = 
$DIC->database()->fetchAssoc(
$res);
 
  128            SELECT COUNT(mail_id) cnt, MAX(m.send_time) send_time 
  130            INNER JOIN mail_obj_data mo 
  131                ON mo.user_id = m.user_id 
  132                AND mo.obj_id = m.folder_id 
  135                        AND m.m_status = %s';
 
  136        if ($leftInterval > 0) {
 
  137            $query .= 
' AND m.send_time > ' . 
$DIC->database()->quote(date(
'Y-m-d H:i:s', $leftInterval), 
'timestamp');
 
  142            [
'text', 
'integer', 
'text'],
 
  143            [
'inbox', $usr_id, 
'unread']
 
  145        $row2 = 
$DIC->database()->fetchAssoc(
$res);
 
  147        self::$global_mail_services_cache[$cacheKey] = [
 
  148            'count' => (int) ($row[
'cnt'] + $row2[
'cnt']),
 
  150                (
string) $row[
'send_time'],
 
  151                (
string) $row2[
'send_time']
 
  155        return self::$global_mail_services_cache[$cacheKey];
 
An exception for terminatinating execution or to throw for unit testing.
Class for global mail information (e.g.
static getMailObjectRefId()
Determines the reference id of the mail object and stores this information in a local cache variable.
const CACHE_TYPE_NEW_MAILS
static $global_mail_services_cache
static getNewMailsData(int $usr_id, int $leftInterval=0)
Determines the number of new mails for the passed user id and stores this information in a local cach...
foreach($_POST as $key=> $value) $res