/** * Count the messages drafted by the given user * * @param CMediusers $user The user * * @return int The number of drafted messages */ public static function countDraftedFor($user) { $usermessage = new CUserMessage(); $where = array('creator_id' => "= '{$user->_id}'"); /** @var CUserMessage[] */ $listDrafted = $usermessage->loadList($where); foreach ($listDrafted as $key => $_mail) { $dests = $_mail->loadRefDests(); foreach ($dests as $_dest) { if ($_dest->datetime_sent) { unset($listDrafted[$key]); continue 2; } } } return count($listDrafted); }
$where = array(); $where["from_user_id"] = " = '{$user->_id}'"; $where["datetime_sent"] = " IS NOT NULL"; $total_found = CUserMessageDest::countSentFor($user); } if ($mode == "draft") { $order = "usermessage.usermessage_id DESC"; $where = array(); $where["creator_id"] = " = '{$user->_id}'"; $where["datetime_sent"] = " IS NULL"; $total_found = CUserMessageDest::countDraftedFor($user); } $total_found = $total_found ? $total_found : 0; $group = "usermessage.usermessage_id"; /** @var CUserMessage[] $usermessages */ $usermessages = $usermessage->loadList($where, $order, "{$page}, {$step}", $group, $lj); foreach ($usermessages as $_usermessage) { $_usermessage->loadRefDestUser(); /** @var CUserMessageDest[] $destinataires */ $destinataires = $_usermessage->loadRefDests(); /* We set the _ref_dest_user when the mode is draft for being able to delete a message */ if ($mode == 'draft') { $_usermessage->_ref_dest_user = reset($_usermessage->_ref_destinataires); } foreach ($destinataires as $key => $_dest) { if (in_array($mode, array("inbox", "archive"))) { $_usermessage->_mode = "in"; if ($_dest->to_user_id != $user->_id) { unset($destinataires[$key]); continue; }
$origin = $usermessage->loadOriginMessage(); if ($origin->_id) { if (!$usermessage->subject) { $usermessage->subject = "Re: " . $origin->subject; } $usermessage->to = $origin->from; } } if ($usermessage->to) { $usermessage->loadRefUsersTo(); } // Historique des messages avec le destinataire $where = array(); $where[] = "(usermessage.from = '{$usermessage->from}' AND usermessage.to = '{$usermessage->to}')" . "OR (usermessage.from = '{$usermessage->to}' AND usermessage.to = '{$usermessage->from}')"; $where["date_sent"] = " IS NOT NULL"; $historique = $usermessage->loadList($where, "date_sent DESC", "20", "date_sent, subject"); CMbObject::massLoadFwdRef($historique, "from"); CMbObject::massLoadFwdRef($historique, "to"); /** @var $historique CUserMessage[] */ foreach ($historique as $_mail) { $_mail->loadRefUserFrom(); $_mail->loadRefUsersTo(); } // Initialisation de CKEditor $templateManager = new CTemplateManager(); $templateManager->editor = "ckeditor"; $templateManager->simplifyMode = true; if ($usermessage->date_sent) { $templateManager->printMode = true; } $templateManager->initHTMLArea();