Exemplo n.º 1
0
 public static function MailMessageAgent()
 {
     global $DB;
     $defSiteID = CSite::GetDefSite();
     $arMark = array();
     $arUnsendMessage = CIMMessage::GetUnsendMessage();
     $arToUser = array();
     $arFromUser = array();
     $arDialog = array();
     foreach ($arUnsendMessage as $id => $arMessage) {
         if (!isset($arMark[$arMessage["TO_USER_ID"]][$arMessage["CHAT_ID"]]) || $arMark[$arMessage["TO_USER_ID"]][$arMessage["CHAT_ID"]] < $arMessage["ID"]) {
             $arMark[$arMessage["TO_USER_ID"]][$arMessage["CHAT_ID"]] = $arMessage["ID"];
         }
         if (strlen($arMessage["MESSAGE_OUT"]) <= 0) {
             $arMessage["MESSAGE_OUT"] = $arMessage["MESSAGE"];
         }
         if (!isset($arToUser[$arMessage["TO_USER_ID"]])) {
             $siteID = $arMessage["TO_USER_LID"];
             if ($siteID == false || StrLen($siteID) <= 0) {
                 $siteID = $defSiteID;
                 if ($siteID == false || StrLen($siteID) <= 0) {
                     continue;
                 }
             }
             $arMessage["USER"] = htmlspecialcharsback(CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arMessage["TO_USER_NAME"], "LAST_NAME" => $arMessage["TO_USER_LAST_NAME"], "SECOND_NAME" => $arMessage["TO_USER_SECOND_NAME"], "LOGIN" => $arMessage["TO_USER_LOGIN"]), true));
             $arToUser[$arMessage["TO_USER_ID"]] = array("USER" => $arMessage["USER"], "USER_ID" => $arMessage["TO_USER_ID"], "USER_LOGIN" => $arMessage["TO_USER_LOGIN"], "USER_NAME" => $arMessage["TO_USER_NAME"], "USER_LAST_NAME" => $arMessage["TO_USER_LAST_NAME"], "USER_SECOND_NAME" => $arMessage["TO_USER_SECOND_NAME"], "TO_USER_LID" => $siteID, "EMAIL_TO" => $arMessage["TO_USER_EMAIL"]);
         }
         if (!isset($arFromUser[$arMessage["FROM_USER_ID"]])) {
             $arMessage["FROM_USER"] = htmlspecialcharsback(CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arMessage["FROM_USER_NAME"], "LAST_NAME" => $arMessage["FROM_USER_LAST_NAME"], "SECOND_NAME" => $arMessage["FROM_USER_SECOND_NAME"], "LOGIN" => $arMessage["FROM_USER_LOGIN"]), true));
             $arFromUser[$arMessage["FROM_USER_ID"]] = array("FROM_USER" => $arMessage["FROM_USER"], "FROM_USER_ID" => $arMessage["FROM_USER_ID"], "FROM_USER_LOGIN" => $arMessage["FROM_USER_LOGIN"], "FROM_USER_NAME" => $arMessage["FROM_USER_NAME"], "FROM_USER_LAST_NAME" => $arMessage["FROM_USER_LAST_NAME"], "FROM_USER_SECOND_NAME" => $arMessage["FROM_USER_SECOND_NAME"]);
         }
         $arDialog[$arMessage["TO_USER_ID"]][$arMessage["FROM_USER_ID"]][] = array('DATE_CREATE' => $arMessage["DATE_CREATE"], 'MESSAGE' => CTextParser::convert4mail(str_replace("#BR#", "\n", strip_tags($arMessage["MESSAGE_OUT"]))));
     }
     foreach ($arMark as $userId => $ar) {
         foreach ($ar as $chatId => $lastSendId) {
             CIMMessage::SetLastSendId($chatId, $userId, $lastSendId);
         }
     }
     foreach ($arToUser as $toID => $arToInfo) {
         $message = "";
         $bHeader = false;
         $arNames = array();
         $bFirstMessage = true;
         foreach ($arDialog[$toID] as $fromID => $arMessages) {
             if ($bFirstMessage) {
                 $bFirstMessage = false;
             } else {
                 $message .= "\n";
             }
             if (count($arDialog[$toID]) > 1) {
                 $message .= GetMessage('IM_MAIL_TEMPLATE_NEW_MESSAGE_HEADER', array('#FROM_USER#' => $arFromUser[$fromID]['FROM_USER'])) . "\n";
                 $bHeader = true;
             }
             $arNames[] = $arFromUser[$fromID]['FROM_USER'];
             foreach ($arMessages as $arMessage) {
                 $message .= "\n" . GetMessage('IM_MAIL_TEMPLATE_NEW_MESSAGE_TEXT', array('#DATE_CREATE#' => $arMessage['DATE_CREATE'], '#MESSAGE#' => $arMessage['MESSAGE'])) . "\n";
             }
         }
         if ($bHeader) {
             $message .= "\n" . GetMessage('IM_MAIL_TEMPLATE_NEW_MESSAGE_FOOTER');
         }
         $arFields = array("USER" => $arToInfo["USER_ID"], "USER_ID" => $arToInfo["USER_ID"], "USER_LOGIN" => $arToInfo["USER_LOGIN"], "USER_NAME" => $arToInfo["USER_NAME"], "USER_LAST_NAME" => $arToInfo["USER_LAST_NAME"], "USER_SECOND_NAME" => $arToInfo["USER_SECOND_NAME"], "EMAIL_TO" => $arToInfo["EMAIL_TO"], "TITLE" => $arToInfo["TITLE"], "MESSAGES" => $message);
         if (count($arNames) > 1) {
             $mailTemplate = "IM_NEW_MESSAGE_GROUP";
             $arFields['FROM_USERS'] = implode(', ', $arNames);
         } else {
             $mailTemplate = "IM_NEW_MESSAGE";
             $arFields['FROM_USER'] = implode(', ', $arNames);
         }
         $event = new CEvent();
         $event->Send($mailTemplate, $arToInfo['TO_USER_LID'], $arFields, "N");
     }
     return "CIMMail::MailMessageAgent();";
 }