} IncludeModuleLangFile(__FILE__); $POST_RIGHT = $APPLICATION->GetGroupRight("sender"); if ($POST_RIGHT == "D") { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } $sTableID = "tbl_sender_mailing_chain"; $MAILING_ID = intval($_REQUEST["MAILING_ID"]); $ID = intval($_REQUEST["ID"]); if ($_REQUEST["action"] == "send_to_me" && check_bitrix_sessid() && $POST_RIGHT >= "W") { require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_js.php"; $adminMessage = new CAdminMessage(''); $sendToMeAddr = $_POST["send_to_me_addr"]; $sendToMeAddr = explode(",", $sendToMeAddr); $arResult = array(); $mailingChain = MailingChainTable::getRowById(array('ID' => $ID)); if ($mailingChain) { try { foreach ($sendToMeAddr as $address) { $address = trim($address); if (!empty($address)) { $sendResult = \Bitrix\Sender\PostingManager::sendToAddress($mailingChain['ID'], $address); if ($sendResult == \Bitrix\Sender\PostingManager::SEND_RESULT_SENT) { $arResult[] = $address; MailingChainTable::setEmailToMeList($address); } } } if (!empty($arResult)) { $adminMessage->ShowNote(GetMessage("sender_mailing_chain_adm_test_send_success") . implode(', ', $arResult)); } else {
$arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_SEND; } } break; case 'REITERATE': if (empty($DAYS_OF_WEEK) && empty($DAYS_OF_MONTH)) { $arError[] = GetMessage("sender_chain_edit_error_reiterate"); } $arFields["REITERATE"] = "Y"; $arFields["DAYS_OF_WEEK"] = $DAYS_OF_WEEK; $arFields["DAYS_OF_MONTH"] = $DAYS_OF_MONTH; $arFields["TIMES_OF_DAY"] = $TIMES_OF_DAY; if ($ID <= 0) { $arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_WAIT; } else { $arMailingChainOld = \Bitrix\Sender\MailingChainTable::getRowById(array('ID' => $ID)); if ($arMailingChainOld['STATUS'] == \Bitrix\Sender\MailingChainTable::STATUS_NEW) { $arFields["STATUS"] = \Bitrix\Sender\MailingChainTable::STATUS_SEND; } } break; default: $arError[] = GetMessage("sender_chain_edit_error_send_type"); } if (empty($arError)) { $mailingUpdateDb = \Bitrix\Sender\MailingChainTable::update(array('ID' => $ID), $arFields); if ($mailingUpdateDb->isSuccess()) { //\Bitrix\Sender\MailingChainTable::initPosting($ID); } else { $arError = $mailingUpdateDb->getErrorMessages(); }
public static function updateChain($id, array $fields) { $result = new \Bitrix\Main\Entity\Result(); static::checkFieldsChain($result, $id, $fields); if (!$result->isSuccess(true)) { return $result; } $parentChainId = null; $existChildIdList = array(); foreach ($fields as $chainFields) { $chainId = $chainFields['ID']; unset($chainFields['ID']); $chainFields['MAILING_ID'] = $id; $chainFields['IS_TRIGGER'] = 'Y'; $chainFields['REITERATE'] = 'Y'; $chainFields['PARENT_ID'] = $parentChainId; // default status if ($chainId > 0) { $chain = \Bitrix\Sender\MailingChainTable::getRowById(array('ID' => $chainId)); if ($chain && $chain['STATUS'] != \Bitrix\Sender\MailingChainTable::STATUS_WAIT) { $chainFields['STATUS'] = $chain['STATUS']; unset($chainFields['CREATED_BY']); } } if (empty($chainFields['STATUS'])) { $chainFields['STATUS'] = \Bitrix\Sender\MailingChainTable::STATUS_WAIT; } // add or update if ($chainId > 0) { $existChildIdList[] = $chainId; $chainUpdateDb = MailingChainTable::update(array('ID' => $chainId), $chainFields); if ($chainUpdateDb->isSuccess()) { } else { $result->addErrors($chainUpdateDb->getErrors()); } } else { $chainAddDb = MailingChainTable::add($chainFields); if ($chainAddDb->isSuccess()) { $chainId = $chainAddDb->getId(); $existChildIdList[] = $chainId; } else { $result->addErrors($chainAddDb->getErrors()); } } if (!empty($errorList)) { break; } $parentChainId = null; if ($chainId !== null) { $parentChainId = $chainId; } } $deleteChainDb = MailingChainTable::getList(array('select' => array('ID'), 'filter' => array('MAILING_ID' => $id, '!ID' => $existChildIdList))); while ($deleteChain = $deleteChainDb->fetch()) { MailingChainTable::delete(array('ID' => $deleteChain['ID'])); } static::updateChainTrigger($id); return $result; }
/** * @param $mailingChainId * @param $address * @return bool * @throws \Bitrix\Main\DB\Exception */ public static function sendToAddress($mailingChainId, $address) { $recipientEmail = $address; $emailParts = explode('@', $recipientEmail); $recipientName = $emailParts[0]; global $USER; $mailingChain = MailingChainTable::getRowById(array('ID' => $mailingChainId)); $sendParams = array('FIELDS' => array('NAME' => $recipientName, 'EMAIL_TO' => $address, 'USER_ID' => $USER->GetID(), 'SENDER_CHAIN_CODE' => 'sender_chain_item_' . $mailingChain["ID"], 'UNSUBSCRIBE_LINK' => Subscription::getLinkUnsub(array('MAILING_ID' => !empty($mailingChain) ? $mailingChain['MAILING_ID'] : 0, 'EMAIL' => $address, 'TEST' => 'Y'))), 'TRACK_READ' => array('MODULE_ID' => "sender", 'FIELDS' => array('RECIPIENT_ID' => 0)), 'TRACK_CLICK' => array('MODULE_ID' => "sender", 'FIELDS' => array('RECIPIENT_ID' => 0), 'URL_PARAMS' => array('bx_sender_conversion_id' => 0))); $mailSendResult = static::sendInternal($mailingChainId, $sendParams); switch ($mailSendResult) { case PostingRecipientTable::SEND_RESULT_SUCCESS: $mailResult = static::SEND_RESULT_SENT; break; case PostingRecipientTable::SEND_RESULT_ERROR: default: $mailResult = static::SEND_RESULT_ERROR; } return $mailResult; }
/** * @param $mailingChainId * @param $address * @return bool * @throws \Bitrix\Main\DB\Exception */ public static function sendToAddress($mailingChainId, $address) { $recipientEmail = $address; $arEmailParts = explode('@', $recipientEmail); $recipientName = $arEmailParts[0]; $mailingChain = MailingChainTable::getRowById(array('ID' => $mailingChainId)); $arParams = array('FIELDS' => array('NAME' => $recipientName, 'EMAIL_TO' => $address, 'USER_ID' => '', 'UNSUBSCRIBE_LINK' => Subscription::getLinkUnsub(array('MAILING_ID' => !empty($mailingChain) ? $mailingChain['MAILING_ID'] : 0, 'EMAIL' => $address, 'TEST' => 'Y')))); $mailSendResult = static::sendInternal($mailingChainId, $arParams); switch ($mailSendResult) { case PostingRecipientTable::SEND_RESULT_SUCCESS: $mailResult = static::SEND_RESULT_SENT; break; case PostingRecipientTable::SEND_RESULT_ERROR: default: $mailResult = static::SEND_RESULT_ERROR; } return $mailResult; }