в общем написал такое:
Код |
---|
function MAILSEND3DAY_START(){
if (CModule::IncludeModule("sale")):
$data_n=date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n", strtotime('-3 days')), date("j", strtotime('-3 days')), date("Y"), strtotime('-3 days'))); // начальная дата -3дня
$data_k=date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("n", strtotime('-2 days')), date("j", strtotime('-2 days')), date("Y"), strtotime('-2 days'))); // конечная дата -2дня
$arMails = Array('test@test.ru');
$arFilter = Array(">=DATE_INSERT" => $data_n,"<DATE_INSERT" => $data_k,"!COMMENTS" => 'MAILSEND3DAY');
$arSelect = Array("ID","USER_NAME","USER_EMAIL","COMMENTS");
$rsSales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter, false, array("nTopCount"=> 100), $arSelect);
while ($arSales = $rsSales->Fetch())
{
if ((CSaleOrder::CommentsOrder($arSales['ID'], "MAILSEND3DAY"))&&(!in_array($arSales['USER_EMAIL'], $arMails)))
{
// записали(обновили) комментарий - пометка чтобы исключить при повторной обработке этого заказа
// выполняем почтовое событие - отправка почты
$arSend = array('EMAIL' => $arSales['USER_EMAIL']);
CEvent::Send('MAILSENDORDER',SITE_ID,$arSend,'Y',30);
$arMails[]=$arSales['USER_EMAIL'];
}
}
endif;
}
|
вызываю ее из другой функции где проверяю на запуск один раз в день
- сделал через файлик (сегодняшняя дата), хорошо было бы конечно избавиться от этого
Код |
---|
function MAILSEND3DAY(){
// открываем файлик, если там не "сегодня", то выполняем функцию поиска и отправки, и помечаем в файлике "сегодня"
$file_name=$_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/MAILSEND3DAY.txt';
$file = fopen($file_name,"rt");$file_str = fgets($file, 9);fclose($file);
if ($file_str!=date("Ymd"))
{
$file = fopen($file_name,"w");fwrite($file, date("Ymd"));fclose($file);
MAILSEND3DAY_START();
}
}
MAILSEND3DAY();
|
и это все находиться в init.php
пока остановился на этом...
т.е. вторую функцию можно заменить этим CAgent::AddAgent("CMyModule::MAILSEND3DAY()", "my_module", "Y", 86400); ?
(предварительно основную функцию поместить в "Class CMyModule{}" )
- а куда поместить сам агент? там же в init.php?