Beispiel #1
1
 /**
  * @param string $email
  * @param array $mailingList
  * @param string $siteId
  * @return void
  * //send email with url to confirmation of subscription
  */
 public static function sendEventConfirm($email, array $mailingIdList, $siteId)
 {
     $mailingNameList = array();
     $mailingDb = MailingTable::getList(array('select' => array('NAME'), 'filter' => array('ID' => $mailingIdList)));
     while ($mailing = $mailingDb->fetch()) {
         $mailingNameList[] = $mailing['NAME'];
     }
     $subscription = array('EMAIL' => $email, 'SITE_ID' => $siteId, 'MAILING_LIST' => $mailingIdList);
     $confirmUrl = static::getLinkSub($subscription);
     $date = new \Bitrix\Main\Type\DateTime();
     $eventSendFields = array("EVENT_NAME" => "SENDER_SUBSCRIBE_CONFIRM", "C_FIELDS" => array("EMAIL" => $email, "DATE" => $date->toString(), "CONFIRM_URL" => $confirmUrl, "MAILING_LIST" => implode("\r\n", $mailingNameList)), "LID" => is_array($siteId) ? implode(",", $siteId) : $siteId);
     \Bitrix\Main\Mail\Event::send($eventSendFields);
 }
Beispiel #2
0
 /**
  * @param array $params
  * @return void
  */
 protected static function processEvent($params)
 {
     $moduleId = $params['MODULE_ID'];
     $eventType = $params['EVENT_TYPE'];
     $eventData = $params['EVENT_DATA'];
     $filter = array('=MAILING_CHAIN.MAILING.ACTIVE' => 'Y', '=MAILING_CHAIN.IS_TRIGGER' => 'Y', '=MAILING_CHAIN.STATUS' => array(MailingChainTable::STATUS_WAIT, MailingChainTable::STATUS_SEND), '=EVENT' => $moduleId . '/' . $eventType);
     if (isset($params['FILTER']) && is_array($params['FILTER'])) {
         $filter = $filter + $params['FILTER'];
     }
     $chainDb = MailingTriggerTable::getList(array('select' => array('ENDPOINT', 'SITE_ID' => 'MAILING_CHAIN.MAILING.SITE_ID', 'ID' => 'MAILING_CHAIN.ID', 'MAILING_ID' => 'MAILING_CHAIN.MAILING_ID', 'PARENT_ID' => 'MAILING_CHAIN.PARENT_ID', 'POSTING_ID' => 'MAILING_CHAIN.POSTING_ID', 'TIME_SHIFT' => 'MAILING_CHAIN.TIME_SHIFT', 'STATUS' => 'MAILING_CHAIN.STATUS', 'AUTO_SEND_TIME' => 'MAILING_CHAIN.AUTO_SEND_TIME'), 'filter' => $filter, 'order' => array('MAILING_CHAIN_ID' => 'ASC', 'IS_TYPE_START' => 'ASC')));
     while ($chain = $chainDb->fetch()) {
         $settings = new TriggerSettings($chain['ENDPOINT']);
         $trigger = static::getOnce($settings->getEndpoint());
         if (!$trigger) {
             continue;
         }
         $trigger->setSiteId($chain['SITE_ID']);
         $trigger->setFields($settings->getFields());
         $trigger->setParams(array('CHAIN' => $chain, 'EVENT' => $eventData));
         // mark trigger as first run for process old data
         $runForOldData = $trigger->canRunForOldData() && $settings->canRunForOldData() && !$settings->wasRunForOldData();
         $trigger->setRunForOldData($runForOldData);
         // run trigger filter
         if (!$trigger->filter()) {
             continue;
         }
         //add recipient to posting
         static::$postingId = null;
         $recipientDb = $trigger->getRecipientResult();
         while ($recipient = $recipientDb->fetch()) {
             if ($settings->isTypeStart()) {
                 static::addRecipient($chain, $settings, $recipient);
             } else {
                 static::stop($chain, $recipient, true);
             }
         }
         // mark mailing trigger fields as first run for process old data
         if ($runForOldData) {
             MailingTable::setWasRunForOldData($chain['MAILING_ID'], $runForOldData);
         }
         if ($settings->isTypeStart()) {
             // prevent email event
             if ($settings->isPreventEmail()) {
                 static::preventMailEvent($trigger->getMailEventToPrevent());
             }
             //start sending of mailing chain
             static::send($chain);
         }
     }
     //return $data;
 }
Beispiel #3
0
    $groupDb = \Bitrix\Sender\MailingGroupTable::getList(array('select' => array('ID' => 'GROUP_ID', 'INCLUDE'), 'filter' => array('MAILING_ID' => $ID)));
    while ($arGroup = $groupDb->fetch()) {
        if ($arGroup['INCLUDE']) {
            $GROUP_INCLUDE[] = $arGroup['ID'];
        } else {
            $GROUP_EXCLUDE[] = $arGroup['ID'];
        }
    }
}
//Edit/Add part
ClearVars();
$str_SORT = 100;
$str_ACTIVE = "Y";
$str_VISIBLE = "Y";
if ($ID > 0) {
    $rubric = new CDBResult(\Bitrix\Sender\MailingTable::getById($ID));
    if (!$rubric->ExtractFields("str_")) {
        $ID = 0;
    }
}
$GROUP_EXIST = array();
$groupDb = \Bitrix\Sender\GroupTable::getList(array('select' => array('NAME', 'ID', 'ADDRESS_COUNT'), 'filter' => array('ACTIVE' => 'Y'), 'order' => array('SORT' => 'ASC', 'NAME' => 'ASC')));
while ($arGroup = $groupDb->fetch()) {
    $GROUP_EXIST[] = $arGroup;
}
if ($bVarsFromForm) {
    $DB->InitTableVarsForEdit("b_sender_mailing", "", "str_");
}
\CJSCore::Init(array("sender_admin"));
$APPLICATION->SetTitle($ID > 0 ? GetMessage("sender_mailing_edit_title_edit") . $ID : GetMessage("sender_mailing_edit_title_new"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
Beispiel #4
0
}
$lAdmin->AddFooter(array(array("title" => GetMessage("MAIN_ADMIN_LIST_SELECTED"), "value" => $rsData->SelectedRowsCount()), array("counter" => true, "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => "0")));
$lAdmin->AddGroupActionTable(array("delete" => GetMessage("MAIN_ADMIN_LIST_DELETE")));
$aContext = array(array("TEXT" => GetMessage("SENDER_CONTACT_LIST_BUTTON_ADD"), "TITLE" => GetMessage("POST_ADD_TITLE"), "ICON" => "btn_new", "MENU" => array(array("TEXT" => GetMessage("SENDER_CONTACT_LIST_BUTTON_ADD_FORM"), "ACTION" => $lAdmin->ActionRedirect("sender_contact_edit.php?lang=" . LANGUAGE_ID)), array("TEXT" => GetMessage("SENDER_CONTACT_LIST_BUTTON_ADD_LIST"), "ACTION" => $lAdmin->ActionRedirect("sender_contact_import.php?lang=" . LANGUAGE_ID)), array("TEXT" => GetMessage("SENDER_CONTACT_LIST_BUTTON_ADD_FILE"), "ACTION" => $lAdmin->ActionRedirect("sender_contact_import.php?lang=" . LANGUAGE_ID)), $POST_RIGHT >= "W" ? array("TEXT" => GetMessage("SENDER_CONTACT_LIST_BUTTON_ADD_PULL1"), "ACTION" => $lAdmin->ActionRedirect("sender_contact_admin.php?action=pull&lang=" . LANGUAGE_ID)) : null)));
$aContext[] = array("TEXT" => GetMessage("SENDER_CONTACT_LIST_EDIT"), "LINK" => "/bitrix/admin/sender_list_admin.php?lang=" . LANG, "TITLE" => GetMessage("SENDER_CONTACT_LIST_EDIT_TITLE"), "ICON" => "");
$lAdmin->AddAdminContextMenu($aContext);
$lAdmin->CheckListMode();
$APPLICATION->SetTitle(GetMessage("rub_title"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
$oFilter = new CAdminFilter($sTableID . "_filter", array(GetMessage("rub_f_name"), GetMessage("rub_f_email"), GetMessage("rub_f_subscribed"), GetMessage("rub_f_unsubscribed"), GetMessage("rub_f_list")));
$oFilter->SetDefaultRows(array("find_email", "find_list"));
$oFilter->AddPreset(array("ID" => "subscribed_list", "NAME" => GetMessage('SENDER_CONTACT_LIST_PRESET_SUB'), "FIELDS" => array("find_email" => "", "find_subscribed" => "ALL")));
$oFilter->AddPreset(array("ID" => "unsubscribed_list", "NAME" => GetMessage('SENDER_CONTACT_LIST_PRESET_UN_SUB'), "FIELDS" => array("find_email" => "", "find_unsubscribed" => "ALL")));
$filterMailingSubList = array('reference' => array(GetMessage('rub_f_yes')), 'reference_id' => array('ALL'));
$filterMailingUnSubList = array('reference' => array(GetMessage('rub_f_yes')), 'reference_id' => array('ALL'));
$mailingDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('IS_TRIGGER', 'REFERENCE' => 'NAME', 'REFERENCE_ID' => 'ID')));
while ($arMailing = $mailingDb->fetch()) {
    if ($arMailing['IS_TRIGGER'] != 'Y') {
        $filterMailingSubList['reference'][] = $arMailing['REFERENCE'];
        $filterMailingSubList['reference_id'][] = $arMailing['REFERENCE_ID'];
    }
    $filterMailingUnSubList['reference'][] = $arMailing['REFERENCE'];
    $filterMailingUnSubList['reference_id'][] = $arMailing['REFERENCE_ID'];
}
?>
<form name="find_form" method="get" action="<?php 
echo $APPLICATION->GetCurPage();
?>
">
<?php 
$oFilter->Begin();
Beispiel #5
0
<form name="find_form" method="get" action="<?php 
echo $APPLICATION->GetCurPage();
?>
">
<?php 
$oFilter->Begin();
?>
	<tr>
		<td><?php 
echo GetMessage("sender_stat_flt_mailing");
?>
:</td>
		<td>
			<?php 
$arr = array();
$mailingDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('REFERENCE' => 'NAME', 'REFERENCE_ID' => 'ID'), 'filter' => $arMailingFilter));
while ($arMailing = $mailingDb->fetch()) {
    $arr['reference'][] = $arMailing['REFERENCE'];
    $arr['reference_id'][] = $arMailing['REFERENCE_ID'];
}
echo SelectBoxFromArray("find_mailing_id", $arr, $MAILING_ID, false, "");
?>
		</td>
	</tr>

	<?php 
if ($MAILING_ID > 0) {
    ?>
	<tr>
		<td><?php 
    echo GetMessage("sender_stat_flt_mailing_chain");
Beispiel #6
0
            case "activate":
            case "deactivate":
                $arFields["ACTIVE"] = $_REQUEST['action'] == "activate" ? "Y" : "N";
                $dataUpdateDb = \Bitrix\Sender\MailingTable::update($dataPrimary, $arFields);
                if (!$dataUpdateDb->isSuccess()) {
                    $LAST_ERROR = $dataUpdateDb->getErrorMessages();
                    $LAST_ERROR = $LAST_ERROR[0];
                    $lAdmin->AddGroupError(GetMessage("rub_save_error") . $LAST_ERROR, $ID);
                }
                break;
        }
    }
}
// runtime: RECIPIENT_CNT = include_cnt = group_cnt * (exclude_int)
$arFilter['IS_TRIGGER'] = 'N';
$groupListDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('ID', 'NAME', 'SORT', 'DATE_INSERT', 'ACTIVE', 'IS_PUBLIC', 'SITE_ID', 'RECIPIENT_CNT'), 'filter' => $arFilter, 'runtime' => array(new \Bitrix\Main\Entity\ExpressionField('RECIPIENT_CNT', 'SUM(%2$s*(%1$s))', array('MAILING_GROUP.INCLUDE', 'MAILING_GROUP.GROUP.ADDRESS_COUNT'))), 'order' => array($by => $order)));
$rsData = new CAdminResult($groupListDb, $sTableID);
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("rub_nav")));
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "ID", "align" => "right", "default" => true), array("id" => "NAME", "content" => GetMessage("rub_name"), "sort" => "NAME", "default" => true), array("id" => "SORT", "content" => GetMessage("rub_sort"), "sort" => "SORT", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("rub_act"), "sort" => "ACTIVE", "default" => true), array("id" => "SITE_ID", "content" => GetMessage("rub_site"), "sort" => "SITE_ID", "default" => true), array("id" => "IS_PUBLIC", "content" => GetMessage("rub_f_is_public"), "sort" => "IS_PUBLIC", "default" => false), array("id" => "RECIPIENT_CNT", "content" => GetMessage("rub_f_recipient_cnt"), "sort" => "RECIPIENT_CNT", "default" => true)));
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    $row->AddInputField("NAME", array("size" => 20));
    $row->AddViewField("NAME", '<a href="sender_mailing_edit.php?ID=' . $f_ID . '&amp;lang=' . LANG . '">' . $f_NAME . '</a>');
    $row->AddInputField("SORT", array("size" => 6));
    $row->AddCheckField("ACTIVE");
    $row->AddCheckField("IS_PUBLIC");
    $row->AddViewField("RECIPIENT_CNT", '<a href="sender_mailing_recipient_admin.php?MAILING_ID=' . $f_ID . '&amp;lang=' . LANG . '">' . $f_RECIPIENT_CNT . '</a>');
    $arActions = array();
    $arActions[] = array("ICON" => "edit", "DEFAULT" => true, "TEXT" => GetMessage("rub_edit"), "ACTION" => $lAdmin->ActionRedirect("sender_mailing_edit.php?ID=" . $f_ID));
    if ($POST_RIGHT >= "W") {
Beispiel #7
0
            if ($MAILING_TYPE == 'NEW') {
                $step = 'mailing_group';
            } else {
                $step = 'chain';
            }
            $isPostedFormProcessed = true;
            LocalRedirect('sender_mailing_wizard.php?step=' . $step . '&MAILING_ID=' . $MAILING_ID . "&lang=" . LANGUAGE_ID);
        } else {
            $DB->InitTableVarsForEdit("b_sender_mailing", "", "str_");
        }
    } else {
        $str_ACTIVE = 'Y';
        $str_SORT = 100;
    }
    $arMailingList = array();
    $groupDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('NAME', 'ID'), 'order' => array('NAME' => 'ASC')));
    while ($arMailing = $groupDb->fetch()) {
        $arMailingList[] = $arMailing;
    }
    if (empty($arMailingList)) {
        $MAILING_TYPE = 'NEW';
    }
}
if ($step == 'group') {
    IncludeModuleLangFile(dirname(__FILE__) . "/group_edit.php");
    if (!isset($group_create) && $REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) {
        $res = false;
        $NAME = trim($NAME);
        if (isset($popup_create_group) && $popup_create_group == 'Y') {
            require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_js.php";
            $NAME = $APPLICATION->ConvertCharset($NAME, "UTF-8", LANG_CHARSET);
        $arTriggerSettingsTmp[] = $item;
    }
    $arTriggerSettings = $arTriggerSettingsTmp;
    // save chain
    $result = \Bitrix\Sender\MailingTable::updateChain($ID, $arTriggerSettings);
    $errorList = array_merge($errorList, $result->getErrorMessages());
    if (empty($errorList)) {
        if ($save != "") {
            LocalRedirect('/bitrix/admin/sender_mailing_trig_admin.php?lang=' . LANGUAGE_ID);
        } else {
            LocalRedirect('/bitrix/admin/sender_mailing_trig_edit.php?ID=' . $ID . '&lang=' . LANGUAGE_ID);
        }
    }
    $chainFieldsList = $arTriggerSettings;
} else {
    $chainFieldsList = \Bitrix\Sender\MailingTable::getChain($ID);
}
$numberChainItem = 0;
$chainFieldsListTmp = array();
foreach ($chainFieldsList as $chain) {
    $chain['ITEM_SORT'] = $numberChainItem++;
    $chainFieldsListTmp[] = $chain;
}
$chainFieldsList = $chainFieldsListTmp;
//Edit/Add part
ClearVars();
\CJSCore::Init(array("sender_admin"));
$APPLICATION->SetTitle(GetMessage("sender_chain_edit_title_edit") . ' "' . $mailing['NAME'] . '"');
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
$aMenu = array(array("TEXT" => GetMessage("sender_chain_edit_list"), "TITLE" => GetMessage("sender_chain_edit_list_title"), "LINK" => "/bitrix/admin/sender_mailing_trig_admin.php?MAILING_ID=" . $MAILING_ID . "&lang=" . LANG, "ICON" => "btn_list"));
if ($ID > 0 && $POST_RIGHT >= "W") {
Beispiel #9
0
                $trigger->setFieldPrefix('ENDPOINT[' . $type . '][FIELDS]');
                $trigger->setFields($triggerListExists[$type]['FIELDS']);
                $triggerListExists[$type]['FORM'] = $trigger->getForm();
            }
        }
    }
    if ($REQUEST_METHOD == "POST" && !$isPostedFormProcessed && check_bitrix_sessid()) {
        $arError = array();
        $triggerListExists = array('START' => null, 'END' => null);
        foreach ($triggerListExists as $type => $value) {
            $trigger = \Bitrix\Sender\TriggerManager::getOnce($ENDPOINT[$type]);
            if ($trigger) {
                $triggerListExists[$type] = $ENDPOINT[$type] + \Bitrix\Sender\TriggerSettings::getArrayFromTrigger($trigger);
            }
        }
        $updateDb = \Bitrix\Sender\MailingTable::update($MAILING_ID, array('TRIGGER_FIELDS' => $triggerListExists));
        if (!$updateDb->isSuccess()) {
            $arError = array_merge($arError, $updateDb->getErrorMessages());
        }
        if (empty($arError)) {
            $isPostedFormProcessed = true;
            LocalRedirect('/bitrix/admin/sender_mailing_trig_edit.php?ID=' . $MAILING_ID . "&lang=" . LANGUAGE_ID);
        }
    }
}
if (!empty($arError)) {
    $message = new CAdminMessage(implode("<br>", $arError));
}
\CJSCore::Init(array("sender_admin"));
$title = GetMessage("sender_wizard_step_" . $step . $title_postfix . "_title");
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
Beispiel #10
0
				"more_url" => array("sender_contact_import.php"),
				"title" => GetMessage("mnu_sender_contact_admin_alt")
			),
			array(
				"text" => GetMessage("mnu_sender_template_admin"),
				"url" => "sender_template_admin.php?lang=".LANGUAGE_ID,
				"more_url" => array("sender_template_edit.php"),
				"title" => GetMessage("mnu_sender_template_admin_alt")
			),
		)
	);

	$arSiteMailing = array();
	if(CModule::IncludeModule('sender'))
	{
		$mailingListDb = \Bitrix\Sender\MailingTable::getList(array('filter' => array()));
		while ($mailing = $mailingListDb->fetch())
		{
			$arSiteMailing[] = array(
				"text" => htmlspecialcharsbx($mailing['NAME']),
				"title" => GetMessage("mnu_sender_site_mailing_one_alt"),
				"items_id" => "menu_sender_mailing_" . $mailing['ID'],
				"items" => array(
					array(
						"text" => GetMessage("mnu_sender_site_mailing_chain"),
						"url" => "sender_mailing_chain_admin.php?MAILING_ID=" . $mailing['ID'] . "&lang=" . LANGUAGE_ID,
						"title" => GetMessage("mnu_sender_site_mailing_chain_alt"),
						"more_url" => array("sender_mailing_chain_edit.php?MAILING_ID=" . $mailing['ID']),
					),
					array(
						"text" => GetMessage("mnu_sender_site_mailing_stat"),
Beispiel #11
0
 public static function getChainPersonalizeList($id)
 {
     $result = array();
     $mailingDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('ID', 'TRIGGER_FIELDS'), 'filter' => array('=IS_TRIGGER' => 'Y', '=ID' => $id)));
     if (!($mailing = $mailingDb->fetch())) {
         return $result;
     }
     $triggerFields = $mailing['TRIGGER_FIELDS'];
     if (!is_array($triggerFields)) {
         $triggerFields = array();
     }
     $settingsList = array();
     foreach ($triggerFields as $key => $point) {
         if (empty($point['CODE'])) {
             continue;
         }
         $point['IS_EVENT_OCCUR'] = true;
         $point['IS_PREVENT_EMAIL'] = false;
         $point['SEND_INTERVAL_UNIT'] = 'M';
         switch ($key) {
             case 'END':
                 $point['IS_TYPE_START'] = false;
                 break;
             case 'START':
             default:
                 $point['IS_TYPE_START'] = true;
         }
         $settingsList[] = new \Bitrix\Sender\TriggerSettings($point);
     }
     foreach ($settingsList as $settings) {
         /* @var \Bitrix\Sender\TriggerSettings $settings */
         if (!$settings->isTypeStart()) {
             continue;
         }
         $trigger = \Bitrix\Sender\TriggerManager::getOnce($settings->getEndpoint());
         if ($trigger) {
             $result = array_merge($result, $trigger->getPersonalizeList());
         }
     }
     return $result;
 }
if ($bVarsFromForm) {
    $DB->InitTableVarsForEdit("b_sender_mailing_chain", "", "str_");
}
\CJSCore::Init(array("sender_admin"));
$APPLICATION->SetTitle($ID > 0 ? GetMessage("sender_chain_edit_title_edit") . $ID : GetMessage("sender_chain_edit_title_add"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
$aMenu = array(array("TEXT" => GetMessage("sender_chain_edit_list"), "TITLE" => GetMessage("sender_chain_edit_list_title"), "LINK" => "/bitrix/admin/sender_mailing_chain_admin.php?MAILING_ID=" . $MAILING_ID . "&lang=" . LANG, "ICON" => "btn_list"));
if ($ID > 0 && $POST_RIGHT >= "W") {
    $aMenu[] = array("SEPARATOR" => "Y");
    $aMenu[] = array("TEXT" => GetMessage("sender_chain_edit_action_add"), "TITLE" => GetMessage("sender_chain_edit_action_add_title"), "LINK" => "/bitrix/admin/sender_mailing_chain_edit.php?MAILING_ID=" . $MAILING_ID . "&lang=" . LANG, "ICON" => "btn_new");
    $aMenu[] = array("TEXT" => GetMessage("sender_chain_edit_action_del"), "TITLE" => GetMessage("sender_chain_edit_action_del_title"), "LINK" => "javascript:if(confirm('" . GetMessage("sender_chain_edit_action_del_confirm") . "'))window.location='/bitrix/admin/sender_mailing_chain_admin.php?MAILING_ID=" . $MAILING_ID . "&ID=" . $ID . "&action=delete&lang=" . LANGUAGE_ID . "&" . bitrix_sessid_get() . "';", "ICON" => "btn_delete");
    $aMenu[] = array("SEPARATOR" => "Y");
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
$arMailing = \Bitrix\Sender\MailingTable::getRowById($MAILING_ID);
?>

<?php 
if ($_REQUEST["mess"] == "ok" && $ID > 0) {
    CAdminMessage::ShowMessage(array("MESSAGE" => GetMessage("sender_chain_edit_saved"), "TYPE" => "OK"));
}
if ($message) {
    echo $message->Show();
}
if (!isset($SEND_TYPE)) {
    if ($str_REITERATE == 'Y') {
        $SEND_TYPE = 'REITERATE';
    } elseif (!empty($str_AUTO_SEND_TIME)) {
        $SEND_TYPE = 'TIME';
    } elseif ($ID > 0) {
Beispiel #13
0
            if (!$dataUpdateDb->isSuccess()) {
                $LAST_ERROR = $dataUpdateDb->getErrorMessages();
                $LAST_ERROR = $LAST_ERROR[0];
                $lAdmin->AddGroupError(GetMessage("rub_save_error") . " " . $LAST_ERROR, $ID);
                $DB->Rollback();
            }
        } else {
            $lAdmin->AddGroupError(GetMessage("rub_save_error") . " " . GetMessage("rub_no_rubric"), $ID);
            $DB->Rollback();
        }
        $DB->Commit();
    }
}
if (($arID = $lAdmin->GroupAction()) && $POST_RIGHT == "W") {
    if ($_REQUEST['action_target'] == 'selected') {
        $dataListDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('ID'), 'filter' => $arFilter, 'order' => array($by => $order)));
        while ($arRes = $dataListDb->fetch()) {
            $arID[] = $arRes['ID'];
        }
    }
    foreach ($arID as $ID) {
        if (strlen($ID) <= 0) {
            continue;
        }
        $ID = IntVal($ID);
        $dataPrimary = array('ID' => $ID);
        switch ($_REQUEST['action']) {
            case "delete":
                @set_time_limit(0);
                $DB->StartTransaction();
                $dataDeleteDb = \Bitrix\Sender\TemplateTable::delete($dataPrimary);
    /**
     * @return string
     * @throws \Bitrix\Main\ArgumentException
     */
    public function getForm()
    {
        $mailingInput = '<select name="' . $this->getFieldName('MAILING_ID') . '">';
        $mailingDb = MailingTable::getList(array('select' => array('ID', 'NAME'), 'order' => array('NAME' => 'ASC', 'ID' => 'DESC')));
        while ($mailing = $mailingDb->fetch()) {
            $inputSelected = $mailing['ID'] == $this->getFieldValue('MAILING_ID') ? 'selected' : '';
            $mailingInput .= '<option value="' . $mailing['ID'] . '" ' . $inputSelected . '>';
            $mailingInput .= htmlspecialcharsbx($mailing['NAME']);
            $mailingInput .= '</option>';
        }
        $mailingInput .= '</select>';
        $arBooleanValues = array('' => Loc::getMessage('sender_connector_recipient_all'), 'Y' => Loc::getMessage('sender_connector_recipient_y'), 'N' => Loc::getMessage('sender_connector_recipient_n'));
        $sentInput = '<select name="' . $this->getFieldName('SEND') . '">';
        foreach ($arBooleanValues as $k => $v) {
            $inputSelected = $k == $this->getFieldValue('SEND') ? 'selected' : '';
            $sentInput .= '<option value="' . $k . '" ' . $inputSelected . '>';
            $sentInput .= htmlspecialcharsbx($v);
            $sentInput .= '</option>';
        }
        $sentInput .= '</select>';
        $readInput = '<select name="' . $this->getFieldName('READ') . '">';
        foreach ($arBooleanValues as $k => $v) {
            $inputSelected = $k == $this->getFieldValue('READ') ? 'selected' : '';
            $readInput .= '<option value="' . $k . '" ' . $inputSelected . '>';
            $readInput .= htmlspecialcharsbx($v);
            $readInput .= '</option>';
        }
        $readInput .= '</select>';
        $clickInput = '<select name="' . $this->getFieldName('CLICK') . '">';
        foreach ($arBooleanValues as $k => $v) {
            $inputSelected = $k == $this->getFieldValue('CLICK') ? 'selected' : '';
            $clickInput .= '<option value="' . $k . '" ' . $inputSelected . '>';
            $clickInput .= htmlspecialcharsbx($v);
            $clickInput .= '</option>';
        }
        $clickInput .= '</select>';
        $unsubInput = '<select name="' . $this->getFieldName('UNSUB') . '">';
        foreach ($arBooleanValues as $k => $v) {
            $inputSelected = $k == $this->getFieldValue('UNSUB') ? 'selected' : '';
            $unsubInput .= '<option value="' . $k . '" ' . $inputSelected . '>';
            $unsubInput .= htmlspecialcharsbx($v);
            $unsubInput .= '</option>';
        }
        $unsubInput .= '</select>';
        return '
			<table>
				<tr>
					<td>' . Loc::getMessage('sender_connector_recipient_mailing') . '</td>
					<td>' . $mailingInput . '</td>
				</tr>
				<tr>
					<td>' . Loc::getMessage('sender_connector_recipient_sent') . '</td>
					<td>' . $sentInput . '</td>
				</tr>
				<tr>
					<td>' . Loc::getMessage('sender_connector_recipient_read') . '</td>
					<td>' . $readInput . '</td>
				</tr>
				<tr>
					<td>' . Loc::getMessage('sender_connector_recipient_click') . '</td>
					<td>' . $clickInput . '</td>
				</tr>
				<tr>
					<td>' . Loc::getMessage('sender_connector_recipient_unsub') . '</td>
					<td>' . $unsubInput . '</td>
				</tr>
			</table>
		';
    }
            case "activate":
            case "deactivate":
                $arFields["ACTIVE"] = $_REQUEST['action'] == "activate" ? "Y" : "N";
                $dataUpdateDb = \Bitrix\Sender\MailingTable::update($dataPrimary, $arFields);
                if (!$dataUpdateDb->isSuccess()) {
                    $LAST_ERROR = $dataUpdateDb->getErrorMessages();
                    $LAST_ERROR = $LAST_ERROR[0];
                    $lAdmin->AddGroupError(GetMessage("rub_save_error") . $LAST_ERROR, $ID);
                }
                break;
        }
    }
}
// runtime: RECIPIENT_CNT = include_cnt - exclude_cnt = group_cnt * (2*exclude_int - 1)
$arFilter['IS_TRIGGER'] = 'Y';
$groupListDb = \Bitrix\Sender\MailingTable::getList(array('select' => array('ID', 'NAME', 'SORT', 'DATE_INSERT', 'ACTIVE', 'SITE_ID'), 'filter' => $arFilter, 'order' => array($by => $order)));
$rsData = new CAdminResult($groupListDb, $sTableID);
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("rub_nav")));
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "ID", "align" => "right", "default" => true), array("id" => "NAME", "content" => GetMessage("rub_name"), "sort" => "NAME", "default" => true), array("id" => "SORT", "content" => GetMessage("rub_sort"), "sort" => "SORT", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("rub_act"), "sort" => "ACTIVE", "default" => true), array("id" => "SITE_ID", "content" => GetMessage("rub_site"), "sort" => "SITE_ID", "default" => true)));
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    $row->AddInputField("NAME", array("size" => 20));
    $row->AddViewField("NAME", '<a href="sender_mailing_wizard.php?step=trig_mailing&IS_TRIGGER=Y&MAILING_ID=' . $f_ID . '&amp;lang=' . LANGUAGE_ID . '">' . $f_NAME . '</a>');
    $row->AddInputField("SORT", array("size" => 6));
    $row->AddCheckField("ACTIVE");
    $row->AddCheckField("IS_PUBLIC");
    $row->AddViewField("RECIPIENT_CNT", '<a href="sender_mailing_recipient_admin.php?MAILING_ID=' . $f_ID . '&amp;lang=' . LANG . '">' . $f_RECIPIENT_CNT . '</a>');
    $arActions = array();
    $arActions[] = array("ICON" => "edit", "DEFAULT" => true, "TEXT" => GetMessage("rub_edit"), "ACTION" => $lAdmin->ActionRedirect("sender_mailing_wizard.php?step=trig_mailing&IS_TRIGGER=Y&MAILING_ID=" . $f_ID . "&lang=" . LANGUAGE_ID));
    if ($POST_RIGHT >= "W") {
Beispiel #16
0
 /**
  * @param $arData
  * @return bool
  * @throws \Bitrix\Main\ArgumentException
  */
 public static function unsubscribe($arData)
 {
     $result = false;
     if (isset($arData['TEST']) && $arData['TEST'] == 'Y') {
         return true;
     }
     $postingDb = PostingRecipientTable::getList(array('select' => array('POSTING_ID', 'POSTING_MAILING_ID' => 'POSTING.MAILING_ID'), 'filter' => array('ID' => $arData['RECIPIENT_ID'], 'EMAIL' => $arData['EMAIL'])));
     $arPosting = $postingDb->fetch();
     $mailingDb = MailingTable::getList(array('select' => array('ID'), 'filter' => array('ID' => $arData['UNSUBSCRIBE_LIST'])));
     while ($mailing = $mailingDb->fetch()) {
         $unsub = null;
         if ($arPosting && $arPosting['POSTING_MAILING_ID'] == $mailing['ID']) {
             $unsub = array('POSTING_ID' => $arPosting['POSTING_ID'], 'RECIPIENT_ID' => $arData['RECIPIENT_ID']);
         } else {
             $mailingPostingDb = PostingRecipientTable::getList(array('select' => array('RECIPIENT_ID' => 'ID', 'POSTING_ID'), 'filter' => array('POSTING.MAILING_ID' => $mailing['ID'], 'EMAIL' => $arData['EMAIL'])));
             if ($arMailingPosting = $mailingPostingDb->fetch()) {
                 $unsub = $arMailingPosting;
             }
         }
         if (!empty($unsub)) {
             $unsubExists = PostingUnsubTable::getRowById($unsub);
             if (!$unsubExists) {
                 PostingUnsubTable::add($unsub);
             }
             $result = true;
         }
     }
     return $result;
 }