• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/mail.php
  • Класс: BitrixImOpenLinesMail
  • Вызов: Mail::sendOperatorAnswer
static function sendOperatorAnswer($sessionId)
{
	$sessionId = intval($sessionId);
	if ($sessionId <= 0 || !BitrixMainLoader::includeModule('im'))
	{
		return false;
	}

	$select =  ModelSessionTable::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 = ModelSessionTable::getList(Array(
		'select' => $select,
		'filter' => Array('=ID' => $sessionId)
	));
	if ($session = $orm->fetch())
	{
		BitrixImOpenlinesModelSessionCheckTable::update($session['ID'], Array(
			'DATE_MAIL' => null
		));
	}

	if (!$session || $session['SOURCE'] != 'livechat' || $session['SPAM'] == 'Y')
	{
		return false;
	}

	$email = BitrixImUser::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 = BitrixImOpenLinesCommon::getServerAddress().'/online/'.$session['LIVECHAT_URL_CODE_PUBLIC'];
		}
		else if (!empty($session['LIVECHAT_URL_CODE']))
		{
			$widgetUrl = BitrixImOpenLinesCommon::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" => BitrixImOpenLinesCommon::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;
}