5 public static function GetList($WEB_FORM_ID, $by =
's_timestamp',
$order =
'desc',
$arFilter = [], $is_filtered =
null, $CHECK_RIGHTS =
"Y", $records_limit =
false)
9 $CHECK_RIGHTS = ($CHECK_RIGHTS==
"Y") ?
"Y" :
"N";
10 $WEB_FORM_ID = intval($WEB_FORM_ID);
14 $USER_ID = intval(
$USER->GetID());
15 $arSqlSearch =
array();
28 while (
$zr=
$z->Fetch())
30 $arPARAMETER_NAME =
array(
"ANSWER_TEXT",
"ANSWER_VALUE",
"USER",
"ANSWER_ID");
32 foreach ($arPARAMETER_NAME as $PARAMETER_NAME)
34 switch ($PARAMETER_NAME)
37 $arFILTER_TYPE = $arrANSWER_TEXT[
"reference_id"];
40 $arFILTER_TYPE = $arrANSWER_VALUE[
"reference_id"];
43 $arFILTER_TYPE = $arrUSER[
"reference_id"];
46 $arFILTER_TYPE = [
"answer_id"];
49 foreach ($arFILTER_TYPE as $FILTER_TYPE)
52 $arrUF[
"ID"] =
$zr[
"ID"];
53 $arrUF[
"PARAMETER_NAME"] = $PARAMETER_NAME;
54 $arrUF[
"FILTER_TYPE"] = $FILTER_TYPE;
55 $FID = $form[
"SID"].
"_".
$zr[
"SID"].
"_".$PARAMETER_NAME.
"_".$FILTER_TYPE;
56 if ($FILTER_TYPE==
"date" || $FILTER_TYPE==
"integer")
59 $arrFORM_FILTER[$FID.
"_1"] = $arrUF;
61 $arrFORM_FILTER[$FID.
"_2"] = $arrUF;
63 $arrFORM_FILTER[$FID.
"_0"] = $arrUF;
65 else $arrFORM_FILTER[$FID] = $arrUF;
69 if (is_array($arrFORM_FILTER)) $arrFORM_FILTER_KEYS = array_keys($arrFORM_FILTER);
73 $keyCount =
count($filter_keys);
74 for (
$i=0;
$i<$keyCount;
$i++)
85 if((
string)
$val ==
'' ||
$val ===
"NOT_REF")
88 $match_value_set = (in_array(
$key.
"_EXACT_MATCH", $filter_keys));
93 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
97 $arSqlSearch[] =
"R.STATUS_ID='".intval(
$val).
"'";
100 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
104 $arSqlSearch[] =
"R.TIMESTAMP_X>=".$DB->CharToDateFunction(
$val,
"SHORT");
107 $arSqlSearch[] =
"R.TIMESTAMP_X<".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
109 case "DATE_CREATE_1":
110 $arSqlSearch[] =
"R.DATE_CREATE>=".$DB->CharToDateFunction(
$val,
"SHORT");
112 case "DATE_CREATE_2":
113 $arSqlSearch[] =
"R.DATE_CREATE<".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
115 case "TIME_CREATE_1":
116 $arSqlSearch[] =
"R.DATE_CREATE>=".$DB->CharToDateFunction(
$val,
"FULL");
118 case "TIME_CREATE_2":
119 $arSqlSearch[] =
"R.DATE_CREATE<".$DB->CharToDateFunction(
$val,
"FULL");
122 $arSqlSearch[] = (
$val==
"Y") ?
"R.USER_ID>0" :
"(R.USER_ID<=0 or R.USER_ID is null)";
125 $arSqlSearch[] = (
$val==
"Y") ?
"(R.USER_AUTH='Y' and R.USER_ID>0)" :
"(R.USER_AUTH='N' and R.USER_ID>0)";
128 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
132 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
136 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
143 if (is_array($arrFORM_FILTER))
146 if (in_array(
$key, $arrFORM_FILTER_KEYS))
148 $arrF = $arrFORM_FILTER[
$key];
149 if (is_array(
$arr[
"FIELDS"]) && !in_array($arrF[
"ID"],
$arr[
"FIELDS"]))
153 $arr[
"TABLES"][] =
"b_form_result_answer ".$A;
154 $arr[
"WHERE"][] =
"(".$A.
".RESULT_ID=R.ID and ".$A.
".FIELD_ID='".$arrF[
"ID"].
"')";
155 $arr[
"FIELDS"][] = $arrF[
"ID"];
157 switch(mb_strtoupper($arrF[
"FILTER_TYPE"]))
161 if($arrF[
"PARAMETER_NAME"] ==
"ANSWER_TEXT")
163 $arSqlSearch[] =
"length(".$A.
".ANSWER_TEXT)+0>0";
166 elseif($arrF[
"PARAMETER_NAME"] ==
"ANSWER_VALUE")
168 $arSqlSearch[] =
"length(".$A.
".ANSWER_VALUE)+0>0";
171 elseif($arrF[
"PARAMETER_NAME"] ==
"USER")
173 $arSqlSearch[] =
"length(".$A.
".USER_TEXT)+0>0";
181 if($arrF[
"PARAMETER_NAME"] ==
"ANSWER_TEXT")
186 elseif($arrF[
"PARAMETER_NAME"] ==
"ANSWER_VALUE")
191 elseif($arrF[
"PARAMETER_NAME"] ==
"USER")
196 if($sql !==
"0" && trim($sql) <>
'')
198 $arSqlSearch[] = $sql;
203 $arSqlSearch[] = $A.
".ANSWER_ID=".intval(
$val);
206 if($arrF[
"PARAMETER_NAME"] ==
"USER")
210 if($arrF[
"SIDE"] ==
"1")
212 $arSqlSearch[] = $A.
".USER_DATE>=".
$DB->CharToDateFunction(
$val,
"SHORT");
214 elseif($arrF[
"SIDE"] ==
"2")
216 $arSqlSearch[] = $A.
".USER_DATE<".
$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
218 elseif($arrF[
"SIDE"] ==
"0")
220 $arSqlSearch[] = $A.
".USER_DATE=".
$DB->CharToDateFunction(
$val);
226 if($arrF[
"PARAMETER_NAME"] ==
"USER")
228 if($arrF[
"SIDE"] ==
"1")
230 $arSqlSearch[] = $A.
".USER_TEXT+0>=".intval(
$val);
232 elseif($arrF[
"SIDE"] ==
"2")
234 $arSqlSearch[] = $A.
".USER_TEXT+0<=".intval(
$val);
236 elseif($arrF[
"SIDE"] ==
"0")
238 $arSqlSearch[] = $A.
".USER_TEXT='".intval(
$val).
"'";
241 elseif($arrF[
"PARAMETER_NAME"] ==
"ANSWER_TEXT")
243 if($arrF[
"SIDE"] ==
"1")
245 $arSqlSearch[] = $A.
".ANSWER_TEXT+0>=".intval(
$val);
247 elseif($arrF[
"SIDE"] ==
"2")
249 $arSqlSearch[] = $A.
".ANSWER_TEXT+0<=".intval(
$val);
251 elseif($arrF[
"SIDE"] ==
"0")
253 $arSqlSearch[] = $A.
".ANSWER_TEXT='".intval(
$val).
"'";
256 elseif($arrF[
"PARAMETER_NAME"] ==
"ANSWER_VALUE")
258 if($arrF[
"SIDE"] ==
"1")
260 $arSqlSearch[] = $A.
".ANSWER_VALUE+0>=".intval(
$val);
262 elseif($arrF[
"SIDE"] ==
"2")
264 $arSqlSearch[] = $A.
".ANSWER_VALUE+0<=".intval(
$val);
266 elseif($arrF[
"SIDE"] ==
"0")
268 $arSqlSearch[] = $A.
".ANSWER_VALUE='".intval(
$val).
"'";
278 if ($by ==
"s_id") $strSqlOrder =
"ORDER BY R.ID";
279 elseif ($by ==
"s_date_create") $strSqlOrder =
"ORDER BY R.DATE_CREATE";
280 elseif ($by ==
"s_timestamp") $strSqlOrder =
"ORDER BY R.TIMESTAMP_X";
281 elseif ($by ==
"s_user_id") $strSqlOrder =
"ORDER BY R.USER_ID";
282 elseif ($by ==
"s_guest_id") $strSqlOrder =
"ORDER BY R.STAT_GUEST_ID";
283 elseif ($by ==
"s_session_id") $strSqlOrder =
"ORDER BY R.STAT_SESSION_ID";
284 elseif ($by ==
"s_status") $strSqlOrder =
"ORDER BY R.STATUS_ID";
285 elseif ($by ==
"s_sent_to_crm") $strSqlOrder =
"ORDER BY R.SENT_TO_CRM";
288 $strSqlOrder =
"ORDER BY R.TIMESTAMP_X";
293 $strSqlOrder .=
" desc ";
298 if (!empty(
$arr[
"TABLES"]))
299 $str1 = implode(
",\n ",
$arr[
"TABLES"]);
301 if (!empty(
$arr[
"WHERE"]))
302 $str2 = implode(
"\n and ",
$arr[
"WHERE"]);
303 if ($str1 <>
'') $str1 =
",\n ".$str1;
304 if ($str2 <>
'') $str2 =
"\n and ".$str2;
306 if ($records_limit===
false)
308 $records_limit =
"LIMIT ".intval(COption::GetOptionString(
"form",
"RECORDS_LIMIT"));
312 $records_limit = intval($records_limit);
313 if ($records_limit>0)
315 $records_limit =
"LIMIT ".$records_limit;
323 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID, R.SENT_TO_CRM,
324 ".$DB->DateToCharFunction(
"R.DATE_CREATE").
" DATE_CREATE,
325 ".
$DB->DateToCharFunction(
"R.TIMESTAMP_X").
" TIMESTAMP_X,
326 S.TITLE STATUS_TITLE,
335 and R.FORM_ID = '$WEB_FORM_ID'
336 and S.ID = R.STATUS_ID
338 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.DATE_CREATE, R.STATUS_ID, R.SENT_TO_CRM
349 if ($F_RIGHT<20) $str3 =
"and ifnull(R.USER_ID,0) = $USER_ID";
353 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID, R.SENT_TO_CRM,
354 ".$DB->DateToCharFunction(
"R.DATE_CREATE").
" DATE_CREATE,
355 ".
$DB->DateToCharFunction(
"R.TIMESTAMP_X").
" TIMESTAMP_X,
356 S.TITLE STATUS_TITLE,
361 b_form_status_2_group G$str1
366 and R.FORM_ID = '$WEB_FORM_ID'
367 and S.ID = R.STATUS_ID
368 and G.STATUS_ID = S.ID
370 (G.GROUP_ID in ($groups)) or
371 (G.GROUP_ID in ($groups,0) and ifnull(R.USER_ID,0) = $USER_ID and $USER_ID>0)
373 and G.PERMISSION in ('VIEW', 'EDIT', 'DELETE')
375 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID,
376 R.STAT_SESSION_ID, R.SENT_TO_CRM, R.DATE_CREATE, R.STATUS_ID, R.SENT_TO_CRM
384 $res =
new CDBResult();
398 ".$DB->DateToCharFunction(
"R.DATE_CREATE").
" DATE_CREATE,
399 ".
$DB->DateToCharFunction(
"R.TIMESTAMP_X").
" TIMESTAMP_X,
400 F.IMAGE_ID, F.DESCRIPTION, F.DESCRIPTION_TYPE, F.SHOW_RESULT_TEMPLATE, F.PRINT_RESULT_TEMPLATE, F.EDIT_RESULT_TEMPLATE, F.NAME,
403 S.TITLE STATUS_TITLE,
404 S.DESCRIPTION STATUS_DESCRIPTION,
413 and R.STATUS_ID = S.ID
422 $USER_ID = intval(
$USER->GetID());
423 $RESULT_ID = intval($RESULT_ID);
424 $arrReturn =
array();
438 b_form_status_2_group G
441 and R.STATUS_ID = G.STATUS_ID
443 (G.GROUP_ID in ($groups) and ifnull(R.USER_ID,0) <> $USER_ID) or
444 (G.GROUP_ID in ($groups,0) and ifnull(R.USER_ID,0) = $USER_ID)
447 $z =
$DB->Query($strSql);
448 while (
$zr =
$z->Fetch())
450 $arrReturn[] =
$zr[
"PERMISSION"];
451 $CURRENT_STATUS_ID =
$zr[
"STATUS_ID"];
460 $arInsert =
$DB->PrepareInsert(
"b_form_result_answer",
$arFields,
"form");
461 $strSql =
"INSERT INTO b_form_result_answer (".$arInsert[0].
") VALUES (".$arInsert[1].
")";
463 return intval(
$DB->LastID());
469 $RESULT_ID = intval($RESULT_ID);
470 $FIELD_ID = intval($FIELD_ID);
471 $strUpdate =
$DB->PrepareUpdate(
"b_form_result_answer",
$arFields,
"form");
472 $strSql =
"UPDATE b_form_result_answer SET ".$strUpdate.
" WHERE RESULT_ID=".$RESULT_ID.
" and FIELD_ID=".$FIELD_ID;
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
CheckDateTime($datetime, $format=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."%"