function SendImmediate($event, $lid, $arFields, $Duplicate = "Y", $message_id = "") { $flds = ""; if (is_array($arFields)) { foreach ($arFields as $key => $value) { if ($flds) { $flds .= "&"; } $flds .= CEvent::fieldencode($key) . "=" . CEvent::fieldencode($value); } } $arLocalFields = array("EVENT_NAME" => $event, "C_FIELDS" => $flds, "LID" => is_array($lid) ? implode(",", $lid) : $lid, "DUPLICATE" => $Duplicate != "N" ? "Y" : "N", "MESSAGE_ID" => intval($message_id) > 0 ? intval($message_id) : "", "DATE_INSERT" => GetTime(time(), "FULL"), "ID" => "0"); return CEvent::HandleEvent($arLocalFields); }
function ExecuteEvents() { $err_mess = "<br>Class: CEvent<br>File: " . __FILE__ . "<br>Function: CheckEvents<br>Line: "; global $DB, $CACHE_MANAGER; if (defined("BX_FORK_AGENTS_AND_EVENTS_FUNCTION")) { if (CMain::ForkActions(array("CEvent", "ExecuteEvents"))) { return ""; } } $uniq = COption::GetOptionString("main", "server_uniq_id", ""); if (strlen($uniq) <= 0) { $uniq = md5(uniqid(rand(), true)); COption::SetOptionString("main", "server_uniq_id", $uniq); } $bulk = intval(COption::GetOptionString("main", "mail_event_bulk", 5)); if ($bulk <= 0) { $bulk = 5; } $strSql = "SELECT 'x' " . "FROM b_event " . "WHERE SUCCESS_EXEC='N' " . "LIMIT 1"; $db_result_event = $DB->Query($strSql); if ($db_result_event->Fetch()) { $db_lock = $DB->Query("SELECT GET_LOCK('" . $uniq . "_event', 0) as L"); $ar_lock = $db_lock->Fetch(); if ($ar_lock["L"] == "0") { return ""; } } else { if (CACHED_b_event !== false) { $CACHE_MANAGER->Set("events", true); } return ""; } $strSql = "\n\t\t\tSELECT ID, C_FIELDS, EVENT_NAME, MESSAGE_ID, LID, DATE_FORMAT(DATE_INSERT, '%d.%m.%Y %H:%i:%s') as DATE_INSERT, DUPLICATE\n\t\t\tFROM b_event\n\t\t\tWHERE SUCCESS_EXEC='N'\n\t\t\tORDER BY ID\n\t\t\tLIMIT " . $bulk; $rsMails = $DB->Query($strSql); while ($arMail = $rsMails->Fetch()) { $flag = CEvent::HandleEvent($arMail); /* '0' - нет шаблонов (не нужно было ничего отправл¤ть) 'Y' - все отправлены 'F' - все не смогли быть отправлены 'P' - частично отправлены */ $strSql = "\n\t\t\t\tUPDATE b_event SET\n\t\t\t\t\tDATE_EXEC = now(),\n\t\t\t\t\tSUCCESS_EXEC = '{$flag}'\n\t\t\t\tWHERE\n\t\t\t\t\tID = " . $arMail["ID"]; $DB->Query($strSql, false, $err_mess . __LINE__); } $DB->Query("SELECT RELEASE_LOCK('" . $uniq . "_event')"); }
/** * <p>Отправляет сообщение немедленно. В отличие от <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cevent/send.php">CEvent::Send</a> не возвращает идентификатор созданного сообщения. При отправке сообщения данным методом запись в таблицу <b>b_event</b> не производится.</p> * * * * * @param $even $t Идентификатор типа почтового события. * * * * @param $li $d Идентификатор сайта, либо массив идентификаторов сайта. * * * * @param $arField $s Массив полей типа почтового события идентификатор которого * задается в параметре <i>event_type</i>. Массив имеет следующий формат: * array("поле"=>"значение" [, ...]). * * * * @param $Duplicat $e = "Y" Отправить ли копию письма на адрес указанный в настройках * главного модуля в поле "<b>E-Mail адрес или список адресов через * запятую на который будут дублироваться все исходящие * сообщения</b>". <br> Необязательный. По умолчанию "Y". * * * * @param $message_i $d = "" Идентификатор почтового шаблона по которому будет отправлено * письмо. <br> Если данный параметр не задан, либо равен "", то письма * будут отправлены по всем шаблонам привязанным к типу почтового * события, идентификатор которого задается в параметре <i>event_type</i>, а * также привязанных к сайту(ам) идентификатор которого указан в * параметре <i>site</i>. <br> Необязательный. По умолчанию - "". * * * * @return mixed * * * <h4>Example</h4> * <pre> * <br><br> * </pre> * * * * <h4>See Also</h4> * <a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cevent/sendimmediate.php * @author Bitrix */ public static function SendImmediate($event, $lid, $arFields, $Duplicate = "Y", $message_id = "") { foreach (GetModuleEvents("main", "OnBeforeEventAdd", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array(&$event, &$lid, &$arFields, &$message_id)) === false) { return false; } } $flds = ""; if (is_array($arFields)) { foreach ($arFields as $key => $value) { if ($flds) { $flds .= "&"; } $flds .= CEvent::fieldencode($key) . "=" . CEvent::fieldencode($value); } } $arLocalFields = array("EVENT_NAME" => $event, "C_FIELDS" => $flds, "LID" => is_array($lid) ? implode(",", $lid) : $lid, "DUPLICATE" => $Duplicate != "N" ? "Y" : "N", "MESSAGE_ID" => intval($message_id) > 0 ? intval($message_id) : "", "DATE_INSERT" => GetTime(time(), "FULL"), "ID" => "0"); return CEvent::HandleEvent($arLocalFields); }