Ejemplo n.º 1
0
}
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 {
Ejemplo n.º 2
0
                 $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();
     }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 /**
  * @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;
 }
Ejemplo n.º 5
0
 /**
  * @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;
 }