1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
form_callformfield.php
См. документацию.
1<?php
2
4{
5 public static function GetList($WEB_FORM_ID, $get_fields, $by = 's_sort', $order = 'asc', $arFilter = [])
6 {
7 global $DB, $strError;
8 $WEB_FORM_ID = intval($WEB_FORM_ID);
9 $str = "";
10 if ($get_fields <> '' && $get_fields!="ALL")
11 {
12 InitBVar($get_fields);
13 $str = "and ADDITIONAL='$get_fields'";
14 }
15 $arSqlSearch = Array();
16 $strSqlSearch = "";
17 if (is_array($arFilter))
18 {
19 if(isset($arFilter["SID"]) && $arFilter["SID"] <> '')
20 {
21 $arFilter["VARNAME"] = $arFilter["SID"];
22 }
23 elseif(isset($arFilter["VARNAME"]) && $arFilter["VARNAME"] <> '')
24 {
25 $arFilter["SID"] = $arFilter["VARNAME"];
26 }
27
28 $filter_keys = array_keys($arFilter);
29 $keyCount = count($filter_keys);
30 for ($i=0; $i<$keyCount; $i++)
31 {
32 $key = $filter_keys[$i];
33 $val = $arFilter[$filter_keys[$i]];
34 if ((string)$val == '' || $val=="NOT_REF")
35 continue;
36 if (is_array($val) && empty($val))
37 continue;
38 $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys));
39 $key = strtoupper($key);
40 switch($key)
41 {
42 case "ID":
43 case "SID":
44 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
45 $arSqlSearch[] = GetFilterQuery("F.".$key, $val, $match);
46 break;
47 case "TITLE":
48 case "COMMENTS":
49 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
50 $arSqlSearch[] = GetFilterQuery("F.".$key, $val, $match);
51 break;
52 case "ACTIVE":
53 case "IN_RESULTS_TABLE":
54 case "IN_EXCEL_TABLE":
55 case "IN_FILTER":
56 case "REQUIRED":
57 $arSqlSearch[] = ($val=="Y") ? "F.".$key."='Y'" : "F.".$key."='N'";
58 break;
59 }
60 }
61 }
62 if ($by == "s_id") $strSqlOrder = "ORDER BY F.ID";
63 elseif ($by == "s_active") $strSqlOrder = "ORDER BY F.ACTIVE";
64 elseif ($by == "s_varname" ||
65 $by == "s_sid") $strSqlOrder = "ORDER BY F.SID";
66 elseif ($by == "s_c_sort" ||
67 $by == "s_sort") $strSqlOrder = "ORDER BY F.C_SORT";
68 elseif ($by == "s_title") $strSqlOrder = "ORDER BY F.TITLE";
69 elseif ($by == "s_comments") $strSqlOrder = "ORDER BY F.COMMENTS";
70 elseif ($by == "s_required") $strSqlOrder = "ORDER BY F.REQUIRED";
71 elseif ($by == "s_in_results_table") $strSqlOrder = "ORDER BY F.IN_RESULTS_TABLE";
72 elseif ($by == "s_in_excel_table") $strSqlOrder = "ORDER BY F.IN_EXCEL_TABLE";
73 elseif ($by == "s_field_type") $strSqlOrder = "ORDER BY F.FIELD_TYPE";
74 else
75 {
76 $strSqlOrder = "ORDER BY F.C_SORT";
77 }
78
79 if ($order!="desc")
80 {
81 $strSqlOrder .= " asc ";
82 }
83 else
84 {
85 $strSqlOrder .= " desc ";
86 }
87
88 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
89 $strSql = "
90 SELECT
91 F.*,
92 F.SID as VARNAME,
93 ".$DB->DateToCharFunction("F.TIMESTAMP_X")." TIMESTAMP_X
94 FROM
95 b_form_field F
96 WHERE
97 $strSqlSearch
98 $str
99 and FORM_ID='$WEB_FORM_ID'
100 $strSqlOrder
101 ";
102 $res = $DB->Query($strSql);
103
104 return $res;
105 }
106
107 public static function GetByID($ID)
108 {
109 global $DB;
110 $ID = intval($ID);
111 $strSql = "
112 SELECT
113 F.*,
114 F.SID as VARNAME,
115 ".$DB->DateToCharFunction("F.TIMESTAMP_X")." TIMESTAMP_X
116 FROM b_form_field F
117 WHERE F.ID = $ID
118 ";
119 $res = $DB->Query($strSql);
120 return $res;
121 }
122
123 public static function GetBySID($SID, $FORM_ID = false)
124 {
125 $FORM_ID = intval($FORM_ID);
126
127 global $DB;
128 $strSql = "
129 SELECT
130 F.*,
131 F.SID as VARNAME,
132 ".$DB->DateToCharFunction("F.TIMESTAMP_X")." TIMESTAMP_X
133 FROM b_form_field F
134 WHERE F.SID = '".$DB->ForSql($SID,50)."'
135 ";
136 if ($FORM_ID > 0)
137 $strSql .= " AND F.FORM_ID='".$DB->ForSql($FORM_ID)."'";
138
139 $res = $DB->Query($strSql);
140
141 return $res;
142 }
143
144 public static function GetNextSort($WEB_FORM_ID)
145 {
146 global $DB;
147 $WEB_FORM_ID = intval($WEB_FORM_ID);
148 $strSql = "SELECT max(C_SORT) as MAX_SORT FROM b_form_field WHERE FORM_ID='$WEB_FORM_ID'";
149 $z = $DB->Query($strSql);
150 $zr = $z->Fetch();
151 return (intval($zr["MAX_SORT"])+100);
152 }
153
154 public static function Copy($ID, $CHECK_RIGHTS="Y", $NEW_FORM_ID=false)
155 {
156 global $DB, $strError;
157 $ID = intval($ID);
158 $NEW_FORM_ID = intval($NEW_FORM_ID);
159 $rsField = CFormField::GetByID($ID);
160 if ($arField = $rsField->Fetch())
161 {
162 $RIGHT_OK = "N";
163 if ($CHECK_RIGHTS!="Y" || CForm::IsAdmin()) $RIGHT_OK="Y";
164 else
165 {
166 $F_RIGHT = CForm::GetPermission($arField["FORM_ID"]);
167 if ($F_RIGHT>=25)
168 {
169 if ($NEW_FORM_ID>0)
170 {
171 $NEW_F_RIGHT = CForm::GetPermission($NEW_FORM_ID);
172 if ($NEW_F_RIGHT>=30) $RIGHT_OK = "Y";
173 }
174 elseif ($F_RIGHT>=30)
175 {
176 $RIGHT_OK = "Y";
177 }
178 }
179 }
180
181 if ($RIGHT_OK=="Y")
182 {
183 if (!$NEW_FORM_ID)
184 {
185 while(true)
186 {
187 $SID = $arField["SID"];
188 if (mb_strlen($SID) > 44) $SID = mb_substr($SID, 0, 44);
189 $SID .= "_".RandString(5);
190
191
192 $strSql = "SELECT 'x' FROM b_form WHERE SID='".$DB->ForSql($SID,50)."'";
193 $z = $DB->Query($strSql);
194 if (!($zr = $z->Fetch()))
195 {
196 $strSql = "SELECT 'x' FROM b_form_field WHERE SID='".$DB->ForSql($SID,50)."' AND FORM_ID='".$arField["FORM_ID"]."'";
197 $t = $DB->Query($strSql);
198 if (!($tr = $t->Fetch())) break;
199 }
200 }
201 }
202 else
203 {
204 $SID = $arField["SID"];
205 }
206
208 "FORM_ID" => ($NEW_FORM_ID>0) ? $NEW_FORM_ID : $arField["FORM_ID"],
209 "ACTIVE" => $arField["ACTIVE"],
210 "TITLE" => $arField["TITLE"],
211 "TITLE_TYPE" => $arField["TITLE_TYPE"],
212 "SID" => $SID,
213 "C_SORT" => $arField["C_SORT"],
214 "ADDITIONAL" => $arField["ADDITIONAL"],
215 "REQUIRED" => $arField["REQUIRED"],
216 "IN_FILTER" => $arField["IN_FILTER"],
217 "IN_RESULTS_TABLE" => $arField["IN_RESULTS_TABLE"],
218 "IN_EXCEL_TABLE" => $arField["IN_EXCEL_TABLE"],
219 "FIELD_TYPE" => $arField["FIELD_TYPE"],
220 "COMMENTS" => $arField["COMMENTS"],
221 "FILTER_TITLE" => $arField["FILTER_TITLE"],
222 "RESULTS_TABLE_TITLE" => $arField["RESULTS_TABLE_TITLE"],
223 );
224
225 if (intval($arField["IMAGE_ID"])>0)
226 {
227 $arIMAGE = CFile::MakeFileArray(CFile::CopyFile($arField["IMAGE_ID"]));
228 $arIMAGE["MODULE_ID"] = "form";
229 $arFields["arIMAGE"] = $arIMAGE;
230 }
231
232 $z = CFormField::GetFilterList($arField["FORM_ID"], Array("FIELD_ID" => $ID, "FIELD_ID_EXACT_MATCH" => "Y"));
233 while ($zr = $z->Fetch())
234 {
235 if ($arField["ADDITIONAL"]!="Y") $arFields["arFILTER_".$zr["PARAMETER_NAME"]][] = $zr["FILTER_TYPE"];
236 elseif ($zr["PARAMETER_NAME"]=="USER") $arFields["arFILTER_FIELD"][] = $zr["FILTER_TYPE"];
237 }
238 $NEW_ID = CFormField::Set($arFields);
239 if (intval($NEW_ID)>0)
240 {
241 if ($arField["ADDITIONAL"]!="Y")
242 {
243 $rsAnswer = CFormAnswer::GetList($ID, 'ID', 'ASC');
244 while ($arAnswer = $rsAnswer->Fetch())
245 CFormAnswer::Copy($arAnswer["ID"], $NEW_ID);
246
247 $dbValidators = CFormValidator::GetList($ID);
248 while ($arVal = $dbValidators->Fetch())
249 {
250 CFormValidator::Set($arField['FORM_ID'], $NEW_ID, $arVal['NAME'], $arVal['PARAMS'], $arVal['C_SORT']);
251 }
252 }
253 }
254 return $NEW_ID;
255 }
256 else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."<br>";
257 }
258 else $strError .= GetMessage("FORM_ERROR_FIELD_NOT_FOUND")."<br>";
259 return false;
260 }
261
262 public static function Delete($ID, $CHECK_RIGHTS="Y")
263 {
264 global $DB, $strError;
265 $ID = intval($ID);
266
267 $rsField = CFormField::GetByID($ID);
268 if ($arField = $rsField->Fetch())
269 {
270 $WEB_FORM_ID = intval($arField["FORM_ID"]);
271
272 $F_RIGHT = ($CHECK_RIGHTS!="Y") ? 30 : CForm::GetPermission($WEB_FORM_ID);
273 if ($F_RIGHT>=30)
274 {
275 CFormField::Reset($ID, $CHECK_RIGHTS);
276 // clear field validators
278
279 $strSql = "SELECT IMAGE_ID FROM b_form_field WHERE ID='$ID' and IMAGE_ID>0";
280 $z = $DB->Query($strSql);
281 while ($zr = $z->Fetch())
282 CFile::Delete($zr["IMAGE_ID"]);
283
284 $DB->Query("DELETE FROM b_form_answer WHERE FIELD_ID='$ID'");
285
286 $DB->Query("DELETE FROM b_form_field_filter WHERE FIELD_ID='$ID'");
287
288 $DB->Query("DELETE FROM b_form_field WHERE ID='$ID'");
289
290 return true;
291 }
292 else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."<br>";
293 }
294 else $strError .= GetMessage("FORM_ERROR_FIELD_NOT_FOUND")."<br>";
295 return false;
296 }
297
298 public static function Reset($ID, $CHECK_RIGHTS="Y")
299 {
300 global $DB, $strError;
301 $ID = intval($ID);
302
303 $rsField = CFormField::GetByID($ID);
304 if ($arField = $rsField->Fetch())
305 {
306 $WEB_FORM_ID = intval($arField["FORM_ID"]);
307
308 $F_RIGHT = ($CHECK_RIGHTS!="Y") ? 30 : CForm::GetPermission($WEB_FORM_ID);
309 if ($F_RIGHT>=30)
310 {
311 $DB->Query("DELETE FROM b_form_result_answer WHERE FIELD_ID='".$ID."'");
312
313 return true;
314 }
315 else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."<br>";
316 }
317 else $strError .= GetMessage("FORM_ERROR_FIELD_NOT_FOUND")."<br>";
318 return false;
319 }
320
321 public static function GetFilterTypeList(&$arrUSER, &$arrANSWER_TEXT, &$arrANSWER_VALUE, &$arrFIELD)
322 {
323 $arrUSER = array(
324 "reference_id" => array(
325 "text",
326 "integer",
327 "date",
328 "exist",
329 ),
330 "reference" => array(
331 GetMessage("FORM_TEXT_FIELD"),
332 GetMessage("FORM_NUMERIC_INTERVAL"),
333 GetMessage("FORM_DATE_INTERVAL"),
334 GetMessage("FORM_EXIST_FLAG"),
335 )
336 );
337 $arrANSWER_TEXT = array(
338 "reference_id" => array(
339 "text",
340 "integer",
341 "dropdown",
342 "exist",
343 ),
344 "reference" => array(
345 GetMessage("FORM_TEXT_FIELD"),
346 GetMessage("FORM_NUMERIC_INTERVAL"),
347 GetMessage("FORM_DROPDOWN_LIST"),
348 GetMessage("FORM_EXIST_FLAG"),
349 )
350 );
351 $arrANSWER_VALUE = array(
352 "reference_id" => array(
353 "text",
354 "integer",
355 "dropdown",
356 "exist",
357 ),
358 "reference" => array(
359 GetMessage("FORM_TEXT_FIELD"),
360 GetMessage("FORM_NUMERIC_INTERVAL"),
361 GetMessage("FORM_DROPDOWN_LIST"),
362 GetMessage("FORM_EXIST_FLAG"),
363 )
364 );
365 $arrFIELD = array(
366 "reference_id" => array(
367 "text",
368 "integer",
369 "date",
370 "exist",
371 ),
372 "reference" => array(
373 GetMessage("FORM_TEXT_FIELD"),
374 GetMessage("FORM_NUMERIC_INTERVAL"),
375 GetMessage("FORM_DATE_INTERVAL"),
376 GetMessage("FORM_EXIST_FLAG"),
377 )
378 );
379 }
380
381 public static function GetTypeList()
382 {
383 $arr = array(
384 "reference_id" => array(
385 "text",
386 "integer",
387 "date"),
388 "reference" => array(
389 GetMessage("FORM_FIELD_TEXT"),
390 GetMessage("FORM_FIELD_INTEGER"),
391 GetMessage("FORM_FIELD_DATE")
392 )
393 );
394 return $arr;
395 }
396
397 public static function GetFilterList($WEB_FORM_ID, $arFilter=Array())
398 {
399 global $DB;
400 $WEB_FORM_ID = intval($WEB_FORM_ID);
401 $arSqlSearch = Array();
402 $strSqlSearch = "";
403 if (is_array($arFilter))
404 {
405 $filter_keys = array_keys($arFilter);
406 $keyCount = count($filter_keys);
407 for ($i=0; $i<$keyCount; $i++)
408 {
409 $key = $filter_keys[$i];
410 $val = $arFilter[$filter_keys[$i]];
411 if ((string)$val == '' || $val=="NOT_REF")
412 continue;
413 if (is_array($val) && empty($val))
414 continue;
415 $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys));
416 $key = mb_strtoupper($key);
417 switch($key)
418 {
419 case "FIELD_ID":
420 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
421 $arSqlSearch[] = GetFilterQuery("F.ID",$val,$match);
422 break;
423 case "FIELD_SID":
424 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
425 $arSqlSearch[] = GetFilterQuery("F.SID",$val,$match);
426 break;
427 case "ACTIVE":
428 $arSqlSearch[] = ($val=="Y") ? "F.ACTIVE='Y'" : "F.ACTIVE='N'";
429 break;
430 case "FILTER_TYPE":
431 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
432 $arSqlSearch[] = GetFilterQuery("L.FILTER_TYPE", $val, $match);
433 break;
434 case "PARAMETER_NAME":
435 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
436 $arSqlSearch[] = GetFilterQuery("L.PARAMETER_NAME", $val, $match);
437 break;
438 }
439 }
440 }
441
442 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
443 $strSql = "
444 SELECT
445 F.*,
446 F.SID as VARNAME,
447 L.PARAMETER_NAME,
448 L.FILTER_TYPE
449 FROM
450 b_form_field F,
451 b_form_field_filter L
452 WHERE
453 $strSqlSearch
454 and F.FORM_ID = $WEB_FORM_ID
455 and F.IN_FILTER = 'Y'
456 and L.FIELD_ID = F.ID
457 ORDER BY F.C_SORT, L.PARAMETER_NAME, L.FILTER_TYPE desc
458 ";
459 $res = $DB->Query($strSql);
460 return $res;
461 }
462
463 public static function CheckFields(&$arFields, $FIELD_ID, $CHECK_RIGHTS="Y")
464 {
465 global $DB, $strError;
466 $str = "";
467 $FIELD_ID = intval($FIELD_ID);
468 $FORM_ID = intval($arFields["FORM_ID"]);
469 if ($FORM_ID<=0) $str .= GetMessage("FORM_ERROR_FORM_ID_NOT_DEFINED")."<br>";
470 else
471 {
472 $RIGHT_OK = "N";
473 if ($CHECK_RIGHTS!="Y" || CForm::IsAdmin()) $RIGHT_OK = "Y";
474 else
475 {
476 $F_RIGHT = CForm::GetPermission($FORM_ID);
477 if ($F_RIGHT>=30) $RIGHT_OK = "Y";
478 }
479
480 if ($RIGHT_OK=="Y")
481 {
482 if (trim($arFields["SID"]) <> '') $arFields["VARNAME"] = $arFields["SID"];
483 elseif ($arFields["VARNAME"] <> '') $arFields["SID"] = $arFields["VARNAME"];
484
485 if ($FIELD_ID<=0 && !is_set($arFields, 'ADDITIONAL'))
486 $arFields['ADDITIONAL'] = 'N';
487
488 if ($FIELD_ID<=0 || ($FIELD_ID>0 && is_set($arFields, "SID")))
489 {
490 if (trim($arFields["SID"]) == '') $str .= GetMessage("FORM_ERROR_FORGOT_SID")."<br>";
491 if (preg_match("/[^A-Za-z_01-9]/",$arFields["SID"])) $str .= GetMessage("FORM_ERROR_INCORRECT_SID")."<br>";
492 else
493 {
494 $strSql = "SELECT ID, ADDITIONAL FROM b_form_field WHERE SID='".$DB->ForSql(trim($arFields["SID"]),50)."' and ID<>'".$FIELD_ID."' AND FORM_ID='".$DB->ForSql($arFields["FORM_ID"])."'";
495 $z = $DB->Query($strSql);
496 if ($zr = $z->Fetch())
497 {
498 $s = ($zr["ADDITIONAL"]=="Y") ?
499 str_replace("#TYPE#", GetMessage("FORM_TYPE_FIELD"), GetMessage("FORM_ERROR_WRONG_SID")) :
500 str_replace("#TYPE#", GetMessage("FORM_TYPE_QUESTION"), GetMessage("FORM_ERROR_WRONG_SID"));
501 $s = str_replace("#ID#",$zr["ID"],$s);
502 $str .= $s."<br>";
503 }
504 else
505 {
506 $strSql = "SELECT ID FROM b_form WHERE SID='".$DB->ForSql(trim($arFields["SID"]),50)."'";
507 $z = $DB->Query($strSql);
508 if ($zr = $z->Fetch())
509 {
510 $s = str_replace("#TYPE#", GetMessage("FORM_TYPE_FORM"), GetMessage("FORM_ERROR_WRONG_SID"));
511 $s = str_replace("#ID#",$zr["ID"],$s);
512 $str .= $s."<br>";
513 }
514 }
515 }
516 }
517
518 if (isset($arFields["arIMAGE"]))
519 {
520 $str .= CFile::CheckImageFile($arFields["arIMAGE"]);
521 }
522 }
523 else $str .= GetMessage("FORM_ERROR_ACCESS_DENIED");
524 }
525
526 $strError .= $str;
527 if ($str <> '') return false; else return true;
528 }
529
530 public static function Set($arFields, $FIELD_ID=false, $CHECK_RIGHTS="Y", $UPDATE_FILTER="Y")
531 {
532 global $DB;
533
534 if (CFormField::CheckFields($arFields, $FIELD_ID, $CHECK_RIGHTS))
535 {
536 $arFields_i = array();
537
538 if (trim($arFields["SID"]) <> '') $arFields["VARNAME"] = $arFields["SID"];
539 elseif ($arFields["VARNAME"] <> '') $arFields["SID"] = $arFields["VARNAME"];
540
541 $arFields_i["TIMESTAMP_X"] = $DB->GetNowFunction();
542
543 if (is_set($arFields, "ACTIVE"))
544 $arFields_i["ACTIVE"] = ($arFields["ACTIVE"]=="Y") ? "'Y'" : "'N'";
545
546 if (is_set($arFields, "TITLE"))
547 $arFields_i["TITLE"] = "'".$DB->ForSql($arFields["TITLE"], 2000)."'";
548
549 if (is_set($arFields, "TITLE_TYPE"))
550 $arFields_i["TITLE_TYPE"] = ($arFields["TITLE_TYPE"]=="html") ? "'html'" : "'text'";
551
552 if (is_set($arFields, "SID"))
553 $arFields_i["SID"] = "'".$DB->ForSql($arFields["SID"],50)."'";
554
555 if (is_set($arFields, "C_SORT"))
556 $arFields_i["C_SORT"] = "'".intval($arFields["C_SORT"])."'";
557
558 if (is_set($arFields, "ADDITIONAL"))
559 $arFields_i["ADDITIONAL"] = ($arFields["ADDITIONAL"]=="Y") ? "'Y'" : "'N'";
560
561 if (is_set($arFields, "REQUIRED"))
562 $arFields_i["REQUIRED"] = ($arFields["REQUIRED"]=="Y") ? "'Y'" : "'N'";
563
564 if (is_set($arFields, "IN_RESULTS_TABLE"))
565 $arFields_i["IN_RESULTS_TABLE"] = ($arFields["IN_RESULTS_TABLE"]=="Y") ? "'Y'" : "'N'";
566
567 if (is_set($arFields, "IN_EXCEL_TABLE"))
568 $arFields_i["IN_EXCEL_TABLE"] = ($arFields["IN_EXCEL_TABLE"]=="Y") ? "'Y'" : "'N'";
569
570 if (is_set($arFields, "FIELD_TYPE"))
571 $arFields_i["FIELD_TYPE"] = "'".$DB->ForSql($arFields["FIELD_TYPE"],50)."'";
572
573 if (is_set($arFields, "COMMENTS"))
574 $arFields_i["COMMENTS"] = "'".$DB->ForSql($arFields["COMMENTS"],2000)."'";
575
576 if (is_set($arFields, "FILTER_TITLE"))
577 $arFields_i["FILTER_TITLE"] = "'".$DB->ForSql($arFields["FILTER_TITLE"],2000)."'";
578
579 if (is_set($arFields, "RESULTS_TABLE_TITLE"))
580 $arFields_i["RESULTS_TABLE_TITLE"] = "'".$DB->ForSql($arFields["RESULTS_TABLE_TITLE"],2000)."'";
581
582 if (!empty($arFields["arIMAGE"]["name"]) || !empty($arFields["arIMAGE"]["del"]))
583 {
584 if (!array_key_exists("MODULE_ID", $arFields["arIMAGE"]) || $arFields["arIMAGE"]["MODULE_ID"] == '')
585 $arFields["arIMAGE"]["MODULE_ID"] = "form";
586
587 $fid = CFile::SaveFile($arFields["arIMAGE"], "form");
588 if (intval($fid)>0) $arFields_i["IMAGE_ID"] = intval($fid);
589 else $arFields_i["IMAGE_ID"] = "null";
590 }
591
592 $FIELD_ID = intval($FIELD_ID);
593
594 if ($FIELD_ID>0)
595 {
596 $DB->Update("b_form_field", $arFields_i, "WHERE ID='".$FIELD_ID."'");
597 }
598 else
599 {
600 $arFields_i["FORM_ID"] = "'".intval($arFields["FORM_ID"])."'";
601 $FIELD_ID = $DB->Insert("b_form_field", $arFields_i);
602 }
603
604 if ($FIELD_ID>0)
605 {
606 if ((!isset($arFields["ADDITIONAL"]) || $arFields["ADDITIONAL"] != "Y") && is_set($arFields, "arANSWER"))
607 {
608 $arANSWER = $arFields["arANSWER"];
609 if (is_array($arANSWER) && count($arANSWER)>0)
610 {
611 $arrAnswers = array();
612 $rs = CFormAnswer::GetList($FIELD_ID, 'ID', 'ASC');
613 while($ar = $rs->Fetch())
614 $arrAnswers[] = $ar["ID"];
615
616 foreach($arANSWER as $arA)
617 {
618 $answer_id = in_array($arA["ID"], $arrAnswers) ? intval($arA["ID"]) : 0;
619 if ($arA["DELETE"]=="Y" && $answer_id>0) CFormAnswer::Delete($answer_id, $FIELD_ID);
620 else
621 {
622 if ($answer_id>0 || ($answer_id<=0 && $arA["MESSAGE"] <> ''))
623 {
624 $arFields_a = array(
625 "FIELD_ID" => $FIELD_ID,
626 "MESSAGE" => $arA["MESSAGE"],
627 "VALUE" => $arA["VALUE"],
628 "C_SORT" => $arA["C_SORT"],
629 "ACTIVE" => $arA["ACTIVE"],
630 "FIELD_TYPE" => $arA["FIELD_TYPE"],
631 "FIELD_WIDTH" => $arA["FIELD_WIDTH"],
632 "FIELD_HEIGHT" => $arA["FIELD_HEIGHT"],
633 "FIELD_PARAM" => $arA["FIELD_PARAM"],
634 );
635 CFormAnswer::Set($arFields_a, $answer_id, $FIELD_ID);
636 }
637 }
638 }
639 }
640 }
641
642 CForm::SetMailTemplate(intval($arFields["FORM_ID"]),"N");
643
644 if ($UPDATE_FILTER == 'Y')
645 {
646 $in_filter="N";
647 $DB->Query("UPDATE b_form_field SET IN_FILTER='N' WHERE ID='".$FIELD_ID."'");
648 $arrFilterType = array(
649 "arFILTER_USER" => "USER",
650 "arFILTER_ANSWER_TEXT" => "ANSWER_TEXT",
651 "arFILTER_ANSWER_VALUE" => "ANSWER_VALUE",
652 "arFILTER_FIELD" => "USER",
653 );
654
655 foreach ($arrFilterType as $key => $value)
656 {
657 if (is_set($arFields, $key))
658 {
659 $strSql = "DELETE FROM b_form_field_filter WHERE FIELD_ID='".$FIELD_ID."' and PARAMETER_NAME='".$value."'";
660 $DB->Query($strSql);
661 if (is_array($arFields[$key]))
662 {
663 reset($arFields[$key]);
664 foreach($arFields[$key] as $type)
665 {
666 $arFields_i = array(
667 "FIELD_ID" => "'".intval($FIELD_ID)."'",
668 "FILTER_TYPE" => "'".$DB->ForSql($type,50)."'",
669 "PARAMETER_NAME" => "'".$value."'",
670 );
671 $DB->Insert("b_form_field_filter",$arFields_i);
672 $in_filter="Y";
673 }
674 }
675 }
676 }
677
678 if ($in_filter=="Y")
679 $DB->Query("UPDATE b_form_field SET IN_FILTER='Y' WHERE ID='".$FIELD_ID."'");
680 }
681 }
682 return $FIELD_ID;
683 }
684 return false;
685 }
686}
$type
Определения options.php:106
$arVal
Определения options.php:1785
static Delete($ID, $QUESTION_ID=false)
Определения form_callformanswer.php:31
static GetList($QUESTION_ID, $by='s_sort', $order='asc', $arFilter=[])
Определения form_callformanswer.php:64
static Set($arFields, $ANSWER_ID=false)
Определения form_callformanswer.php:205
static Copy($ID, $NEW_QUESTION_ID=false)
Определения form_callformanswer.php:5
static GetFilterTypeList(&$arrUSER, &$arrANSWER_TEXT, &$arrANSWER_VALUE, &$arrFIELD)
Определения form_callformfield.php:321
static Reset($ID, $CHECK_RIGHTS="Y")
Определения form_callformfield.php:298
static GetNextSort($WEB_FORM_ID)
Определения form_callformfield.php:144
static GetBySID($SID, $FORM_ID=false)
Определения form_callformfield.php:123
static Set($arFields, $FIELD_ID=false, $CHECK_RIGHTS="Y", $UPDATE_FILTER="Y")
Определения form_callformfield.php:530
static GetFilterList($WEB_FORM_ID, $arFilter=Array())
Определения form_callformfield.php:397
static GetByID($ID)
Определения form_callformfield.php:107
static CheckFields(&$arFields, $FIELD_ID, $CHECK_RIGHTS="Y")
Определения form_callformfield.php:463
static GetTypeList()
Определения form_callformfield.php:381
static GetList($WEB_FORM_ID, $get_fields, $by='s_sort', $order='asc', $arFilter=[])
Определения form_callformfield.php:5
static Copy($ID, $CHECK_RIGHTS="Y", $NEW_FORM_ID=false)
Определения form_callformfield.php:154
static Delete($ID, $CHECK_RIGHTS="Y")
Определения form_callformfield.php:262
static GetPermission($form_id, $arGroups=false, $get_from_database="")
Определения form_callform.php:254
static SetMailTemplate($WEB_FORM_ID, $ADD_NEW_TEMPLATE="Y", $old_SID="", $bReturnFullInfo=false)
Определения form_callform.php:1785
static IsAdmin()
Определения form_callform.php:8
static Clear($FIELD_ID)
Определения form_callformvalidator.php:319
static GetList($FIELD_ID, $arFilter=[], $by='C_SORT', $order='ASC')
Определения form_callformvalidator.php:16
static Set($WEB_FORM_ID, $FIELD_ID, $sValSID, $arParams=array(), $C_SORT=100)
Определения form_callformvalidator.php:203
$str
Определения commerceml2.php:63
$arFields
Определения dblapprove.php:5
$arr
Определения file_new.php:624
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
GetFilterSqlSearch($arSqlSearch=array(), $FilterLogic="FILTER_logic")
Определения filter_tools.php:397
GetFilterQuery($field, $val, $procent="Y", $ex_sep=array(), $clob="N", $div_fields="Y", $clob_upper="N")
Определения filter_tools.php:383
$zr
Определения options.php:5
if($ajaxMode) $ID
Определения get_user.php:27
$strError
Определения options_user_settings.php:4
global $DB
Определения cron_frame.php:29
$z
Определения options.php:31
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
InitBVar(&$var)
Определения tools.php:4433
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</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."%"
Определения waybill.php:936
$val
Определения options.php:1793
$rs
Определения action.php:82
$arFilter
Определения user_search.php:106