26 $this->LAST_ERROR =
"";
31 $this->LAST_ERROR .=
GetMessage(
"BAD_EMAIL_FROM") .
"<br>";
32 $arMsg[] = [
"id" =>
"EMAIL_FROM",
"text" =>
GetMessage(
"BAD_EMAIL_FROM")];
36 $this->LAST_ERROR .=
GetMessage(
"BAD_EMAIL_TO") .
"<br>";
37 $arMsg[] = [
"id" =>
"EMAIL_TO",
"text" =>
GetMessage(
"BAD_EMAIL_TO")];
42 $this->LAST_ERROR .=
GetMessage(
"MAIN_BAD_EVENT_NAME_NA") .
"<br>";
43 $arMsg[] = [
"id" =>
"EVENT_NAME",
"text" =>
GetMessage(
"MAIN_BAD_EVENT_NAME_NA")];
50 $this->LAST_ERROR .=
GetMessage(
"BAD_EVENT_TYPE") .
"<br>";
51 $arMsg[] = [
"id" =>
"EVENT_NAME",
"text" =>
GetMessage(
"BAD_EVENT_TYPE")];
66 $this->LAST_ERROR .=
GetMessage(
"MAIN_BAD_SITE_NA") .
"<br>";
67 $arMsg[] = [
"id" =>
"LID",
"text" =>
GetMessage(
"MAIN_BAD_SITE_NA")];
78 $r = CSite::GetByID($v);
81 $this->LAST_ERROR .=
"'" . $v .
"' - " .
GetMessage(
"MAIN_EVENT_BAD_SITE") .
"<br>";
82 $arMsg[] = [
"id" =>
"LID",
"text" =>
GetMessage(
"MAIN_EVENT_BAD_SITE")];
93 if ($this->LAST_ERROR <>
'')
131 foreach ($arLID as $v)
137 $arATTACHMENT_FILE = [];
140 if (is_array(
$arFields[
"ATTACHMENT_FILE"]))
142 $arATTACHMENT_FILE =
$arFields[
"ATTACHMENT_FILE"];
146 $arATTACHMENT_FILE[] =
$arFields[
"ATTACHMENT_FILE"];
149 $arATTACHMENT_FILE_tmp = [];
150 foreach ($arATTACHMENT_FILE as $v)
153 $arATTACHMENT_FILE_tmp[] = $v;
155 $arATTACHMENT_FILE = $arATTACHMENT_FILE_tmp;
161 'EVENT_MESSAGE_TYPE_ID',
'EVENT_MESSAGE_TYPE_ID',
162 'EVENT_MESSAGE_TYPE_NAME',
'EVENT_MESSAGE_TYPE_EVENT_NAME',
163 'SITE_ID',
'EVENT_TYPE',
165 foreach ($arDeleteFields as $deleteField)
167 if (array_key_exists($deleteField,
$arFields))
183 static::UpdateSites(
$ID, $arLID);
186 if (!empty($arATTACHMENT_FILE))
188 foreach ($arATTACHMENT_FILE as $file_id)
191 'EVENT_MESSAGE_ID' =>
$ID,
192 'FILE_ID' => $file_id,
226 foreach ($arLID as $v)
232 $arATTACHMENT_FILE = [];
235 if (is_array(
$arFields[
"ATTACHMENT_FILE"]))
237 $arATTACHMENT_FILE =
$arFields[
"ATTACHMENT_FILE"];
241 $arATTACHMENT_FILE[] =
$arFields[
"ATTACHMENT_FILE"];
244 $arATTACHMENT_FILE_tmp = [];
245 foreach ($arATTACHMENT_FILE as $v)
248 $arATTACHMENT_FILE_tmp[] = $v;
250 $arATTACHMENT_FILE = $arATTACHMENT_FILE_tmp;
266 static::UpdateSites(
$ID, $arLID);
269 if (!empty($arATTACHMENT_FILE))
271 foreach ($arATTACHMENT_FILE as $file_id)
274 'EVENT_MESSAGE_ID' =>
$ID,
275 'FILE_ID' => $file_id,
285 Mail\Internal\EventMessageSiteTable::deleteByFilter([
'=EVENT_MESSAGE_ID' =>
$ID]);
289 'filter' => [
'=LID' => $arLID],
291 while ($arResultSite = $resultDb->fetch())
294 'EVENT_MESSAGE_ID' =>
$ID,
295 'SITE_ID' => $arResultSite[
'LID'],
308 public static function GetSite($event_message_id)
310 $event_message_id = intval($event_message_id);
313 'select' => [
'*',
'' =>
'SITE.*'],
314 'filter' => [
'=EVENT_MESSAGE_ID' => $event_message_id],
317 'data_type' =>
'Bitrix\Main\Site',
318 'reference' => [
'=this.SITE_ID' =>
'ref.LID'],
326 public static function GetLang($event_message_id)
340 foreach (
GetModuleEvents(
"main",
"OnBeforeEventMessageDelete",
true) as $arEvent)
344 $err =
GetMessage(
"MAIN_BEFORE_DEL_ERR1") .
' ' . $arEvent[
'TO_NAME'];
347 $err .=
': ' . $ex->GetString();
355 foreach (
GetModuleEvents(
"main",
"OnEventMessageDelete",
true) as $arEvent)
360 Mail\Internal\EventMessageSiteTable::deleteByFilter([
'=EVENT_MESSAGE_ID' =>
$ID]);
366 $res->affectedRowsCount = 1;
378 if (!isset(
$data[
'EVENT_MESSAGE_TYPE_ID']) || intval(
$data[
'EVENT_MESSAGE_TYPE_ID']) <= 0)
384 $data[
'EVENT_TYPE'] =
'[ ' .
$data[
'EVENT_MESSAGE_TYPE_EVENT_NAME'] .
' ] ' .
$data[
'EVENT_MESSAGE_TYPE_NAME'];
386 unset(
$data[
'EVENT_MESSAGE_TYPE_ID']);
387 unset(
$data[
'EVENT_MESSAGE_TYPE_NAME']);
388 unset(
$data[
'EVENT_MESSAGE_TYPE_EVENT_NAME']);
391 if (!empty(
$data[
'ADDITIONAL_FIELD']) && is_array(
$data[
'ADDITIONAL_FIELD']))
393 foreach (
$data[
'ADDITIONAL_FIELD'] as $index => $aField)
396 $oldKeyName =
"FIELD{$index}_NAME";
397 $oldKeyValue =
"FIELD{$index}_VALUE";
398 if (!array_key_exists($oldKeyName,
$data))
403 if (!empty(
$data[$oldKeyName]))
408 $data[$oldKeyName] = $aField[
'NAME'];
409 $data[$oldKeyValue] = $aField[
'VALUE'];
424 'TYPE_ID' =>
'EVENT_NAME',
425 'FROM' =>
'EMAIL_FROM',
441 if ((
string)
$val ==
'' ||
$val ===
"NOT_REF")
454 $arSearch[$operation . $field] =
$val;
463 $arSearch[$operation . $field] =
$val;
469 $operation .
'EVENT_NAME' =>
$val,
470 $operation .
'EVENT_MESSAGE_TYPE.NAME' =>
$val
474 $arSqlSearch[] =
"M.TIMESTAMP_X>=TO_DATE('" .
FmtDate(
$val,
"D.M.Y") .
" 00:00:00','dd.mm.yyyy hh24:mi:ss')";
475 $arSearch[
'>=TIMESTAMP_X'] =
$val .
" 00:00:00";
478 $arSqlSearch[] =
"M.TIMESTAMP_X<=TO_DATE('" .
FmtDate(
$val,
"D.M.Y") .
" 23:59:59','dd.mm.yyyy hh24:mi:ss')";
479 $arSearch[
'<=TIMESTAMP_X'] =
$val .
" 23:59:59";
485 $arSearch[
"=SITE_ID"] =
$val;
492 $arSearch[
'=' .
$key] = (
$val ==
"text") ?
'text' :
'html';
504 $strSqlOrder =
"ACTIVE";
506 elseif ($by ==
"event_name")
508 $strSqlOrder =
"EVENT_NAME";
512 $strSqlOrder =
"EMAIL_FROM";
516 $strSqlOrder =
"EMAIL_TO";
520 $strSqlOrder =
"BCC";
522 elseif ($by ==
"body_type")
524 $strSqlOrder =
"BODY_TYPE";
528 $strSqlOrder =
"SUBJECT";
530 elseif ($by ==
"language_id")
532 $strSqlOrder =
"LANGUAGE_ID";
541 $strSqlOrderBy =
"DESC";
545 $strSqlOrderBy =
"ASC";
550 'EVENT_MESSAGE_TYPE_ID' =>
'EVENT_MESSAGE_TYPE.ID',
551 'EVENT_MESSAGE_TYPE_NAME' =>
'EVENT_MESSAGE_TYPE.NAME',
552 'EVENT_MESSAGE_TYPE_EVENT_NAME' =>
'EVENT_MESSAGE_TYPE.EVENT_NAME',
557 $arSelect[
'SITE_ID'] =
'EVENT_MESSAGE_SITE.SITE_ID';
561 $arSelect[
'SITE_ID'] =
'LID';
565 'select' => $arSelect,
566 'filter' => $arSearch,
567 'order' => [$strSqlOrder => $strSqlOrderBy],
569 'EVENT_MESSAGE_TYPE' => [
570 'data_type' =>
'Bitrix\Main\Mail\Internal\EventType',
571 'reference' => [
'=this.EVENT_NAME' =>
'ref.EVENT_NAME',
'=ref.LID' =>
new \
Bitrix\
Main\
DB\
SqlExpression(
'?', LANGUAGE_ID)],
575 $resultDb->addFetchDataModifier([
'CEventMessage',
'GetListDataModifier']);
603 $aMsg[] = [
"id" =>
"EVENT_NAME_EMPTY",
"text" =>
GetMessage(
"EVENT_NAME_EMPTY")];
612 $aMsg[] = [
"id" =>
"LID_EMPTY",
"text" =>
GetMessage(
"LID_EMPTY")];
620 $aMsg[] = [
"id" =>
"EVENT_NAME_EXIST",
"text" => str_replace(
621 [
"#SITE_ID#",
"#EVENT_NAME#"],
631 $aMsg[] = [
"id" =>
"EVENT_ID_EMPTY",
"text" =>
GetMessage(
"EVENT_ID_EMPTY")];
636 $aMsg[] = [
"id" =>
"EVENT_TYPE_EMPTY",
"text" =>
GetMessage(
'EVENT_TYPE_EMPTY')];
661 ((
$res[
"EVENT_NAME"] !=
$ID[
"EVENT_NAME"]) || (
$res[
"LID"] !=
$ID[
"LID"]))) ||
665 $aMsg[] = [
"id" =>
"EVENT_NAME_EXIST",
"text" => str_replace(
666 [
"#SITE_ID#",
"#EVENT_NAME#"],
676 $aMsg[] = [
"id" =>
"ACTION_EMPTY",
"text" =>
GetMessage(
"ACTION_EMPTY")];
698 $arFields[
"EVENT_TYPE"] = EventTypeTable::TYPE_EMAIL;
717 if (is_array($arID) && !empty($arID))
721 if (in_array(
$key, [
"ID",
"LID",
"EVENT_NAME"]))
731 $affectedRowsCount = 0;
736 while ($arListId = $listDb->fetch())
739 $affectedRowsCount +=
$result->getAffectedRowsCount();
743 $res->affectedRowsCount = $affectedRowsCount;
753 if (!is_array($arID))
755 $arID = [
"EVENT_NAME" => $arID];
757 foreach ($arID as
$k => $v)
759 if (!in_array(mb_strtoupper(
$k), [
"ID",
"LID",
"EVENT_NAME",
"NAME",
"SORT"]))
769 $affectedRowsCount = 0;
774 while ($arListId = $listDb->fetch())
779 $affectedRowsCount++;
791 $res->affectedRowsCount = $affectedRowsCount;
801 $arSqlSearch = $arSqlOrder = [];
805 if ((
string)
$val ==
'')
815 $arSqlSearch[
"=EVENT_NAME"] = (string)
$val;
818 $arSqlSearch[
"=EVENT_TYPE"] = (string)
$val;
821 $arSqlSearch[
"=LID"] = (string)
$val;
824 $arSqlSearch[
"=ID"] = (int)
$val;
829 if (is_array($arOrder))
831 static $arFields = [
"ID" => 1,
"LID" => 1,
"EVENT_NAME" => 1,
"NAME" => 1,
"SORT" => 1];
832 foreach ($arOrder as $by => $ord)
834 $by = strtoupper($by);
835 $ord = strtoupper($ord);
838 $arSqlOrder[$by] = ($ord ==
"DESC" ?
"DESC" :
"ASC");
842 if (empty($arSqlOrder))
844 $arSqlOrder[
'ID'] =
'ASC';
848 'select' => [
'ID',
'LID',
'EVENT_NAME',
'EVENT_TYPE',
'NAME',
'DESCRIPTION',
'SORT'],
849 'filter' => $arSqlSearch,
850 'order' => $arSqlOrder,
860 if (isset(
$data[
'ID1']) && !isset(
$data[
'ID']))
866 if (isset(
$data[
'EVENT_NAME1']) && !isset(
$data[
'EVENT_NAME']))
869 unset(
$data[
'EVENT_NAME1']);
879 $arSearch = $arSearch1 = $arSearch2 = [];
884 if ((
string)
$val ==
'')
890 $key = mb_strtoupper($key_res[
"FIELD"]);
891 $strOperation = $key_res[
"OPERATION"];
892 $strNOperation = $key_res[
"NOPERATION"];
898 if ($strOperation ==
"LIKE")
902 $arSearch[] = [$strNOperation .
'EVENT_NAME' =>
$val];
906 if ($strOperation ==
"LIKE")
910 $arSearch1[] = [$strNOperation .
'EVENT_MESSAGE_TYPE.' .
$key =>
$val];
911 $arSearch2[] = [$strNOperation .
$key =>
$val];
914 $arSearch1[] = [$strNOperation .
'EVENT_MESSAGE_TYPE.' .
$key =>
$val];
915 $arSearch2[] = [$strNOperation .
$key =>
$val];
919 $arSearch1[] = [$strNOperation .
'EVENT_MESSAGE_TYPE.' .
$key =>
$val];
920 $arSearch2[] = [$strNOperation .
$key =>
$val];
924 $arSearch1[] = [$strNOperation .
"ID" =>
$val];
925 $arSearch2[] = [$strNOperation .
'EVENT_MESSAGE.ID' =>
$val];
930 if (is_array($arOrder))
932 foreach ($arOrder as $by =>
$order)
934 $by = mb_strtoupper($by);
937 if ($by ==
"EVENT_NAME" || $by ==
"ID")
939 $arSqlOrder[
"EVENT_NAME"] =
"EVENT_NAME1 " .
$order;
943 if (empty($arSqlOrder))
945 $arSqlOrder[
"EVENT_NAME"] =
"EVENT_NAME1 ASC";
947 $strSqlOrder =
" ORDER BY " . implode(
", ", $arSqlOrder);
949 $arSearch[
'!EVENT_NAME'] =
null;
950 $arQuerySelect = [
'ID1' =>
'EVENT_NAME',
'EVENT_NAME1' =>
'EVENT_NAME'];
952 $query1->setSelect($arQuerySelect);
953 $query1->setFilter(array_merge($arSearch, $arSearch1));
954 $query1->registerRuntimeField(
'EVENT_MESSAGE_TYPE', [
955 'data_type' =>
'Bitrix\Main\Mail\Internal\EventType',
956 'reference' => [
'=this.EVENT_NAME' =>
'ref.EVENT_NAME'],
960 $query2->setSelect($arQuerySelect);
961 $query2->setFilter(array_merge($arSearch, $arSearch2));
962 $query2->registerRuntimeField(
'EVENT_MESSAGE', [
963 'data_type' =>
'Bitrix\Main\Mail\Internal\EventMessage',
964 'reference' => [
'=this.EVENT_NAME' =>
'ref.EVENT_NAME'],
968 $strSql = $query1->getQuery() .
" UNION " . $query2->getQuery() .
" " . $strSqlOrder;
970 $db_res->addFetchDataModifier([
'CEventType',
'GetListExFetchDataModifier']);
982 'filter' => [
'=LID' => $LID,
'=EVENT_NAME' =>
$ID],
991 if (str_starts_with(
$key,
"!"))
998 if (str_starts_with(
$key,
"+"))
1004 if (str_starts_with(
$key,
">="))
1007 $strOperation =
">=";
1008 $strNOperation = ($strNegative ==
"Y" ?
'<' : $strOperation);
1013 $strOperation =
">";
1014 $strNOperation = ($strNegative ==
"Y" ?
'<=' : $strOperation);
1019 $strOperation =
"<=";
1020 $strNOperation = ($strNegative ==
"Y" ?
'>' : $strOperation);
1025 $strOperation =
"<";
1026 $strNOperation = ($strNegative ==
"Y" ?
'>=' : $strOperation);
1031 $strOperation =
"IN";
1032 $strNOperation =
'';
1037 $strOperation =
"LIKE";
1038 $strNOperation = ($strNegative ==
"Y" ?
'!=%' :
'=%');
1043 $strOperation =
"QUERY";
1044 $strNOperation =
'';
1048 $strOperation =
"=";
1049 $strNOperation = ($strNegative ==
"Y" ?
'!=' :
'=');
1052 return [
"FIELD" =>
$key,
"NEGATIVE" => $strNegative,
"OPERATION" => $strOperation,
"NOPERATION" => $strNOperation,
"OR_NULL" => $strOrNull];
1064 $language = (defined(
"LANGUAGE_ID") ? LANGUAGE_ID :
'en');
1071 parent::__construct(
$res);
1080 if (
$res = parent::Fetch())
1082 if ($this->type !=
"none")
1084 $eventType = EventTypeTable::TYPE_EMAIL;
1086 if ($db_res_ && $res_ = $db_res_->Fetch())
1090 $arr[$res_[
"ID"]] = $res_;
1091 $arr_lid[] = $res_[
"LID"];
1092 $arr_lids[$res_[
"LID"]] = $res_;
1093 $eventType = $res_[
"EVENT_TYPE"];
1095 while ($res_ = $db_res_->Fetch());
1098 $res[
"LID"] = $arr_lid;
1099 $res[
"EVENT_TYPE"] = $eventType;
1101 $res[
"NAME"] = empty($arr_lids[$this->LID][
"NAME"]) ? $arr_lids[
"en"][
"NAME"] : $arr_lids[
$this->LID][
"NAME"];
1102 $res[
"SORT"] = empty($arr_lids[$this->LID][
"SORT"]) ? $arr_lids[
"en"][
"SORT"] : $arr_lids[
$this->LID][
"SORT"];
1103 $res[
"DESCRIPTION"] = empty($arr_lids[$this->LID][
"DESCRIPTION"]) ? $arr_lids[
"en"][
"DESCRIPTION"] : $arr_lids[
$this->LID][
"DESCRIPTION"];
1105 if ($this->type !=
"type")
1109 if ($db_res_ && $res_ = $db_res_->Fetch())
1113 $arr[$res_[
"ID"]] = $res_;
1115 while ($res_ = $db_res_->Fetch());
1131 if ($this->affectedRowsCount !==
false)
1137 return parent::AffectedRowsCount();
__construct($res, $arParams=[])
static getConnection($name="")
static getList(array $parameters=array())
static update($primary, array $data)
static GetSite($event_message_id)
static GetLang($event_message_id)
CheckFields($arFields, $ID=false)
static UpdateSites(int $ID, array $arLID)
static GetListDataModifier($data)
static GetList($by='id', $order='desc', $arFilter=[])
static GetFilterOperation($key)
static CheckFields($arFields=[], $action="ADD", $ID=[])
static GetByID($ID, $LID)
static GetList($arFilter=[], $arOrder=[])
static Update($arID=[], $arFields=[])
static GetListEx($arOrder=[], $arFilter=[], $arParams=[])
static GetListExFetchDataModifier($data)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ExecuteModuleEventEx($arEvent, $arParams=[])
FmtDate($str_date, $format=false, $site=false, $bSearchInSitesOnly=false)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"