uawdijnntqw1x1x1
IP : 3.137.223.8
Hostname : axolotl
Kernel : Linux axolotl 4.9.0-13-amd64 #1 SMP Debian 4.9.228-1 (2020-07-05) x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
OS : Linux
PATH:
/
var
/
www
/
axolotl
/
data
/
www
/
yar.axolotls.ru
/
1c9cb
/
..
/
bitrix
/
modules
/
imopenlines
/
lib
/
mail.php
/
/
<?php /** * Bitrix Framework * @package bitrix * @subpackage crm * @copyright 2001-2016 Bitrix */ namespace Bitrix\ImOpenLines; use Bitrix\Main\Localization\Loc; class Mail { public static function addSessionToMailQueue($sessionId, $withCheck = true) { if ($withCheck) { $orm = Model\SessionCheckTable::getList(Array( 'select' => Array('SESSION_ID', 'SOURCE'), 'filter' => Array('=SESSION_ID' => $sessionId) )); $session = $orm->fetch(); if (!$session || $session['SOURCE'] != 'livechat' || $session['SPAM'] == 'Y') { return false; } } $mailData = new \Bitrix\Main\Type\DateTime(); $mailData->add('1 MINUTE'); \Bitrix\ImOpenlines\Model\SessionCheckTable::update($sessionId, Array( 'DATE_MAIL' => $mailData )); $event = new \Bitrix\Main\Event("imopenlines", "OnSessionToMailQueueAdd", Array('SESSION_ID' => $sessionId)); $event->send(); return true; } public static function removeSessionFromMailQueue($sessionId, $withCheck = true) { if ($withCheck) { $orm = Model\SessionCheckTable::getList(Array( 'select' => Array('SESSION_ID'), 'filter' => Array('=SESSION_ID' => $sessionId) )); if (!$orm->fetch()) { return false; } } \Bitrix\ImOpenlines\Model\SessionCheckTable::update($sessionId, Array( 'DATE_MAIL' => null )); return true; } public static function sendOperatorAnswerAgent($sessionId) { self::sendOperatorAnswer($sessionId); return ""; } public static function sendOperatorAnswer($sessionId) { $sessionId = intval($sessionId); if ($sessionId <= 0 || !\Bitrix\Main\Loader::includeModule('im')) { return false; } $select = Model\SessionTable::getSelectFieldsPerformance(); $select['CONFIG_LINE_NAME'] = 'CONFIG.LINE_NAME'; $select['CONFIG_LANGUAGE_ID'] = 'CONFIG.LANGUAGE_ID'; $select['LIVECHAT_URL_CODE'] = 'LIVECHAT.URL_CODE'; $select['LIVECHAT_URL_CODE_PUBLIC'] = 'LIVECHAT.URL_CODE_PUBLIC'; $orm = Model\SessionTable::getList(Array( 'select' => $select, 'filter' => Array('=ID' => $sessionId) )); if ($session = $orm->fetch()) { \Bitrix\ImOpenlines\Model\SessionCheckTable::update($session['ID'], Array( 'DATE_MAIL' => null )); } if (!$session || $session['SOURCE'] != 'livechat' || $session['SPAM'] == 'Y') { return false; } $email = \Bitrix\Im\User::getInstance($session['USER_ID'])->getEmail(); if (!$email) { return false; } $messages = self::prepareOperatorAnswerForTemplate($session['ID'], false); if ($messages <= 0) { return false; } $mess = Loc::loadLanguageFile(__FILE__, $session['CONFIG_LANGUAGE_ID']? $session['CONFIG_LANGUAGE_ID']: null); $lineName = $session['CONFIG_LINE_NAME']; $widgetUrl = $session['EXTRA_URL']; if (empty($widgetUrl)) { if (!empty($session['LIVECHAT_URL_CODE_PUBLIC'])) { $widgetUrl = \Bitrix\ImOpenLines\Common::getServerAddress().'/online/'.$session['LIVECHAT_URL_CODE_PUBLIC']; } else if (!empty($session['LIVECHAT_URL_CODE'])) { $widgetUrl = \Bitrix\ImOpenLines\Common::getServerAddress().'/online/'.$session['LIVECHAT_URL_CODE']; } } $widgetUrlParsed = parse_url($widgetUrl); $title = str_replace( Array('#SITE_URL#', '#SESSION_ID#'), Array($widgetUrlParsed['host'], $sessionId), $mess['IMOL_MAIL_HISTORY_TITLE'] ); $actionTitle = $mess['IMOL_MAIL_ANSWER_ACTION_TITLE']; $actionDesc = str_replace( Array('#SESSION_ID#'), Array($sessionId), $mess['IMOL_MAIL_HISTORY_ACTION_DESC'] ); $arFields = array( "EMAIL_TO" => $email, "EMAIL_TITLE" => $title, "TEMPLATE_SERVER_ADDRESS" => \Bitrix\ImOpenLines\Common::getServerAddress(), "TEMPLATE_CONFIG_ID" => $session['CONFIG_ID'], "TEMPLATE_SESSION_ID" => $sessionId, "TEMPLATE_ACTION_TITLE" => $actionTitle, "TEMPLATE_ACTION_DESC" => $actionDesc, "TEMPLATE_WIDGET_DOMAIN" => $widgetUrlParsed['host'], "TEMPLATE_WIDGET_URL" => $widgetUrl, "TEMPLATE_LINE_NAME" => $lineName, ); $event = new \CEvent; $event->Send("IMOL_OPERATOR_ANSWER", SITE_ID, $arFields, "N", "", array(), $session['CONFIG_LANGUAGE_ID']); return true; } public static function prepareOperatorAnswerForTemplate($sessionId, $setSendFlag = true) { if (!\Bitrix\Main\Loader::includeModule('im')) { return false; } $sessionId = intval($sessionId); if (!$sessionId) return false; $select = Model\SessionTable::getSelectFieldsPerformance(); $select['CONFIG_LANGUAGE_ID'] = 'CONFIG.LANGUAGE_ID'; $orm = Model\SessionTable::getList(Array( 'select' => $select, 'filter' => Array('=ID' => $sessionId) )); $session = $orm->fetch(); if (!$session || $session['SOURCE'] != 'livechat') { return false; } $parsedUserCode = Session\Common::parseUserCode($session['USER_CODE']); $chatId = $parsedUserCode['EXTERNAL_CHAT_ID']; $relation = \Bitrix\Im\Model\RelationTable::getList(Array( 'filter' => Array( '=CHAT_ID' => $chatId, '=USER_ID' => $session['USER_ID'] ) ))->fetch(); if (!$relation) { return false; } $CIMChat = new \CIMChat($session['USER_ID']); $result = $CIMChat->GetLastMessageLimit($chatId, $session['START_ID'], $session['END_ID'], false, false); if (!$result) { return false; } $messages = Array(); $findClientMessage = false; $findOperatorMessage = false; $lastMessageId = null; foreach ($result['message'] as $messageId => $messageData) { if (!$lastMessageId) { $lastMessageId = $messageId; } if (count($messages) == 0 && $messageId == $relation['LAST_SEND_ID']) { break; } if ($messageId < $relation['LAST_SEND_ID']) { if ($findClientMessage && $messageData['senderId'] != $session['USER_ID']) { if ($findClientMessage) { break; } } } if ($messageData['senderId'] == $session['USER_ID']) { $findClientMessage = true; } else { $findOperatorMessage = true; } $messages[$messageId] = $messageData; } if (!$findOperatorMessage) return false; \Bitrix\Main\Type\Collection::sortByColumn($messages, Array('id' => SORT_ASC), '', null, true); $result['message'] = $messages; $messages = self::prepareMessagesForTemplate($session, $result, $session['CONFIG_LANGUAGE_ID']); if ($setSendFlag) { \CIMMessage::SetLastSendId($chatId, $session['USER_ID'], $lastMessageId); } return $messages; } public static function sendSessionHistory($sessionId, $email) { $sessionId = intval($sessionId); if ($sessionId <= 0 || strlen($email) <= 0) { return false; } $select = Model\SessionTable::getSelectFieldsPerformance(); $select['CONFIG_LINE_NAME'] = 'CONFIG.LINE_NAME'; $select['CONFIG_LANGUAGE_ID'] = 'CONFIG.LANGUAGE_ID'; $select['LIVECHAT_URL_CODE'] = 'LIVECHAT.URL_CODE'; $select['LIVECHAT_URL_CODE_PUBLIC'] = 'LIVECHAT.URL_CODE_PUBLIC'; $orm = Model\SessionTable::getList(Array( 'select' => $select, 'filter' => Array('=ID' => $sessionId) )); $session = $orm->fetch(); if (!$session) { return false; } $mess = Loc::loadLanguageFile(__FILE__, $session['CONFIG_LANGUAGE_ID']? $session['CONFIG_LANGUAGE_ID']: null); Log::write(Array( 'LANG' => $select['CONFIG_LANGUAGE_ID']? $select['CONFIG_LANGUAGE_ID']: null, 'MESS' => $mess )); $lineName = $session['CONFIG_LINE_NAME']; $widgetUrl = $session['EXTRA_URL']; if (empty($widgetUrl)) { if (!empty($session['LIVECHAT_URL_CODE_PUBLIC'])) { $widgetUrl = \Bitrix\ImOpenLines\Common::getServerAddress().'/online/'.$session['LIVECHAT_URL_CODE_PUBLIC']; } else if (!empty($session['LIVECHAT_URL_CODE'])) { $widgetUrl = \Bitrix\ImOpenLines\Common::getServerAddress().'/online/'.$session['LIVECHAT_URL_CODE']; } } $widgetUrlParsed = parse_url($widgetUrl); $title = str_replace( Array('#SITE_URL#', '#SESSION_ID#'), Array($widgetUrlParsed['host'], $sessionId), $mess['IMOL_MAIL_HISTORY_TITLE'] ); $actionTitle = $mess['IMOL_MAIL_HISTORY_ACTION_TITLE']; $actionDesc = str_replace( Array('#SESSION_ID#'), Array($sessionId), $mess['IMOL_MAIL_HISTORY_ACTION_DESC'] ); $arFields = array( "EMAIL_TO" => $email, "EMAIL_TITLE" => $title, "TEMPLATE_SERVER_ADDRESS" => \Bitrix\ImOpenLines\Common::getServerAddress(), "TEMPLATE_SESSION_ID" => $sessionId, "TEMPLATE_ACTION_TITLE" => $actionTitle, "TEMPLATE_ACTION_DESC" => $actionDesc, "TEMPLATE_WIDGET_DOMAIN" => $widgetUrlParsed['host'], "TEMPLATE_WIDGET_URL" => $widgetUrl, "TEMPLATE_LINE_NAME" => $lineName, ); $event = new \CEvent; $event->Send("IMOL_HISTORY_LOG", SITE_ID, $arFields, "N", "", Array(), $session['CONFIG_LANGUAGE_ID']); \CEvent::ExecuteEvents(); Model\SessionTable::update($session['ID'], Array('SEND_HISTORY' => 'Y')); return true; } public static function prepareSessionHistoryForTemplate($sessionId) { if (!\Bitrix\Main\Loader::includeModule('im')) return false; $sessionId = intval($sessionId); if (!$sessionId) return false; $select = Model\SessionTable::getSelectFieldsPerformance(); $select['CONFIG_LANGUAGE_ID'] = 'CONFIG.LANGUAGE_ID'; $orm = Model\SessionTable::getList(Array( 'select' => $select, 'filter' => Array('=ID' => $sessionId) )); $session = $orm->fetch(); if (!$session) { return false; } $CIMChat = new \CIMChat($session['USER_ID']); $result = $CIMChat->GetLastMessageLimit($session['CHAT_ID'], $session['START_ID'], $session['END_ID'], false, false, 'ASC'); if (!$result) return false; $messages = self::prepareMessagesForTemplate($session, $result, $session['CONFIG_LANGUAGE_ID']); return $messages; } private static function prepareMessagesForTemplate($session, $history, $language = null) { $language = $language? $language: null; $mess = Loc::loadLanguageFile(__FILE__, $language); $userTzOffset = \Bitrix\Im\User::getInstance($session['USER_ID'])->getTzOffset(); $messages = Array(); foreach ($history['message'] as $messageId => $message) { if (empty($message['params']['CONNECTOR_MID'])) continue; $isYou = $message['senderId'] == $session['USER_ID']; if ($message['senderId'] > 0) { if ($isYou) { $authorName = $mess['IMOL_MAIL_AUTHOR_YOU']; } else { $authorName = \Bitrix\ImOpenLines\Connector::getOperatorName($session['CONFIG_ID'], $message['senderId'], $session['USER_CODE']); } $authorAvatar = \Bitrix\ImOpenLines\Connector::getOperatorAvatar($session['CONFIG_ID'], $message['senderId'], $session['USER_CODE']); if ($authorAvatar) { $authorAvatar = substr($authorAvatar, 0, 4) != 'http'? \Bitrix\ImOpenLines\Common::getServerAddress().$authorAvatar: $authorAvatar; } else { $authorAvatar = ''; } $systemFlag = 'N'; } else { $authorName = ''; $authorAvatar = ''; $systemFlag = 'Y'; } $currentDate = new \Bitrix\Main\Type\DateTime(); if (is_object($message['date'])) { $date = $message['date']; } else { $date = \Bitrix\Main\Type\DateTime::createFromTimestamp($message['date']); } if ($date->format('Ymd') == $currentDate->format('Ymd')) { $messageDate = \FormatDate($mess['IMOL_MAIL_TIME_FORMAT'], $message['date']->getTimestamp()+intval($userTzOffset)); } else { $messageDate = \FormatDate($mess['IMOL_MAIL_DATETIME_FORMAT'], $message['date']->getTimestamp()+intval($userTzOffset)); } if (isset($message['params']['IMOL_VOTE'])) { if ($message['params']['IMOL_VOTE'] == 'like') { $messageText = $message['params']['IMOL_VOTE_LIKE']; } else if ($message['params']['IMOL_VOTE'] == 'dislike') { $messageText = $message['params']['IMOL_VOTE_DISLIKE']; } else { $messageText = $message['params']['IMOL_VOTE_TEXT']; } } else { $messageText = $message['text']; if (isset($message['params']['FILE_ID'])) { $messageText .= ' ['.$mess['IMOL_MAIL_FILE'].']'; $messageText = trim($messageText); } } $messages[$messageId] = Array( 'NAME' => $authorName, 'AVATAR' => $authorAvatar, 'DATE' => $messageDate, 'TEXT' => $messageText, 'CLIENT' => $isYou? 'Y': 'N', 'SYSTEM' => $systemFlag, ); } return $messages; } public static function installEventsAgent() { $orm = \Bitrix\Main\Mail\Internal\EventTypeTable::getList(array( 'select' => array('ID'), 'filter' => Array( '=EVENT_NAME' => Array('IMOL_HISTORY_LOG', 'IMOL_OPERATOR_ANSWER') ) )); if(!$orm->fetch()) { include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/imopenlines/install/events/set_events.php"); } return ""; } }
/var/www/axolotl/data/www/yar.axolotls.ru/1c9cb/../bitrix/modules/imopenlines/lib/mail.php