GetGroupRight("sender") == "D") { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } use Bitrix\Sender\Stat\Statistics; use Bitrix\Sender\MailingChainTable; use Bitrix\Sender\PostingTable; use Bitrix\Fileman\Block\Editor as BlockEditor; $request = Context::getCurrent()->getRequest(); $mailingId = intval($request->get('MAILING_ID')); if (!$mailingId) { $mailingId = intval($request->get('mailingId')); } $chainId = intval($request->get('ID')); if (!$chainId) { $chainId = intval($request->get('chainId')); } $postingId = null; $arResult = array( 'DATA' => array(), 'MAILING_COUNTERS' => array(), ); $postingFilter = array('=MAILING_ID' => $mailingId, '!DATE_SENT' => null); if ($chainId) { $postingFilter['=MAILING_CHAIN_ID'] = $chainId; } $postingDb = PostingTable::getList(array( 'select' => array( 'ID', 'MAILING_CHAIN_ID', 'TITLE' => 'MAILING_CHAIN.TITLE', 'SUBJECT' => 'MAILING_CHAIN.SUBJECT', 'MAILING_NAME' => 'MAILING.NAME', 'DATE_SENT', 'LINK_PARAMS' => 'MAILING_CHAIN.LINK_PARAMS', 'CREATED_BY' => 'MAILING_CHAIN.CREATED_BY', 'CREATED_BY_NAME' => 'MAILING_CHAIN.CREATED_BY_USER.NAME', 'CREATED_BY_LAST_NAME' => 'MAILING_CHAIN.CREATED_BY_USER.LAST_NAME', 'CREATED_BY_SECOND_NAME' => 'MAILING_CHAIN.CREATED_BY_USER.SECOND_NAME', 'CREATED_BY_LOGIN' => 'MAILING_CHAIN.CREATED_BY_USER.LOGIN', 'CREATED_BY_TITLE' => 'MAILING_CHAIN.CREATED_BY_USER.TITLE', ), 'filter' => $postingFilter, 'limit' => 1, 'order' => array('DATE_SENT' => 'DESC', 'DATE_CREATE' => 'DESC'), )); $posting = $postingDb->fetch(); if($posting) { $chainId = intval($posting['MAILING_CHAIN_ID']); $postingId = intval($posting['ID']); } $action = $request->get('action'); if($action == 'get_template' && $chainId) { require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_js.php"); $message = MailingChainTable::getMessageById($chainId); Loader::includeModule('fileman'); $message = BlockEditor::getHtmlForEditor($message, Context::getCurrent()->getCulture()->getCharset()); echo $message; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin_js.php"); exit; } elseif ($action == 'get_read_by_time') { $mailingStat = Statistics::create()->filter('chainId', $chainId); $mailingStat->setCacheTtl(0); echo Json::encode(array( 'recommendedTime' => $mailingStat->getRecommendedSendTime(), 'readingByTimeList' => $mailingStat->getReadingByDayTime(), )); \CMain::FinalActions(); exit; } elseif($postingId) { $arResult['POSTING'] = $posting; if (!$arResult['POSTING']['TITLE']) { $arResult['POSTING']['TITLE'] = $arResult['POSTING']['SUBJECT']; } $mailingStat = Statistics::create()->filter('mailingId', $mailingId); $mailingStat->setCacheTtl(0); $arResult['CHAIN_LIST'] = $mailingStat->getChainList(7); $arResult['EFFICIENCY'] = $mailingStat->getEfficiency(); $mailingCounters = $mailingStat->getCounters(); foreach ($mailingCounters as $counter) { $arResult['MAILING_COUNTERS'][$counter['CODE']] = $counter; } $arResult['DATA']['posting']['linkParams'] = $arResult['POSTING']['LINK_PARAMS']; if ($arResult['POSTING']['DATE_SENT']) { $arResult['DATA']['posting']['dateSent'] = FormatDate('x', $arResult['POSTING']['DATE_SENT']->getTimestamp()); } $arResult['DATA']['posting']['createdBy'] = array( 'id' => $arResult['POSTING']['CREATED_BY'], 'name' => '', 'url' => '/bitrix/admin/user_edit.php?ID=' . intval($arResult['POSTING']['CREATED_BY']) . '&lang=' . LANGUAGE_ID, ); $arResult['DATA']['posting']['createdBy']['name'] = \CUser::FormatName( \CSite::GetNameFormat(true), array( "TITLE" => $arResult['POSTING']['CREATED_BY_TITLE'], "NAME" => $arResult['POSTING']['CREATED_BY_NAME'], "SECOND_NAME" => $arResult['POSTING']['CREATED_BY_SECOND_NAME'], "LAST_NAME" => $arResult['POSTING']['CREATED_BY_LAST_NAME'], "LOGIN" => $arResult['POSTING']['CREATED_BY_LOGIN'], ), true, true ); $postingStat = Statistics::create()->filter('mailingId', $mailingId)->filter('postingId', $postingId); $postingStat->setCacheTtl(0); $arResult['DATA']['clickList'] = $postingStat->getClickLinks(); $arResult['DATA']['counters'] = array(); $counters = $postingStat->getCounters(); foreach ($counters as $counter) { $arResult['DATA']['counters'][$counter['CODE']] = $counter; } } else { $arResult['ERROR'] = GetMessage("SENDER_MAILING_STATS_NO_POSTINGS"); } if ($action == 'get_data' && empty($arResult['ERROR'])) { echo Json::encode($arResult['DATA']); \CMain::FinalActions(); exit; } $lAdmin = new CAdminList("tbl_sender_mailing_stat"); $lAdmin->BeginCustomContent(); if(!empty($arResult['ERROR'])): $adminMessage = new CAdminMessage($arResult['ERROR']); echo $adminMessage->Show(); else: CJSCore::Init(array("sender_stat")); ?>