46 $arActionVars = explode(
"&", $ACTION_VARS);
47 $countAr =
count($arActionVars);
48 for(
$i=0;
$i<$countAr;
$i++)
50 $v = $arActionVars[
$i];
51 if($pos = mb_strpos($v,
"="))
52 ${mb_substr($v, 0, $pos)} = urldecode(mb_substr($v, $pos + 1));
55 if(!CModule::IncludeModule(
"support"))
58 if ($W_SUPPORT_SITE_ID <>
'')
60 $rs = CSite::GetByID($W_SUPPORT_SITE_ID);
68 $sourceMail = COption::GetOptionString(
"support",
"SOURCE_MAIL");
70 if(!(
$ar = $dbr->Fetch()))
73 $TICKET_SOURCE_ID =
$ar[
"ID"];
74 $ID = $arMessageFields[
"ID"];
75 $message_email = ($arMessageFields[
"FIELD_REPLY_TO"] <>
'') ? $arMessageFields[
"FIELD_REPLY_TO"] : $arMessageFields[
"FIELD_FROM"];
79 $arSubjects = explode(
"\n", trim($W_SUPPORT_SUBJECT));
80 $countAr =
count($arSubjects);
81 for(
$i=0;
$i<$countAr;
$i++)
83 $arSubjects[
$i] = Trim($arSubjects[
$i]);
84 if($arSubjects[
$i] <>
'')
86 if(preg_match(
"/".$arSubjects[
$i].
"/u", $arMessageFields[
"SUBJECT"], $regs))
88 $TID = intval($regs[1]);
97 if($ar_ticket = $db_ticket->Fetch())
100 if($W_SUPPORT_SEC ==
"domain" || $W_SUPPORT_SEC ==
"email")
103 if($TICKET_SOURCE_ID == $ar_ticket[
"SOURCE_ID"])
106 if($W_SUPPORT_SEC ==
"domain")
107 $ticket_email = mb_substr($ticket_email, mb_strpos($ticket_email,
"@"));
109 if(mb_strpos($message_email_addr, $ticket_email) !==
false)
113 if(!$bEMailOK && $ar_ticket[
"OWNER_USER_ID"]>0)
115 $db_user = CUser::GetByID($ar_ticket[
"OWNER_USER_ID"]);
116 if($arUser = $db_user->Fetch())
119 if($check_type ==
"domain")
120 $ticket_email = mb_substr($ticket_email, mb_strpos($ticket_email,
"@"));
122 if(mb_strpos($message_email_addr, $ticket_email) !==
false)
126 if(!$bEMailOK) $TID = 0;
133 $title = trim($arMessageFields[
"SUBJECT"]);
136 $title = trim($arMessageFields[
"BODY"]);
141 $arFieldsTicket =
array(
144 "MESSAGE" => $arMessageFields[
"BODY"],
145 "MESSAGE_AUTHOR_SID" => $message_email,
146 "MESSAGE_SOURCE_SID" =>
"email",
147 "MODIFIED_MODULE_NAME" =>
"mail",
148 "EXTERNAL_ID" =>
$ID,
149 "EXTERNAL_FIELD_1" => $arMessageFields[
"HEADER"]
152 if($W_SUPPORT_USER_FIND==
"Y")
154 $res = CUser::GetList(
"LAST_LOGIN",
"DESC", Array(
"ACTIVE" =>
"Y",
"=EMAIL"=>$message_email_addr));
157 $AUTHOR_USER_ID =
$arr[
"ID"];
164 while ($arAttach = $rsAttach->Fetch())
166 if ($arAttach[
'FILE_ID'])
169 $filename = CTempFile::GetFileName(md5(uniqid(
"")).
".tmp");
171 if(file_put_contents(
$filename, $arAttach[
"FILE_DATA"]) !==
false)
174 "name" => $arAttach[
"FILE_NAME"],
175 "type" => $arAttach[
"CONTENT_TYPE"],
178 "MODULE_ID" =>
"support",
182 if (
count($arFILES) > 0)
183 $arFieldsTicket[
"FILES"] = $arFILES;
185 $arFieldsTicket[
"CURRENT_USER_ID"] =
null;
186 if(intval($AUTHOR_USER_ID) > 0)
188 $resU = CUser::GetByID(intval($AUTHOR_USER_ID));
189 if($arU = $resU->Fetch())
191 $arFieldsTicket[
"CURRENT_USER_ID"] = $arU[
"ID"];
197 $arFieldsTicket[
"MESSAGE_AUTHOR_USER_ID"] = $AUTHOR_USER_ID;
199 if ($W_SUPPORT_ADD_MESSAGE_AS_HIDDEN==
"Y") $arFieldsTicket[
"HIDDEN"] =
"Y";
200 if ($arMessageFields[
"SPAM"]==
"Y") $arFieldsTicket[
"IS_SPAM"] =
"Y";
202 $TID = CTicket::Set($arFieldsTicket, $MESSAGE_ID, $TID,
"N");
206 $arFieldsTicket[
"SITE_ID"] =
$SITE_ID;
207 $arFieldsTicket[
"OWNER_USER_ID"] = $AUTHOR_USER_ID;
208 $arFieldsTicket[
"OWNER_SID"] = $message_email;
209 $arFieldsTicket[
"CREATED_MODULE_NAME"] =
"mail";
210 $arFieldsTicket[
"SOURCE_SID"] =
"email";
212 if ($arMessageFields[
"SPAM"]==
"Y") $arFieldsTicket[
"IS_SPAM"] =
"Y";
213 if ($W_SUPPORT_CATEGORY>0) $arFieldsTicket[
"CATEGORY_ID"] = $W_SUPPORT_CATEGORY;
214 if ($W_SUPPORT_CRITICALITY>0) $arFieldsTicket[
"CRITICALITY_ID"] = $W_SUPPORT_CRITICALITY;
216 if (trim($arFieldsTicket[
"TITLE"]) ==
'')
218 $arFieldsTicket[
"TITLE"] =
" ";
220 if (trim($arFieldsTicket[
"MESSAGE"]) ==
'')
222 $arFieldsTicket[
"MESSAGE"] =
" ";
225 $TID = CTicket::Set($arFieldsTicket, $MESSAGE_ID,
"",
"N");