20FROM b_form_crm_link fcl
21LEFT JOIN b_form_crm fc ON fc.ID=fcl.CRM_ID
22WHERE fcl.FORM_ID='".intval($FORM_ID).
"' AND fc.ACTIVE='Y'";
28 $query =
"SELECT FIELD_ID, FIELD_ALT, CRM_FIELD FROM b_form_crm_field WHERE LINK_ID='".intval($LINK_ID).
"'";
32 private static function _addField($FORM_ID, $CRM_ID, $crm_field)
40 if ($arFld[
'ID'] == $crm_field)
44 switch ($arFld[
'TYPE'])
47 if (is_array($arFld[
'VALUES']))
49 foreach ($arFld[
'VALUES'] as $arValue)
52 'MESSAGE' => $arValue[
'NAME'],
53 'VALUE' => $arValue[
'ID'],
54 'FIELD_TYPE' =>
'dropdown',
64 'FIELD_TYPE' =>
'checkbox',
71 'FIELD_TYPE' =>
'text',
78 'FORM_ID' => $FORM_ID,
80 'TITLE' => $arFld[
'NAME'],
81 'REQUIRED' => $arFld[
'REQUIRED'] ==
'true' ?
'Y' :
'N',
82 'arANSWER' => $arAnswer
93 $FORM_ID = intval($FORM_ID);
99 if (is_array($arLink))
101 $DB->Query(
"DELETE FROM b_form_crm_field WHERE LINK_ID='".intval($arLink[
'ID']).
"'");
107 if (is_array($arLink))
109 $DB->Query(
"DELETE FROM b_form_crm_link WHERE ID='".intval($arLink[
'ID']).
"'");
114 $arLinkFields =
array(
115 'FORM_ID' => $FORM_ID,
117 'LINK_TYPE' =>
$arParams[
'LINK_TYPE'] == self::LINK_MANUAL ? self::LINK_MANUAL : self::LINK_AUTO,
120 if (is_array($arLink))
122 $strUpdate =
$DB->PrepareUpdate(
'b_form_crm_link', $arLinkFields);
123 $query =
"UPDATE b_form_crm_link SET ".$strUpdate.
" WHERE ID='".intval($arLink[
'ID']).
"'";
126 $arLinkFields[
'ID'] = $arLink[
'ID'];
130 $arLinkFields[
'ID'] =
$DB->Add(
'b_form_crm_link', $arLinkFields);
133 if ($arLinkFields[
'ID'] > 0)
142 if ($crm_field <>
'' && $form_field <>
'' && !array_key_exists($crm_field, $arMap))
144 $arMap[$crm_field] =
true;
147 'LINK_ID' => $arLinkFields[
'ID'],
148 'CRM_FIELD' => $crm_field
150 if (intval($form_field) > 0)
152 elseif ($form_field ==
'NEW')
169 $arLink =
$dbRes->Fetch();
170 if (is_array($arLink) && $arLink[
'LINK_TYPE'] == self::LINK_AUTO)
176 public static function AddLead($FORM_ID, $RESULT_ID, $arLink =
null)
178 $FORM_ID = intval($FORM_ID);
179 $RESULT_ID = intval($RESULT_ID);
181 if ($FORM_ID <= 0 || $RESULT_ID <= 0)
184 if (!is_array($arLink))
187 $arLink =
$dbRes->Fetch();
193 $arResultFields =
array();
194 $arAnswers =
array();
199 $arCrmF = $ob->GetFields();
200 $arCrmFields =
array();
201 foreach ($arCrmF as
$ar)
202 $arCrmFields[
$ar[
'ID']] =
$ar;
204 $arLeadFields =
array();
208 if (intval(
$arRes[
'FIELD_ID']) > 0)
211 foreach ($arAnswers as $arAnswer)
213 foreach ($arAnswer as $arAns)
215 if ($arAns[
'FIELD_ID'] ==
$arRes[
'FIELD_ID'])
218 if ($arCrmFields[
$arRes[
'CRM_FIELD']])
220 if (
$arRes[
'CRM_FIELD'] ===
'SOURCE_ID')
222 $value = $arAns[
'VALUE'] ?: $arAns[
'ANSWER_TEXT'];
226 switch ($arCrmFields[
$arRes[
'CRM_FIELD']][
'TYPE'])
229 $value = $arAns[
'ANSWER_TEXT'];
235 $value = ($arAns[
'USER_TEXT'] <>
''
236 ? $arAns[
'USER_TEXT']
238 $arAns[
'ANSWER_TEXT'] <>
''
239 ? $arAns[
'ANSWER_TEXT']
247 if(isset($arCrmFields[
$arRes[
'CRM_FIELD']][
'MULTIPLE']) && $arCrmFields[
$arRes[
'CRM_FIELD']][
'MULTIPLE'] ===
"true")
249 $arLeadFields[
$arRes[
'CRM_FIELD']] .=
250 (empty($arLeadFields[
$arRes[
'CRM_FIELD']]) ?
'' :
',').$value;
254 $arLeadFields[
$arRes[
'CRM_FIELD']] = $value;
261 if (!
$bFound && $arCrmFields[
$arRes[
'CRM_FIELD']] && $arCrmFields[
$arRes[
'CRM_FIELD']][
'TYPE'] ==
'boolean')
263 $arLeadFields[
$arRes[
'CRM_FIELD']] =
'N';
268 switch(
$arRes[
'FIELD_ALT'])
271 $arLeadFields[
$arRes[
'CRM_FIELD']] = $arResultFields[
'ID'];
274 $arLeadFields[
$arRes[
'CRM_FIELD']] = $arResultFields[
'SID'];
277 $arLeadFields[
$arRes[
'CRM_FIELD']] = $arResultFields[
'NAME'];
285 case 'FORM_ALL_HTML':
292 if (empty($arLeadFields[
'SOURCE_ID']))
294 $arLeadFields[
'SOURCE_ID'] =
'WEB';
297 $result = $ob->AddLead($arLeadFields);
320 if (!self::CheckFields(
'ADD',
$arFields))
354 if (!self::CheckFields(
'UPDATE',
$arFields))
357 $strUpdate =
$DB->PrepareUpdate(
'b_form_crm',
$arFields);
358 $query =
'UPDATE b_form_crm SET '.$strUpdate.
' WHERE ID=\''.intval(
$ID).
'\'';
384 if (is_array($arCrm))
386 foreach (
GetModuleEvents(
"form",
"OnBeforeFormCrmDelete",
true) as $arEvent)
394 if (
$DB->Query(
"DELETE FROM b_form_crm WHERE ID='".$ID.
"'"))
396 foreach (
GetModuleEvents(
"form",
"OnAfterFormCrmDelete",
true) as $arEvent)
415 while ($wr=$w->Fetch())
419 if (is_array($arAnswers[$wr[
"SID"]]))
421 $bHasDiffTypes =
false;
423 foreach ($arAnswers[$wr[
'SID']] as $arrA)
425 if ($lastType ==
'') $lastType = $arrA[
'FIELD_TYPE'];
426 elseif ($arrA[
'FIELD_TYPE'] != $lastType)
428 $bHasDiffTypes =
true;
433 foreach($arAnswers[$wr[
"SID"]] as $arrA)
435 if ($wr[
'ADDITIONAL'] ==
'Y')
437 $arrA[
'FIELD_TYPE'] = $wr[
'FIELD_TYPE'];
440 $USER_TEXT_EXIST = (trim($arrA[
"USER_TEXT"]) <>
'');
441 $ANSWER_TEXT_EXIST = (trim($arrA[
"ANSWER_TEXT"]) <>
'');
442 $ANSWER_VALUE_EXIST = (trim($arrA[
"ANSWER_VALUE"]) <>
'');
443 $USER_FILE_EXIST = (intval($arrA[
"USER_FILE_ID"])>0);
451 $arrA[
'FIELD_TYPE'] ==
'text'
453 $arrA[
'FIELD_TYPE'] ==
'textarea'
458 if (trim($answer) <>
'') $answer .=
"<br />";
459 if (trim($answer_raw) <>
'') $answer_raw .=
",";
461 if ($ANSWER_TEXT_EXIST)
462 $answer .= $arrA[
"ANSWER_TEXT"].
': ';
464 switch ($arrA[
'FIELD_TYPE'])
472 if ($USER_TEXT_EXIST)
483 if ($USER_TEXT_EXIST)
485 $answer .=
'<a href="'.($arrA[
'FIELD_TYPE'] ==
'email' ?
'mailto:' :
'').trim($arrA[
"USER_TEXT"]).
'">'.
htmlspecialcharsbx(trim($arrA[
"USER_TEXT"])).
'</a>';
496 if ($ANSWER_TEXT_EXIST)
502 if ($ANSWER_VALUE_EXIST)
504 $answer .=
'('.htmlspecialcharsbx($arrA[
'ANSWER_VALUE']).
') ';
505 if (!$ANSWER_TEXT_EXIST)
509 if (!$ANSWER_VALUE_EXIST && !$ANSWER_TEXT_EXIST)
510 $answer_raw .= $arrA[
'ANSWER_ID'];
512 $answer .=
'['.$arrA[
'ANSWER_ID'].
']';
519 if ($USER_FILE_EXIST)
521 $f = CFile::GetByID($arrA[
"USER_FILE_ID"]);
522 if ($fr =
$f->Fetch())
524 $file_size = CFile::FormatSize($fr[
"FILE_SIZE"]);
525 $url = (
$APPLICATION->IsHTTPS() ?
"https://" :
"http://").$_SERVER[
"HTTP_HOST"].
"/bitrix/tools/form_show_file.php?rid=".$RESULT_ID.
"&hash=".$arrA[
"USER_FILE_HASH"].
"&lang=".LANGUAGE_ID;
527 if ($arrA[
"USER_FILE_IS_IMAGE"]==
"Y")
529 $answer .=
"<a href=\"$url\">".htmlspecialcharsbx($arrA[
"USER_FILE_NAME"]).
"</a> [".$fr[
"WIDTH"].
" x ".$fr[
"HEIGHT"].
"] (".$file_size.
")";
533 $answer .=
"<a href=\"$url&action=download\">".htmlspecialcharsbx($arrA[
"USER_FILE_NAME"]).
"</a> (".$file_size.
")";
545 $strResult .= $wr[
"TITLE"].
":<br />".($answer ==
'' ?
" " : $answer).
"<br /><br />";
558 while ($wr=$w->Fetch())
562 if (is_array($arAnswers[$wr[
"SID"]]))
564 $bHasDiffTypes =
false;
566 foreach ($arAnswers[$wr[
'SID']] as $arrA)
568 if ($lastType ==
'') $lastType = $arrA[
'FIELD_TYPE'];
569 elseif ($arrA[
'FIELD_TYPE'] != $lastType)
571 $bHasDiffTypes =
true;
576 foreach($arAnswers[$wr[
"SID"]] as $arrA)
578 if ($wr[
'ADDITIONAL'] ==
'Y')
580 $arrA[
'FIELD_TYPE'] = $wr[
'FIELD_TYPE'];
583 $USER_TEXT_EXIST = (trim($arrA[
"USER_TEXT"]) <>
'');
584 $ANSWER_TEXT_EXIST = (trim($arrA[
"ANSWER_TEXT"]) <>
'');
585 $ANSWER_VALUE_EXIST = (trim($arrA[
"ANSWER_VALUE"]) <>
'');
586 $USER_FILE_EXIST = (intval($arrA[
"USER_FILE_ID"])>0);
592 $arrA[
'FIELD_TYPE'] ==
'text'
594 $arrA[
'FIELD_TYPE'] ==
'textarea'
601 if (trim($answer) <>
'')
603 if (trim($answer_raw) <>
'')
606 if ($ANSWER_TEXT_EXIST)
607 $answer .= $arrA[
"ANSWER_TEXT"].
': ';
609 switch ($arrA[
'FIELD_TYPE'])
619 if ($USER_TEXT_EXIST)
621 $answer .= trim($arrA[
"USER_TEXT"]);
622 $answer_raw .= trim($arrA[
"USER_TEXT"]);
632 if ($ANSWER_TEXT_EXIST)
634 $answer = mb_substr($answer, 0, -2).
' ';
635 $answer_raw .= $arrA[
'ANSWER_TEXT'];
638 if ($ANSWER_VALUE_EXIST)
640 $answer .=
'('.$arrA[
'ANSWER_VALUE'].
') ';
641 if (!$ANSWER_TEXT_EXIST)
643 $answer_raw .= $arrA[
'ANSWER_VALUE'];
647 if (!$ANSWER_VALUE_EXIST && !$ANSWER_TEXT_EXIST)
649 $answer_raw .= $arrA[
'ANSWER_ID'];
652 $answer .=
'['.$arrA[
'ANSWER_ID'].
']';
659 if ($USER_FILE_EXIST)
661 $f = CFile::GetByID($arrA[
"USER_FILE_ID"]);
662 if ($fr =
$f->Fetch())
664 $file_size = CFile::FormatSize($fr[
"FILE_SIZE"]);
665 $url = (
$APPLICATION->IsHTTPS() ?
"https://" :
"http://").$_SERVER[
"HTTP_HOST"].
"/bitrix/tools/form_show_file.php?rid=".$RESULT_ID.
"&hash=".$arrA[
"USER_FILE_HASH"].
"&action=download&lang=".LANGUAGE_ID;
667 if ($arrA[
"USER_FILE_IS_IMAGE"]==
"Y")
669 $answer .= $arrA[
"USER_FILE_NAME"].
" [".$fr[
"WIDTH"].
" x ".$fr[
"HEIGHT"].
"] (".$file_size.
")\n".
$url;
673 $answer .= $arrA[
"USER_FILE_NAME"].
" (".$file_size.
")\n".
$url.
"&action=download";
677 $answer_raw .= $arrA[
'USER_FILE_NAME'];
685 $strResult .= $wr[
"TITLE"].
":\r\n".($answer ==
'' ?
" " : $answer).
"\r\n\r\n";
711 if (mb_substr(
$key, 0, 1) ==
"!")
718 if (mb_substr(
$key, 0, 1) ==
"+")
724 if (mb_substr(
$key, 0, 2) ==
">=")
727 $strOperation =
">=";
737 $strOperation =
"<=";
747 $strOperation =
"IN";
752 $strOperation =
"LIKE";
757 $strOperation =
"QUERY";
764 return array(
"FIELD" =>
$key,
"NEGATIVE" => $strNegative,
"OPERATION" => $strOperation,
"OR_NULL" => $strOrNull);
777 $arGroupByFunct =
array(
"COUNT",
"AVG",
"MIN",
"MAX",
"SUM");
779 $arAlreadyJoined =
array();
782 if (is_array($arGroupBy) &&
count($arGroupBy)>0)
784 $arSelectFields = $arGroupBy;
785 foreach ($arGroupBy as
$key =>
$val)
791 if ($strSqlGroupBy <>
'')
792 $strSqlGroupBy .=
", ";
799 if ($strSqlFrom <>
'')
812 if (is_array($arGroupBy) &&
count($arGroupBy)==0)
814 $strSqlSelect =
"COUNT(%%_DISTINCT_%% ".$arFields[$arFieldsKeys[0]][
"FIELD"].
") as CNT ";
818 if (isset($arSelectFields) && is_string($arSelectFields) && $arSelectFields <>
'' && array_key_exists($arSelectFields,
$arFields))
819 $arSelectFields =
array($arSelectFields);
821 if (!isset($arSelectFields)
822 || !is_array($arSelectFields)
823 ||
count($arSelectFields)<=0
824 || in_array(
"*", $arSelectFields))
826 $cntFieldsKeys =
count($arFieldsKeys);
827 for (
$i = 0;
$i < $cntFieldsKeys;
$i++)
829 if (isset(
$arFields[$arFieldsKeys[
$i]][
"WHERE_ONLY"])
830 &&
$arFields[$arFieldsKeys[
$i]][
"WHERE_ONLY"] ==
"Y")
835 if ($strSqlSelect <>
'')
836 $strSqlSelect .=
", ";
838 if (
$arFields[$arFieldsKeys[
$i]][
"TYPE"] ==
"datetime")
840 if ((
$DB->type ==
"ORACLE" ||
$DB->type ==
"MSSQL") && (array_key_exists($arFieldsKeys[
$i], $arOrder)))
841 $strSqlSelect .=
$arFields[$arFieldsKeys[
$i]][
"FIELD"].
" as ".$arFieldsKeys[
$i].
"_X1, ";
843 $strSqlSelect .=
$DB->DateToCharFunction(
$arFields[$arFieldsKeys[
$i]][
"FIELD"],
"FULL").
" as ".$arFieldsKeys[
$i];
847 if ((
$DB->type ==
"ORACLE" ||
$DB->type ==
"MSSQL") && (array_key_exists($arFieldsKeys[
$i], $arOrder)))
848 $strSqlSelect .=
$arFields[$arFieldsKeys[
$i]][
"FIELD"].
" as ".$arFieldsKeys[
$i].
"_X1, ";
850 $strSqlSelect .=
$DB->DateToCharFunction(
$arFields[$arFieldsKeys[
$i]][
"FIELD"],
"SHORT").
" as ".$arFieldsKeys[
$i];
853 $strSqlSelect .=
$arFields[$arFieldsKeys[
$i]][
"FIELD"].
" as ".$arFieldsKeys[
$i];
857 && !in_array(
$arFields[$arFieldsKeys[
$i]][
"FROM"], $arAlreadyJoined))
859 if ($strSqlFrom <>
'')
861 $strSqlFrom .=
$arFields[$arFieldsKeys[
$i]][
"FROM"];
862 $arAlreadyJoined[] =
$arFields[$arFieldsKeys[
$i]][
"FROM"];
868 foreach ($arSelectFields as
$key =>
$val)
874 if ($strSqlSelect <>
'')
875 $strSqlSelect .=
", ";
877 if (in_array(
$key, $arGroupByFunct))
885 if ((
$DB->type ==
"ORACLE" ||
$DB->type ==
"MSSQL") && (array_key_exists(
$val, $arOrder)))
892 if ((
$DB->type ==
"ORACLE" ||
$DB->type ==
"MSSQL") && (array_key_exists(
$val, $arOrder)))
905 if ($strSqlFrom <>
'')
914 if ($strSqlGroupBy <>
'')
916 if ($strSqlSelect <>
'')
917 $strSqlSelect .=
", ";
918 $strSqlSelect .=
"COUNT(%%_DISTINCT_%% ".$arFields[$arFieldsKeys[0]][
"FIELD"].
") as CNT";
921 $strSqlSelect =
"%%_DISTINCT_%% ".$strSqlSelect;
926 $arSqlSearch =
array();
929 $filter_keys =
array();
933 $cntFilterKeys =
count($filter_keys);
934 for (
$i = 0;
$i < $cntFilterKeys;
$i++)
937 if (!is_array($vals))
938 $vals =
array($vals);
940 $vals = array_values($vals);
944 $key = $key_res[
"FIELD"];
945 $strNegative = $key_res[
"NEGATIVE"];
946 $strOperation = $key_res[
"OPERATION"];
947 $strOrNull = $key_res[
"OR_NULL"];
951 $arSqlSearch_tmp =
array();
952 $cntVals =
count($vals);
953 for ($j = 0; $j < $cntVals; $j++)
958 $arSqlSearch_tmp1 = call_user_func_array(
962 if ($arSqlSearch_tmp1 !==
false)
963 $arSqlSearch_tmp[] = $arSqlSearch_tmp1;
969 if ((intval(
$val) == 0) && (mb_strpos($strOperation,
"=") !== False))
970 $arSqlSearch_tmp[] =
"(".$arFields[
$key][
"FIELD"].
" IS ".(($strNegative ==
"Y") ?
"NOT " :
"").
"NULL) ".(($strNegative ==
"Y") ?
"AND" :
"OR").
" ".(($strNegative ==
"Y") ?
"NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" 0)";
972 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".intval(
$val).
" )";
978 if ((DoubleVal(
$val) == 0) && (mb_strpos($strOperation,
"=") !== False))
979 $arSqlSearch_tmp[] =
"(".$arFields[
$key][
"FIELD"].
" IS ".(($strNegative ==
"Y") ?
"NOT " :
"").
"NULL) ".(($strNegative ==
"Y") ?
"AND" :
"OR").
" ".(($strNegative ==
"Y") ?
"NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" 0)";
981 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".DoubleVal(
$val).
" )";
985 if ($strOperation ==
"QUERY")
991 if ((
$val ==
'') && (mb_strpos($strOperation,
"=") !== False))
992 $arSqlSearch_tmp[] =
"(".$arFields[
$key][
"FIELD"].
" IS ".(($strNegative ==
"Y") ?
"NOT " :
"").
"NULL) ".(($strNegative ==
"Y") ?
"AND NOT" :
"OR").
" (".
$DB->Length(
$arFields[
$key][
"FIELD"]).
" <= 0) ".(($strNegative ==
"Y") ?
"AND NOT" :
"OR").
" (".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
994 $arSqlSearch_tmp[] = (($strNegative ==
"Y") ?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT " :
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
1000 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
"NOT":
"").
"(".
$arFields[
$key][
"FIELD"].
" IS NULL)";
1002 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT ":
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"FULL").
")";
1007 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
"NOT":
"").
"(".
$arFields[
$key][
"FIELD"].
" IS NULL)";
1009 $arSqlSearch_tmp[] = ($strNegative==
"Y"?
" ".$arFields[
$key][
"FIELD"].
" IS NULL OR NOT ":
"").
"(".
$arFields[
$key][
"FIELD"].
" ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"SHORT").
")";
1018 if ($strSqlFrom <>
'')
1024 $strSqlSearch_tmp =
"";
1025 $cntSqlSearch_tmp =
count($arSqlSearch_tmp);
1027 for ($j = 0; $j < $cntSqlSearch_tmp; $j++)
1030 $strSqlSearch_tmp .= ($strNegative==
"Y" ?
" AND " :
" OR ");
1031 $strSqlSearch_tmp .=
"(".$arSqlSearch_tmp[$j].
")";
1033 if ($strOrNull ==
"Y")
1035 if ($strSqlSearch_tmp <>
'')
1036 $strSqlSearch_tmp .= ($strNegative==
"Y" ?
" AND " :
" OR ");
1037 $strSqlSearch_tmp .=
"(".$arFields[
$key][
"FIELD"].
" IS ".($strNegative==
"Y" ?
"NOT " :
"").
"NULL)";
1039 if ($strSqlSearch_tmp <>
'')
1040 $strSqlSearch_tmp .= ($strNegative==
"Y" ?
" AND " :
" OR ");
1042 $strSqlSearch_tmp .=
"(".$arFields[
$key][
"FIELD"].
" ".($strNegative==
"Y" ?
"<>" :
"=").
" 0)";
1044 $strSqlSearch_tmp .=
"(".$arFields[
$key][
"FIELD"].
" ".($strNegative==
"Y" ?
"<>" :
"=").
" '')";
1046 $strSqlSearch_tmp .= ($strNegative==
"Y" ?
" (1=1) " :
" (1=0) ");
1049 if ($strSqlSearch_tmp !=
"")
1050 $arSqlSearch[] =
"(".$strSqlSearch_tmp.
")";
1054 $cntSqlSearch =
count($arSqlSearch);
1055 for (
$i = 0;
$i < $cntSqlSearch;
$i++)
1057 if ($strSqlWhere <>
'')
1058 $strSqlWhere .=
" AND ";
1059 $strSqlWhere .=
"(".$arSqlSearch[
$i].
")";
1064 $arSqlOrder = Array();
1065 foreach ($arOrder as $by =>
$order)
1067 $by = mb_strtoupper($by);
1075 $arSqlOrder[] =
" ".$arFields[$by][
"FIELD"].
" ".
$order.
" ";
1079 && !in_array(
$arFields[$by][
"FROM"], $arAlreadyJoined))
1081 if ($strSqlFrom <>
'')
1084 $arAlreadyJoined[] =
$arFields[$by][
"FROM"];
1090 $cntSqlOrder =
count($arSqlOrder);
1091 for (
$i=0;
$i<$cntSqlOrder;
$i++)
1093 if ($strSqlOrderBy <>
'')
1094 $strSqlOrderBy .=
", ";
1096 if(
$DB->type ==
"ORACLE")
1098 if(mb_substr($arSqlOrder[
$i], -3) ==
"ASC")
1099 $strSqlOrderBy .= $arSqlOrder[
$i].
" NULLS FIRST";
1101 $strSqlOrderBy .= $arSqlOrder[
$i].
" NULLS LAST";
1104 $strSqlOrderBy .= $arSqlOrder[
$i];
1109 "SELECT" => $strSqlSelect,
1110 "FROM" => $strSqlFrom,
1111 "WHERE" => $strSqlWhere,
1112 "GROUPBY" => $strSqlGroupBy,
1113 "ORDERBY" => $strSqlOrderBy
1126 private $arCRMFields;
1131 private $lastResult =
null;
1135 $this->ID = intval($ID);
1139 $this->arLink =
$dbRes->Fetch();
1142 if (is_array($arAuth))
1144 $this->arAuth =
array(
'LOGIN' => $arAuth[
'LOGIN'],
'PASSWORD' => $arAuth[
'PASSWORD']);
1150 return $this->_query(
'lead.add', $arLeadFields);
1163 $this->arCRMFields =
null;
1166 if (!$this->arCRMFields)
1168 if (
$CACHE_MANAGER->Read(self::FIELDS_CACHE_TTL, $this->_cacheId(),
'form_crm_data') && !$bReload)
1174 $result = $this->_query(
'lead.get_fields');
1178 $this->arCRMFields =
$data[
'FIELDS'];
1189 return $this->arCRMFields;
1194 return $this->authHash;
1199 return $this->lastResult;
1202 private function _setAuthHash(
$hash)
1206 $this->authHash =
$hash;
1211 private function _cacheId()
1213 if ($this->CACHE_ID)
1214 return $this->CACHE_ID;
1216 return ($this->CACHE_ID =
'FORM_CRM_'.$this->ID);
1226 $arPostFields =
array(
1232 $arPostFields[
'LOGIN'] = $this->arAuth[
'LOGIN'];
1233 $arPostFields[
'PASSWORD'] = $this->arAuth[
'PASSWORD'];
1237 $arPostFields[
'AUTH'] = $this->arLink[
'AUTH_HASH'];
1240 $arPostFields = array_merge(
$params, $arPostFields);
1242 $httpClient = new \Bitrix\Main\Web\HttpClient();
1243 $result_text = $httpClient->post($this->arLink[
'URL'], $arPostFields);
1245 $version_header = $httpClient->getHeaders()->get(
'X-CRM-Version');
1246 if ($version_header ==
'' || version_compare($version_header,
"11.5.0") < 0)
1248 $result_text =
'{"error":"500","error_message":"'.GetMessage(
'FORM_CRM_VERSION_FAILURE').
'"}';
1251 $this->lastResult =
new _CFormCrmSenderResult($result_text);
1253 if ($this->lastResult->field(
'AUTH'))
1255 $this->_setAuthHash($this->lastResult->field(
'AUTH'));
1258 return $this->lastResult;
1267 private $bProcess =
false;
1269 private $result_text;
1271 private $result_code;
1272 private $result_error;
1276 $this->result_text = trim($result_text);
1282 return $this->result_code;
1294 return $this->result_error;
1300 return $this->result[$field] ??
null;
1303 private function _process()
1305 if (!$this->bProcess)
1307 if ($this->result_text <>
'')
1309 $this->result = CUtil::JsObjectToPhp($this->result_text,
true);
1311 if (!is_array($this->result))
1313 $this->result =
null;
1317 $this->result_code = intval($this->result[
'error']);
1318 if ($this->result_code >= 400)
1320 $this->result_error = $this->result[
'error_message'];
1325 $this->bProcess =
true;
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
ExecuteModuleEventEx($arEvent, $arParams=[])
DelDuplicateSort(&$arSort)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
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."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
$GLOBALS['_____370096793']