示例#1
0
文件: event.php 项目: ASDAFF/bitrix-5
 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);
 }
示例#2
0
 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')");
 }
示例#3
0
 /**
  * <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("поле"=&gt;"значение" [, ...]).
  *
  *
  *
  * @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);
 }