/** * @param Entity\Event $event * @return Entity\EventResult */ public static function onAfterDelete(Entity\Event $event) { $result = new Entity\EventResult(); $data = $event->getParameters(); $primary = array('MAILING_ID' => $data['primary']['ID']); MailingGroupTable::delete($primary); MailingChainTable::delete($primary); PostingTable::delete($primary); return $result; }
$dataListDb = \Bitrix\Sender\MailingChainTable::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\MailingChainTable::delete($dataPrimary); if (!$dataDeleteDb->isSuccess()) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("sender_mailing_chain_adm_del_error"), $ID); } $DB->Commit(); break; } } } $groupListDb = \Bitrix\Sender\MailingChainTable::getList(array('select' => array('ID', 'MAILING_ID', 'POSTING_ID', 'CREATED_BY', 'STATUS', 'REITERATE', 'LAST_EXECUTED', 'EMAIL_FROM', 'AUTO_SEND_TIME', 'DAYS_OF_MONTH', 'DAYS_OF_WEEK', 'TIMES_OF_DAY', 'NAME' => 'SUBJECT'), 'filter' => $arFilter, 'order' => array($by => $order))); $rsData = new CAdminResult($groupListDb, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("sender_mailing_chain_adm_nav"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "ID", "align" => "right", "default" => true), array("id" => "NAME", "content" => GetMessage("sender_mailing_chain_adm_field_name"), "sort" => "NAME", "default" => true), array("id" => "CREATED_BY", "content" => GetMessage("sender_mailing_chain_adm_field_created_by"), "sort" => "CREATED_BY", "default" => true), array("id" => "STATUS", "content" => GetMessage("sender_mailing_chain_adm_field_status"), "sort" => "STATUS", "default" => true), array("id" => "EMAIL_FROM", "content" => GetMessage("sender_mailing_chain_adm_field_email_from"), "sort" => "EMAIL_FROM", "default" => false), array("id" => "REITERATE", "content" => GetMessage("sender_mailing_chain_adm_field_reiterate"), "sort" => "REITERATE", "default" => false), array("id" => "AUTO_SEND_TIME", "content" => GetMessage("sender_mailing_chain_adm_field_auto_send_time"), "sort" => "AUTO_SEND_TIME", "default" => false))); while ($arRes = $rsData->NavNext(true, "f_")) {
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; }