%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/sender/lib/internals/ |
Current File : /home/bitrix/www/bitrix/modules/sender/lib/internals/conversionhandler.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage sender * @copyright 2001-2012 Bitrix */ namespace Bitrix\Sender\Internals; use Bitrix\Main\Localization\Loc; use Bitrix\Conversion\DayContext; use Bitrix\Main\Context; use Bitrix\Sender\PostingClickTable; use Bitrix\Sender\PostingRecipientTable; use Bitrix\Main\Type\Date; Loc::loadMessages(__FILE__); class ConversionHandler { const CLICK_PARAM_NAME = 'BITRIX_SENDER_TO_CONVERSION_CLICK_ID'; public static function onAfterRecipientClick($data) { if(isset($data['RECIPIENT']) && isset($data['RECIPIENT']['ID'])) { $_SESSION[self::CLICK_PARAM_NAME] = $data['RECIPIENT']['ID']; } return $data; } public static function onBeforeProlog() { $id = Context::getCurrent()->getRequest()->getQuery('bx_sender_conversion_id'); if(is_numeric($id) && $id > 0) { $_SESSION[self::CLICK_PARAM_NAME] = $id; } } public static function onSetDayContextAttributes(DayContext $context) { $id = null; if(isset($_SESSION[self::CLICK_PARAM_NAME])) $id = $_SESSION[self::CLICK_PARAM_NAME]; if(!is_numeric($id) || $id <= 0) return; $recipientDb = PostingRecipientTable::getList(array( 'select' => array('MAILING_CHAIN_ID' => 'POSTING.MAILING_CHAIN_ID'), 'filter' => array( 'ID' => $id ) )); if ($recipient = $recipientDb->fetch()) { $context->setAttribute('sender_chain_source', $recipient['MAILING_CHAIN_ID']); } } public static function onGetAttributeTypes() { return array( 'sender_chain_source' => array( 'MODULE' => 'sender', 'GROUP' => 'source', 'NAME' => Loc::getMessage('sender_conversion_chain_source'), 'SORT' => 5100, 'SPLIT_BY' => 'sender_chain_source', 'BG_COLOR' => '#cf4343', 'GET_VALUES' => function (array $list) { $itemList = array(); $filter = array(); if($list) { $filter['=POSTING.MAILING_CHAIN.ID'] = $list; } $itemDb = PostingClickTable::getList(array( 'select' => array( 'MAILING_CHAIN_ID' => 'POSTING.MAILING_CHAIN.ID', 'MAILING_CHAIN_SUBJECT' => 'POSTING.MAILING_CHAIN.SUBJECT', ), 'filter' => $filter, 'group' => array('MAILING_CHAIN_ID', 'MAILING_CHAIN_SUBJECT') )); while($item = $itemDb->fetch()) { if(strlen($item['MAILING_CHAIN_SUBJECT']) <= 0) continue; $itemList[$item['MAILING_CHAIN_ID']] = array( 'NAME' => $item['MAILING_CHAIN_SUBJECT'] ); } return $itemList; } ) ); } }