1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
form_callform.php
См. документацию.
1<?php
2
5
6class CAllForm extends CForm_old
7{
8 public static function IsAdmin()
9 {
10 global $USER, $APPLICATION;
11 if (!is_object($USER)) $USER = new CUser;
12 if ($USER->IsAdmin()) return true;
13 $FORM_RIGHT = $APPLICATION->GetGroupRight("form");
14 if ($FORM_RIGHT>="W") return true;
15 }
16
17 public static function GetResultAnswerArray($WEB_FORM_ID, &$arrColumns, &$arrAnswers, &$arrAnswersSID, $arFilter=Array())
18 {
19 global $DB, $strError;
20 $WEB_FORM_ID = intval($WEB_FORM_ID);
21 $arSqlSearch = Array();
22 $strSqlSearch = "";
23 if (is_array($arFilter))
24 {
25 if (!empty($arFilter["FIELD_SID"])) $arFilter["FIELD_VARNAME"] = $arFilter["FIELD_SID"];
26 elseif (!empty($arFilter["FIELD_VARNAME"])) $arFilter["FIELD_SID"] = $arFilter["FIELD_VARNAME"];
27
28 $filter_keys = array_keys($arFilter);
29 $cntFilterKeys = count($filter_keys);
30 for ($i=0; $i<$cntFilterKeys; $i++)
31 {
32 $key = $filter_keys[$i];
33 $val = $arFilter[$filter_keys[$i]];
34 if(is_array($val))
35 {
36 if(count($val) <= 0)
37 continue;
38 }
39 else
40 {
41 if( ((string)$val == '') || ($val === "NOT_REF") )
42 continue;
43 }
44 $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys)) ? true : false;
45 $key = strtoupper($key);
46 switch($key)
47 {
48 case "FIELD_ID":
49 case "RESULT_ID":
50 $match = (isset($arFilter[$key."_EXACT_MATCH"]) && $arFilter[$key."_EXACT_MATCH"] == "N" && $match_value_set) ? "Y" : "N";
51 $arSqlSearch[] = GetFilterQuery("RA.".$key, $val, $match);
52 break;
53 case "FIELD_SID":
54 $match = (isset($arFilter[$key."_EXACT_MATCH"]) && $arFilter[$key."_EXACT_MATCH"] == "Y" && $match_value_set) ? "N" : "Y";
55 $arSqlSearch[] = GetFilterQuery("F.SID", $val, $match);
56 break;
57 case "IN_RESULTS_TABLE":
58 case "IN_EXCEL_TABLE":
59 $arSqlSearch[] = ($val=="Y") ? "F.".$key."='Y'" : "F.".$key."='N'";
60 break;
61 }
62 }
63 }
64 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
65 $strSql = "
66 SELECT
67 RA.RESULT_ID, RA.FIELD_ID, F.SID, F.SID as VARNAME, F.TITLE, F.TITLE_TYPE, F.FILTER_TITLE, F.RESULTS_TABLE_TITLE,
68 RA.ANSWER_ID, RA.ANSWER_TEXT, A.MESSAGE, RA.ANSWER_VALUE, A.VALUE, RA.USER_TEXT,
69 ".$DB->DateToCharFunction("RA.USER_DATE")." USER_DATE,
70 RA.USER_FILE_ID, RA.USER_FILE_NAME, RA.USER_FILE_IS_IMAGE, RA.USER_FILE_HASH, RA.USER_FILE_SUFFIX, RA.USER_FILE_SIZE,
71 A.FIELD_TYPE, A.FIELD_WIDTH, A.FIELD_HEIGHT, A.FIELD_PARAM
72 FROM
73 b_form_result_answer RA
74 INNER JOIN b_form_field F ON (F.ID = RA.FIELD_ID and F.ACTIVE='Y')
75 LEFT JOIN b_form_answer A ON (A.ID = RA.ANSWER_ID)
76 WHERE
77 $strSqlSearch
78 and RA.FORM_ID = $WEB_FORM_ID
79 ORDER BY RA.RESULT_ID, F.C_SORT, A.C_SORT
80 ";
81 $z = $DB->Query($strSql);
82 while ($zr = $z->Fetch())
83 {
84 $arrAnswers[$zr["RESULT_ID"]][$zr["FIELD_ID"]][intval($zr["ANSWER_ID"])]=$zr;
85 $arrAnswersSID[$zr["RESULT_ID"]][$zr["SID"]][]=$zr;
86 }
87 $q = CFormField::GetList($WEB_FORM_ID, '', '', '',
88 array(
89 "ID" => $arFilter["FIELD_ID"] ?? '',
90 "VARNAME" => $arFilter["FIELD_SID"] ?? '',
91 "SID" => $arFilter["FIELD_SID"] ?? '',
92 "IN_RESULTS_TABLE" => $arFilter["IN_RESULTS_TABLE"] ?? '',
93 "IN_EXCEL_TABLE" => $arFilter["IN_EXCEL_TABLE"] ?? '',
94 "ACTIVE" => "Y")
95 );
96 while ($qr = $q->Fetch())
97 {
98 $arrColumns[$qr["ID"]] = $qr;
99 }
100 }
101
102 public static function GetMailTemplateArray($FORM_ID)
103 {
104 global $DB, $USER, $strError;
105 $FORM_ID = intval($FORM_ID);
106 if ($FORM_ID<=0) return false;
107 $arrRes = array();
108 $strSql = "
109 SELECT
110 FM.MAIL_TEMPLATE_ID
111 FROM
112 b_form_2_mail_template FM
113 WHERE
114 FM.FORM_ID = $FORM_ID
115 ";
116 $rs = $DB->Query($strSql);
117 while ($ar = $rs->Fetch()) $arrRes[] = $ar["MAIL_TEMPLATE_ID"];
118 return $arrRes;
119 }
120
121 public static function GetSiteArray($FORM_ID)
122 {
123 global $DB, $USER, $strError;
124 $FORM_ID = intval($FORM_ID);
125 if ($FORM_ID<=0) return false;
126 $arrRes = array();
127 $strSql = "
128 SELECT
129 FS.SITE_ID
130 FROM
131 b_form_2_site FS
132 WHERE
133 FS.FORM_ID = $FORM_ID
134 ";
135 $rs = $DB->Query($strSql);
136 while ($ar = $rs->Fetch()) $arrRes[] = $ar["SITE_ID"];
137 return $arrRes;
138 }
139
140 public static function ExecHandlerBeforeChangeStatus($RESULT_ID, $ACTION, $NEW_STATUS_ID=0)
141 {
142 global $arrPREV_RESULT_STATUS, $DB, $MESS, $APPLICATION, $USER, $strError;
143 $RESULT_ID = intval($RESULT_ID);
144 if ($RESULT_ID<=0) return;
145 else
146 {
147 $strSql = "
148 SELECT
149 R.*,
150 ".$DB->DateToCharFunction("R.DATE_CREATE")." DATE_CREATE,
151 ".$DB->DateToCharFunction("R.TIMESTAMP_X")." TIMESTAMP_X,
152 S.TITLE STATUS_TITLE,
153 S.DESCRIPTION STATUS_DESCRIPTION,
154 S.DEFAULT_VALUE STATUS_DEFAULT_VALUE,
155 S.CSS STATUS_CSS,
156 S.HANDLER_IN STATUS_HANDLER_IN,
157 S.HANDLER_OUT STATUS_HANDLER_OUT
158 FROM
159 b_form_result R
160 INNER JOIN b_form_status S ON (R.STATUS_ID=S.ID)
161 WHERE
162 R.ID = $RESULT_ID
163 ";
164 $rsResult = $DB->Query($strSql);
165 if ($arResult = $rsResult->Fetch())
166 {
167 $arrPREV_RESULT_STATUS[$RESULT_ID] = $arResult["STATUS_ID"];
168 $handler = trim($arResult["STATUS_HANDLER_OUT"]);
169 if ($handler <> '')
170 {
171 $fname = $handler;
172 $fname = str_replace("\\", "/", $fname);
173 $fname = str_replace("//", "/", $fname);
174 $fname = trim($fname,"/");
175 $CURRENT_STATUS_ID = $arResult["STATUS_ID"];
176 $fname = $_SERVER["DOCUMENT_ROOT"]."/".$fname;
177 include($fname);
178 }
179 }
180 }
181 }
182
183 public static function ExecHandlerAfterChangeStatus($RESULT_ID, $ACTION)
184 {
185 global $arrCURRENT_RESULT_STATUS, $arrPREV_RESULT_STATUS, $DB, $MESS, $APPLICATION, $USER, $strError;
186 $RESULT_ID = intval($RESULT_ID);
187 if ($RESULT_ID<=0) return;
188 else
189 {
190 $strSql = "
191 SELECT
192 R.*,
193 ".$DB->DateToCharFunction("R.DATE_CREATE")." DATE_CREATE,
194 ".$DB->DateToCharFunction("R.TIMESTAMP_X")." TIMESTAMP_X,
195 S.TITLE STATUS_TITLE,
196 S.DESCRIPTION STATUS_DESCRIPTION,
197 S.DEFAULT_VALUE STATUS_DEFAULT_VALUE,
198 S.CSS STATUS_CSS,
199 S.HANDLER_IN STATUS_HANDLER_IN,
200 S.HANDLER_OUT STATUS_HANDLER_OUT
201 FROM
202 b_form_result R
203 INNER JOIN b_form_status S ON (R.STATUS_ID=S.ID)
204 WHERE
205 R.ID = $RESULT_ID
206 ";
207 $rsResult = $DB->Query($strSql);
208 if ($arResult = $rsResult->Fetch())
209 {
210 $arrCURRENT_RESULT_STATUS[$RESULT_ID] = $arResult["STATUS_ID"];
211 $handler = trim($arResult["STATUS_HANDLER_IN"]);
212 if ($handler <> '')
213 {
214 $fname = $handler;
215 $fname = str_replace("\\", "/", $fname);
216 $fname = str_replace("//", "/", $fname);
217 $fname = trim($fname, "/");
218 $fname = $_SERVER["DOCUMENT_ROOT"]."/".$fname;
219 $CURRENT_STATUS_ID = $arResult["STATUS_ID"];
220 $PREV_STATUS_ID = $arrPREV_RESULT_STATUS[$RESULT_ID];
221 include($fname);
222 }
223 }
224 }
225 }
226
227 public static function GetPermissionList($get_default="Y")
228 {
229 global $MESS, $strError;
230 $ref_id = array(1,10,15,20,25,30);
231 $ref = array(
232 "[1] ".GetMessage("FORM_DENIED"),
233 "[10] ".GetMessage("FORM_FILL"),
234 "[15] ".GetMessage("FORM_FILL_EDIT"),
235 "[20] ".GetMessage("FORM_VIEW"),
236 "[25] ".GetMessage("FORM_VIEW_PARAMS"),
237 "[30] ".GetMessage("FORM_WRITE")
238 );
239 $ref_id_def = array();
240 $ref_def = array();
241 if ($get_default=="Y")
242 {
243 $default_perm = COption::GetOptionString("form", "FORM_DEFAULT_PERMISSION");
244 $idx = array_search($default_perm, $ref_id);
245 $ref_id_def[] = 0;
246 $ref_def[] = GetMessage("FORM_DEFAULT")." - ".$ref[$idx];
247 }
248 $arr = array(
249 "reference_id" => array_merge($ref_id_def,$ref_id),
250 "reference" => array_merge($ref_def, $ref));
251 return $arr;
252 }
253
254 public static function GetPermission($form_id, $arGroups=false, $get_from_database="")
255 {
256 global $DB, $USER, $strError;
257 $default_right = COption::GetOptionString("form","FORM_DEFAULT_PERMISSION");
258 if ($arGroups===false)
259 {
260 $arGroups = $USER->GetUserGroupArray();
261 if (!is_array($arGroups))
262 $arGroups = array(2);
263 }
264
265 if (CForm::IsAdmin() && $get_from_database!="Y") $right = 30;
266 else
267 {
268 if (is_array($arGroups) && count($arGroups)>0)
269 {
270 foreach ($arGroups as $k => $g)
271 $arGroups[$k] = intval($g);
272
273 $arr = array();
274 $groups = implode(',', $arGroups);
275 $form_id = intval($form_id);
276 $strSql = "
277 SELECT
278 FG.PERMISSION,
279 FG.GROUP_ID
280 FROM
281 b_form_2_group FG
282 WHERE
283 FG.FORM_ID = '".$form_id."'
284 and FG.GROUP_ID in (".$groups.")
285 ";
286 $t = $DB->Query($strSql);
287 while ($tr = $t->Fetch())
288 $arr[$tr["GROUP_ID"]] = $tr["PERMISSION"];
289
290 if ($get_from_database!="Y")
291 {
292 foreach ($arGroups as $gid)
293 {
294 if (!array_key_exists($gid, $arr))
295 $arr[$gid] = $default_right;
296 }
297 }
298
299 $arr_values = is_array($arr) ? array_values($arr) : array(0);
300 $right = count($arr_values)>0 ? max($arr_values) : 0;
301 }
302 }
303 $right = intval($right);
304 if ($right<=0 && $get_from_database!="Y") $right = $default_right;
305 return $right;
306 }
307
308 public static function GetTemplateList($type="SHOW", $path="xxx", $WEB_FORM_ID=0)
309 {
310 global $DB, $strError;
311 $WEB_FORM_ID = intval($WEB_FORM_ID);
312 if ($type!="MAIL")
313 {
314 if ($path=="xxx")
315 {
316 if ($type=="SHOW") $path = COption::GetOptionString("form", "SHOW_TEMPLATE_PATH");
317 elseif ($type=="SHOW_RESULT") $path = COption::GetOptionString("form", "SHOW_RESULT_TEMPLATE_PATH");
318 elseif ($type=="PRINT_RESULT") $path = COption::GetOptionString("form", "PRINT_RESULT_TEMPLATE_PATH");
319 elseif ($type=="EDIT_RESULT") $path = COption::GetOptionString("form", "EDIT_RESULT_TEMPLATE_PATH");
320 }
321 $arr = array();
322 $handle=@opendir($_SERVER["DOCUMENT_ROOT"].$path);
323 if($handle)
324 {
325 while (false!==($fname = readdir($handle)))
326 {
327 if (is_file($_SERVER["DOCUMENT_ROOT"].$path.$fname) && $fname!="." && $fname!="..")
328 {
329 $arReferenceId[] = $fname;
330 $arReference[] = $fname;
331 }
332 }
333 closedir($handle);
334 }
335 }
336 elseif ($WEB_FORM_ID>0)
337 {
338 $arrSITE = array();
339 $strSql = "
340 SELECT
341 F.MAIL_EVENT_TYPE,
342 FS.SITE_ID
343 FROM
344 b_form F
345 INNER JOIN b_form_2_site FS ON (FS.FORM_ID = F.ID)
346 WHERE
347 F.ID = $WEB_FORM_ID
348 ";
349 $z = $DB->Query($strSql);
350
351 $MAIL_EVENT_TYPE = '';
352 $arrSITE = array();
353 while ($zr = $z->Fetch())
354 {
355 $MAIL_EVENT_TYPE = $zr["MAIL_EVENT_TYPE"];
356 $arrSITE[] = $zr["SITE_ID"];
357 }
358
359 $arReferenceId = array();
360 $arReference = array();
361 if ($MAIL_EVENT_TYPE <> '')
362 {
363 $arFilter = Array(
364 "ACTIVE" => "Y",
365 "SITE_ID" => $arrSITE,
366 "EVENT_NAME" => $MAIL_EVENT_TYPE
367 );
368 $e = CEventMessage::GetList("id", "asc", $arFilter);
369 while ($er=$e->Fetch())
370 {
371 if (!in_array($er["ID"], $arReferenceId))
372 {
373 $arReferenceId[] = $er["ID"];
374 $arReference[] = "(".$er["LID"].") ".TruncateText($er["SUBJECT"],50);
375 }
376 }
377 }
378 }
379 $arr = array("reference"=>$arReference,"reference_id"=>$arReferenceId);
380 return $arr;
381 }
382
383 public static function GetMenuList($arFilter=Array(), $check_rights="Y")
384 {
385 global $DB, $USER, $strError;
386 $arSqlSearch = Array();
387 $strSqlSearch = "";
388 if (is_array($arFilter))
389 {
390 $filter_keys = array_keys($arFilter);
391 $cntFilterKeys = count($filter_keys);
392 for ($i=0; $i<$cntFilterKeys; $i++)
393 {
394 $key = $filter_keys[$i];
395 $val = $arFilter[$filter_keys[$i]];
396 if(is_array($val))
397 {
398 if(count($val) <= 0)
399 continue;
400 }
401 else
402 {
403 if( ((string)$val == '') || ($val === "NOT_REF") )
404 continue;
405 }
406 $match_value_set = in_array($key."_EXACT_MATCH", $filter_keys);
407 $key = strtoupper($key);
408 switch($key)
409 {
410 case "FORM_ID":
411 case "LID":
412 $match = (isset($arFilter[$key."_EXACT_MATCH"]) && $arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
413 $arSqlSearch[] = GetFilterQuery("L.".$key,$val,$match);
414 break;
415 case "MENU":
416 $match = (isset($arFilter[$key."_EXACT_MATCH"]) && $arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
417 $arSqlSearch[] = GetFilterQuery("L.MENU", $val, $match);
418 break;
419 }
420 }
421 }
422 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
423 if ($check_rights=="N" || CForm::IsAdmin())
424 {
425 $strSql = "
426 SELECT
427 F.ID,
428 F.NAME,
429 L.LID,
430 L.MENU
431 FROM
432 b_form_menu L,
433 b_form F
434 WHERE
435 $strSqlSearch
436 and L.FORM_ID = F.ID
437 ORDER BY F.C_SORT
438 ";
439 }
440 else
441 {
442 $arGroups = $USER->GetUserGroupArray();
443 if (!is_array($arGroups)) $arGroups[] = 2;
444 $groups = implode(",",$arGroups);
445 $strSql = "
446 SELECT
447 F.ID,
448 F.NAME,
449 L.LID,
450 L.MENU
451 FROM
452 b_form_menu L,
453 b_form F,
454 b_form_2_group G
455 WHERE
456 $strSqlSearch
457 and L.FORM_ID = F.ID
458 and G.FORM_ID = F.ID
459 and G.GROUP_ID in ($groups)
460 GROUP BY
461 L.ID, L.LID, L.MENU, F.NAME, F.ID, F.C_SORT
462 HAVING
463 max(G.PERMISSION)>=15
464 ORDER BY F.C_SORT
465 ";
466 }
467 $res = $DB->Query($strSql);
468 return $res;
469 }
470
471 public static function GetNextSort()
472 {
473 global $DB, $strError;
474 $strSql = "SELECT max(C_SORT) as MAX_SORT FROM b_form";
475 $z = $DB->Query($strSql);
476 $zr = $z->Fetch();
477 return (intval($zr["MAX_SORT"])+100);
478 }
479
480 public static function ShowRequired($flag)
481 {
482 if ($flag=="Y") return "<font color='red'><span class='form-required starrequired'>*</span></font>";
483 }
484
485 public static function GetTextFilter($FID, $size="45", $field_text="class=\"inputtext\"", $field_checkbox="class=\"inputcheckbox\"")
486 {
487 $var = "find_".$FID;
488 $var_exec_match = "find_".$FID."_exact_match";
489 global ${$var}, ${$var_exec_match};
490 $checked = (${$var_exec_match}=="Y") ? "checked" : "";
491 return '<input '.$field_text.' type="text" name="'.$var.'" size="'.$size.'" value="'.htmlspecialcharsbx(${$var}).'"><input '.$field_checkbox.' type="checkbox" value="Y" name="'.$var.'_exact_match" title="'.GetMessage("FORM_EXACT_MATCH").'" '.$checked.'>'.ShowFilterLogicHelp();
492 }
493
494 public static function GetDateFilter($FID, $form_name="form1", $show_select="Y", $field_select="class=\"inputselect\"", $field_input="class=\"inputtext\"")
495 {
496 $var1 = "find_".$FID."_1";
497 $var2 = "find_".$FID."_2";
498
499 global $APPLICATION, ${$var1}, ${$var2};
500
501 if (!defined('ADMIN_SECTION'))
502 {
503 ob_start();
504 $APPLICATION->IncludeComponent(
505 'bitrix:main.calendar',
506 '',
507 array(
508 'SHOW_INPUT' => 'Y',
509 'FORM_NAME' => $form_name,
510 'INPUT_NAME' => $var1,
511 'INPUT_NAME_FINISH' => $var2,
512 'INPUT_VALUE' => ${$var1},
513 'INPUT_VALUE_FINISH' => ${$var2},
514 'SHOW_TIME' => 'N',
515 ),
516 null,
517 array('HIDE_ICONS' => 'Y')
518 );
519 $res = ob_get_contents();
520 ob_end_clean();
521
522 return $res;
523 }
524 else
525 return CalendarPeriod($var1, htmlspecialcharsbx(${$var1}), $var2, htmlspecialcharsbx(${$var2}), $form_name, $show_select, $field_select, $field_input);
526 }
527
528 public static function GetNumberFilter($FID, $size="10", $field="class=\"inputtext\"")
529 {
530 global $MESS;
531 $var1 = "find_".$FID."_1";
532 $var2 = "find_".$FID."_2";
533 global ${$var1}, ${$var2};
534 return '<input '.$field.' type="text" name="'.$var1.'" size="'.$size.'" value="'.htmlspecialcharsbx(${$var1}).'">&nbsp;'.GetMessage("FORM_TILL").'&nbsp;<input '.$field.' type="text" name="'.$var2.'" size="'.$size.'" value="'.htmlspecialcharsbx(${$var2}).'">';
535 }
536
537 public static function GetExistFlagFilter($FID, $field="class=\"inputcheckbox\"")
538 {
539 global $MESS;
540 $var = "find_".$FID;
541 global ${$var};
542 return InputType("checkbox", $var, "Y", ${$var}, false, "", $field);
543 }
544
545 public static function GetCrmFlagFilter($FID, $field="class=\"inputselect\"")
546 {
547 $var = "find_".$FID;
548 global ${$var};
549 $arr = array("reference_id"=>array('Y', 'N'), "reference"=>array(GetMessage('MAIN_YES'), GetMessage('MAIN_NO')));
550 return SelectBoxFromArray($var, $arr, ${$var}, GetMessage("FORM_ALL"), $field);
551 }
552
553 public static function GetDropDownFilter($ID, $PARAMETER_NAME, $FID, $field="class=\"inputselect\"")
554 {
555 global $DB, $MESS, $strError;
556 if ($PARAMETER_NAME=="ANSWER_VALUE") $str=", VALUE as REFERENCE"; else $str=", MESSAGE as REFERENCE";
557 $ID = intval($ID);
558 $strSql = "
559 SELECT
560 ID as REFERENCE_ID
561 $str
562 FROM
563 b_form_answer
564 WHERE
565 FIELD_ID = $ID
566 ORDER BY
567 C_SORT
568 ";
569 $z = $DB->Query($strSql);
570 $ref = array();
571 $ref_id = array();
572 while ($zr = $z->Fetch())
573 {
574 if (trim($zr["REFERENCE"]) <> '')
575 {
576 $ref[] = TruncateText($zr["REFERENCE"],70);
577 $ref_id[] = $zr["REFERENCE_ID"];
578 }
579 }
580 $arr = array("reference_id"=>$ref_id, "reference"=>$ref);
581 $var = "find_".$FID;
582 global ${$var};
583 return SelectBoxFromArray($var, $arr, ${$var}, GetMessage("FORM_ALL"), $field);
584 }
585
586 public static function GetTextValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
587 {
588 $fname = "form_text_".$FIELD_NAME;
589 if (is_array($arrVALUES) && isset($arrVALUES[$fname])) $value = $arrVALUES[$fname];
590 else $value = $arAnswer["VALUE"];
591 return $value;
592 }
593
594 public static function GetHiddenValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
595 {
596 $fname = "form_hidden_".$FIELD_NAME;
597 if (is_array($arrVALUES) && isset($arrVALUES[$fname])) $value = $arrVALUES[$fname];
598 else $value = $arAnswer["VALUE"];
599 return $value;
600 }
601
602 public static function GetPasswordValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
603 {
604 $fname = "form_password_".$FIELD_NAME;
605 if (is_array($arrVALUES) && isset($arrVALUES[$fname])) $value = $arrVALUES[$fname];
606 else $value = $arAnswer["VALUE"];
607 return $value;
608 }
609
610 public static function GetEmailValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
611 {
612 $fname = "form_email_".$FIELD_NAME;
613 if (is_array($arrVALUES) && isset($arrVALUES[$fname])) $value = $arrVALUES[$fname];
614 else $value = $arAnswer["VALUE"];
615 return $value;
616 }
617
618 public static function GetUrlValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
619 {
620 $fname = "form_url_".$FIELD_NAME;
621 if (is_array($arrVALUES) && isset($arrVALUES[$fname])) $value = $arrVALUES[$fname];
622 else $value = $arAnswer["VALUE"];
623 return $value;
624 }
625
626 public static function GetTextField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
627 {
628 if ($PARAM == '')
629 {
630 $PARAM = ' class="inputtext" ';
631 }
632 $sizeAttr = '';
633 $SIZE = (int)$SIZE;
634 if ($SIZE > 0)
635 {
636 $sizeAttr = ' size="'.(string)$SIZE.'"';
637 }
638 return '<input type="text" '.$PARAM.' name="form_text_'.$FIELD_NAME.'" value="'.htmlspecialcharsbx($VALUE).'"'.$sizeAttr.'>';
639 }
640
641 public static function GetHiddenField($FIELD_NAME, $VALUE="", $PARAM="")
642 {
643 return "<input type=\"hidden\" ".$PARAM." name=\"form_hidden_".$FIELD_NAME."\" value=\"".htmlspecialcharsbx($VALUE)."\" />";
644 }
645
646
647 public static function GetEmailField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
648 {
649 if ($PARAM == '') $PARAM = " class=\"inputtext\" ";
650 return "<input type=\"text\" ".$PARAM." name=\"form_email_".$FIELD_NAME."\" value=\"".htmlspecialcharsbx($VALUE)."\" size=\"".$SIZE."\" />";
651 }
652
653 public static function GetUrlField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
654 {
655 if ($PARAM == '') $PARAM = " class=\"inputtext\" ";
656 return "<input type=\"text\" ".$PARAM." name=\"form_url_".$FIELD_NAME."\" value=\"".htmlspecialcharsbx($VALUE)."\" size=\"".$SIZE."\" />";
657 }
658
659 public static function GetPasswordField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
660 {
661 if ($PARAM == '') $PARAM = " class=\"inputtext\" ";
662 return "<input type=\"password\" ".$PARAM." name=\"form_password_".$FIELD_NAME."\" value=\"".htmlspecialcharsbx($VALUE)."\" size=\"".$SIZE."\" />";
663 }
664
665 public static function GetDropDownValue($FIELD_NAME, $arDropDown, $arrVALUES=false)
666 {
667 $fname = "form_dropdown_".$FIELD_NAME;
668 if (is_array($arrVALUES) && isset($arrVALUES[$fname]))
669 {
670 $value = intval($arrVALUES[$fname]);
671 }
672 elseif (is_array($arDropDown[$FIELD_NAME]["param"]))
673 {
674 $c = count($arDropDown[$FIELD_NAME]["param"]);
675 if ($c>0)
676 {
677 for ($i=0; $i<=$c-1; $i++)
678 {
679 if (mb_strpos(mb_strtolower($arDropDown[$FIELD_NAME]["param"][$i]), "selected") !== false || mb_strpos(mb_strtolower($arDropDown[$FIELD_NAME]["param"][$i]), "checked") !== false)
680 {
681 $value = $arDropDown[$FIELD_NAME]["reference_id"][$i];
682 break;
683 }
684 }
685 }
686 }
687 return $value;
688 }
689
690 public static function GetDropDownField($FIELD_NAME, $arDropDown, $VALUE, $PARAM="")
691 {
692 if ($PARAM == '') $PARAM = " class=\"inputselect\" ";
693 return SelectBoxFromArray("form_dropdown_".$FIELD_NAME, $arDropDown, $VALUE, "", $PARAM);
694 }
695
696 public static function GetMultiSelectValue($FIELD_NAME, $arMultiSelect, $arrVALUES=false)
697 {
698 $fname = "form_multiselect_".$FIELD_NAME;
699 if (is_array($arrVALUES) && isset($arrVALUES[$fname]))
700 {
701 $value=$arrVALUES[$fname];
702 }
703 elseif (is_array($arMultiSelect[$FIELD_NAME]["param"]))
704 {
705 $c = count($arMultiSelect[$FIELD_NAME]["param"]);
706 if ($c>0)
707 {
708 for ($i=0;$i<=$c-1;$i++)
709 {
710 if (mb_strpos(mb_strtolower($arMultiSelect[$FIELD_NAME]["param"][$i]), "selected") !== false || mb_strpos(mb_strtolower($arMultiSelect[$FIELD_NAME]["param"][$i]), "checked") !== false)
711 $value[] = $arMultiSelect[$FIELD_NAME]["reference_id"][$i];
712 }
713 }
714 }
715 return $value;
716 }
717
718 public static function GetMultiSelectField($FIELD_NAME, $arMultiSelect, $arSELECTED=array(), $HEIGHT="", $PARAM="")
719 {
720 if ($PARAM == '') $PARAM = " class=\"inputselect\" ";
721 return SelectBoxMFromArray("form_multiselect_".$FIELD_NAME."[]", $arMultiSelect, $arSELECTED, "", false, $HEIGHT, $PARAM);
722 }
723
724 public static function GetDateValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
725 {
726 $fname = "form_date_".$FIELD_NAME;
727 if (is_array($arrVALUES) && isset($arrVALUES[$fname])) $value = $arrVALUES[$fname];
728 else
729 {
730 if (preg_match("/NOW_DATE/i",$arAnswer["FIELD_PARAM"])) $value = GetTime(time(),"SHORT");
731 elseif (preg_match("/NOW_TIME/i",$arAnswer["FIELD_PARAM"])) $value = GetTime(time()+CTimeZone::GetOffset(),"FULL");
732 else $value = $arAnswer["VALUE"];
733 }
734 return $value;
735 }
736
737 public static function GetDateField($FIELD_NAME, $FORM_NAME, $VALUE="", $FIELD_WIDTH="", $PARAM="")
738 {
739 global $APPLICATION;
740
741 $rid = RandString(8);
742 $res = "<input type=\"text\" ".$PARAM." name=\"form_date_".$FIELD_NAME."\" id=\"form_date_".$rid."\" value=\"".htmlspecialcharsbx($VALUE)."\" size=\"".$FIELD_WIDTH."\" />";
743
744 ob_start();
745 $APPLICATION->IncludeComponent(
746 'bitrix:main.calendar',
747 '',
748 array(
749 'SHOW_INPUT' => 'N',
750 'FORM_NAME' => $FORM_NAME,
751 'INPUT_NAME' => "form_date_".$rid,
752 'SHOW_TIME' => 'N',
753 ),
754 null,
755 array('HIDE_ICONS' => 'Y')
756 );
757 $res .= ob_get_contents();
758 ob_end_clean();
759
760 return $res;
761 }
762
763 public static function GetCheckBoxValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
764 {
765 $fname = "form_checkbox_".$FIELD_NAME;
766
767 if (is_array($arrVALUES))
768 {
769 if(isset($arrVALUES[$fname]))
770 {
771 $arr = $arrVALUES[$fname];
772 if (is_array($arr) && in_array($arAnswer["ID"],$arr))
773 {
774 $value = $arAnswer["ID"];
775 }
776 }
777 }
778 else
779 {
780 if ($value<=0)
781 {
782 if (mb_strpos(mb_strtolower($arAnswer["FIELD_PARAM"]), "selected") !== false || mb_strpos(mb_strtolower($arAnswer["FIELD_PARAM"]), "checked") !== false)
783 {
784 $value = $arAnswer["ID"];
785 }
786 }
787 }
788
789 return $value;
790 }
791
792 public static function GetCheckBoxField($FIELD_NAME, $FIELD_ID, $VALUE="", $PARAM="")
793 {
794 if ($PARAM == '') $PARAM = " class=\"inputcheckbox\" ";
795 return InputType("checkbox", "form_checkbox_".$FIELD_NAME."[]", $FIELD_ID, $VALUE, false, "", $PARAM);
796 }
797
798 public static function GetRadioValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
799 {
800 $fname = "form_radio_".$FIELD_NAME;
801 if (is_array($arrVALUES) && isset($arrVALUES[$fname]))
802 {
803 $value = intval($arrVALUES[$fname]);
804 }
805 else
806 {
807 if (mb_strpos(mb_strtolower($arAnswer["FIELD_PARAM"]), "selected") !== false || mb_strpos(mb_strtolower($arAnswer["FIELD_PARAM"]), "checked") !== false)
808 $value = $arAnswer["ID"];
809 }
810 return $value;
811 }
812
813 public static function GetRadioField($FIELD_NAME, $FIELD_ID, $VALUE="", $PARAM="")
814 {
815 if ($PARAM == '') $PARAM = " class=\"inputradio\" ";
816
817 return InputType("radio", "form_radio_".$FIELD_NAME, $FIELD_ID, $VALUE, false, "", $PARAM);
818 }
819
820 public static function GetTextAreaValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
821 {
822 $fname = "form_textarea_".$FIELD_NAME;
823 if (is_array($arrVALUES) && isset($arrVALUES[$fname])) $value = $arrVALUES[$fname];
824 else $value = $arAnswer["VALUE"];
825 return $value;
826 }
827
828 public static function GetTextAreaField($FIELD_NAME, $WIDTH="", $HEIGHT="", $PARAM="", $VALUE="")
829 {
830 if ($PARAM == '')
831 {
832 $PARAM = ' class="inputtextarea"';
833 }
834 $colsAttr = '';
835 $WIDTH = (int)$WIDTH;
836 if ($WIDTH > 0)
837 {
838 $colsAttr = ' cols="'.(string)$WIDTH.'"';
839 }
840 $rowsAttr = '';
841 $HEIGHT = (int)$HEIGHT;
842 if ($HEIGHT > 0)
843 {
844 $rowsAttr = ' rows="'.(string)$HEIGHT.'"';
845 }
846 return '<textarea name="form_textarea_'.$FIELD_NAME.'"'.$colsAttr.$rowsAttr.$PARAM.' >'.htmlspecialcharsbx($VALUE).'</textarea>';
847 }
848
849 public static function GetFileField($FIELD_NAME, $WIDTH="", $FILE_TYPE="IMAGE", $MAX_FILE_SIZE=0, $VALUE="", $PARAM_FILE="", $PARAM_CHECKBOX="")
850 {
851 global $USER;
852 if (!is_object($USER)) $USER = new CUser;
853 if ($PARAM_FILE == '') $PARAM_FILE = " class=\"inputfile\" ";
854 if ($PARAM_CHECKBOX == '') $PARAM_CHECKBOX = " class=\"inputcheckbox\" ";
855 $show_notes = (mb_strtoupper($FILE_TYPE) == "IMAGE" || $USER->isAdmin()) ? true : false;
856 return CFile::InputFile("form_".mb_strtolower($FILE_TYPE)."_".$FIELD_NAME, $WIDTH, $VALUE, false, $MAX_FILE_SIZE, $FILE_TYPE, $PARAM_FILE, 0, "", $PARAM_CHECKBOX, $show_notes);
857 }
858
859 public static function GetDataByID($WEB_FORM_ID, &$arForm, &$arQuestions, &$arAnswers, &$arDropDown, &$arMultiSelect, $additional="N", $active="N")
860 {
861 global $strError;
862 $WEB_FORM_ID = intval($WEB_FORM_ID);
863 $arForm = array();
864 $arQuestions = array();
865 $arAnswers = array();
866 $arDropDown = array();
867 $arMultiSelect = array();
868 $z = CForm::GetByID($WEB_FORM_ID);
869 if ($arForm = $z->Fetch())
870 {
871 if (!is_set($arForm, "FORM_TEMPLATE")) $arForm["FORM_TEMPLATE"] = CForm::GetFormTemplateByID($WEB_FORM_ID);
872
873 $u = CFormField::GetList($WEB_FORM_ID, $additional, "s_c_sort", "asc", $active == "N" ? array("ACTIVE"=>"Y") : array());
874 while ($ur=$u->Fetch())
875 {
876 $arQuestions[$ur["SID"]] = $ur;
877 $w = CFormAnswer::GetList($ur["ID"], "s_c_sort", "asc", ($active == "N" ? array("ACTIVE"=>"Y") : array()));
878 while ($wr=$w->Fetch()) $arAnswers[$ur["SID"]][] = $wr;
879 }
880
881 if (is_array($arQuestions) && is_array($arAnswers))
882 {
883 foreach ($arQuestions as $arQ)
884 {
885 $QUESTION_ID = $arQ["SID"];
886 $arDropReference = array();
887 $arDropReferenceID = array();
888 $arDropParam = array();
889 $arMultiReference = array();
890 $arMultiReferenceID = array();
891 $arMultiParam = array();
892 if (is_array($arAnswers[$QUESTION_ID]))
893 {
894 foreach ($arAnswers[$QUESTION_ID] as $arA)
895 {
896 switch ($arA["FIELD_TYPE"])
897 {
898 case "dropdown":
899 $arDropReference[] = $arA["MESSAGE"];
900 $arDropReferenceID[] = $arA["ID"];
901 $arDropParam[] = $arA["FIELD_PARAM"];
902 break;
903 case "multiselect":
904 $arMultiReference[] = $arA["MESSAGE"];
905 $arMultiReferenceID[] = $arA["ID"];
906 $arMultiParam[] = $arA["FIELD_PARAM"];
907 break;
908 }
909 }
910 }
911 if (count($arDropReference)>0)
912 $arDropDown[$QUESTION_ID] = array("reference"=>$arDropReference, "reference_id"=>$arDropReferenceID, "param" => $arDropParam);
913 if (count($arMultiReference)>0)
914 $arMultiSelect[$QUESTION_ID] = array("reference"=>$arMultiReference, "reference_id"=>$arMultiReferenceID, "param" => $arMultiParam);
915 }
916 }
917
918 reset($arForm);
919 reset($arQuestions);
920 reset($arAnswers);
921 reset($arDropDown);
922 reset($arMultiSelect);
923
924 return $arForm["ID"];
925 }
926 else return false;
927
928 }
929
930 public static function __check_PushError(&$container, $MESSAGE, $key = false)
931 {
932 if (is_array($container))
933 {
934 if ($key !== false) $container[$key] = $MESSAGE;
935 else $container[] = $MESSAGE;
936 }
937 else $container .= ($container <> '' ? "<br />" : "").$MESSAGE;
938 }
939
940 // check form field values for required fields, date format validation, file type validation, additional validators
941 public static function Check($WEB_FORM_ID, $arrVALUES=false, $RESULT_ID=false, $CHECK_RIGHTS="Y", $RETURN_ARRAY="N")
942 {
943 global $DB, $APPLICATION, $USER;
944
945 if ($arrVALUES===false) $arrVALUES = $_REQUEST;
946
947 $RESULT_ID = intval($RESULT_ID);
948
949 $errors = $RETURN_ARRAY == "Y" ? array() : "";
950 $REQUIRED_FIELDS = [];
951
952 $WEB_FORM_ID = intval($WEB_FORM_ID);
953 if ($WEB_FORM_ID>0)
954 {
955 $WEB_FORM_ID = CForm::GetDataByID($WEB_FORM_ID, $arForm, $arQuestions, $arAnswers, $arDropDown, $arMultiSelect, "ALL");
956 $WEB_FORM_ID = intval($WEB_FORM_ID);
957 if ($WEB_FORM_ID>0)
958 {
959 $F_RIGHT = ($CHECK_RIGHTS=="Y") ? CForm::GetPermission($WEB_FORM_ID) : 30;
960
961 if ($F_RIGHT<10) CForm::__check_PushError($errors, GetMessage("FORM_ACCESS_DENIED_FOR_FORM_WRITE"));
962 else
963 {
964 $NOT_ANSWER = "NOT_ANSWER";
965 foreach ($arQuestions as $key => $arQuestion)
966 {
967 $arAnswerValues = array();
968
969 $FIELD_ID = $arQuestion["ID"];
970 if ($arQuestion["TITLE_TYPE"]=="html")
971 {
972 $FIELD_TITLE = strip_tags($arQuestion["TITLE"]);
973 }
974 else
975 {
976 $FIELD_TITLE = $arQuestion["TITLE"];
977 }
978
979 if ($arQuestion["ADDITIONAL"]!="Y")
980 {
981 $FIELD_SID = $arQuestion["SID"];
982 $FIELD_REQUIRED = $arQuestion["REQUIRED"];
983
984 if ($FIELD_REQUIRED=="Y") $REQUIRED_FIELDS[$FIELD_SID] = "N";
985
986 $startType = "";
987 $bCheckValidators = true;
988 if (is_array($arAnswers[$FIELD_SID]))
989 {
990 foreach ($arAnswers[$FIELD_SID] as $key => $arAnswer)
991 {
992 $ANSWER_ID = 0;
993 $FIELD_TYPE = $arAnswer["FIELD_TYPE"];
994 $FIELD_PARAM = $arAnswer["FIELD_PARAM"];
995
996 if ($startType == "")
997 $startType = $FIELD_TYPE;
998 else
999 $bCheckValidators &= $startType == $FIELD_TYPE;
1000
1001 switch ($FIELD_TYPE) :
1002
1003 case "radio":
1004 case "dropdown":
1005
1006 $fname = "form_".$FIELD_TYPE."_".$FIELD_SID;
1007 $arAnswerValues[] = $arrVALUES[$fname];
1008 $ANSWER_ID = intval($arrVALUES[$fname]);
1009 if ($ANSWER_ID>0 && $ANSWER_ID==$arAnswer["ID"])
1010 {
1011 if ($FIELD_REQUIRED=="Y" && !preg_match("/".$NOT_ANSWER."/i", $FIELD_PARAM))
1012 {
1013 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1014 }
1015 }
1016
1017 break;
1018
1019 case "checkbox":
1020 case "multiselect":
1021
1022 $fname = "form_".$FIELD_TYPE."_".$FIELD_SID;
1023 if (is_array($arrVALUES[$fname]) && count($arrVALUES[$fname])>0)
1024 {
1025 $arAnswerValues = $arrVALUES[$fname];
1026 reset($arrVALUES[$fname]);
1027 foreach($arrVALUES[$fname] as $ANSWER_ID)
1028 {
1029 $ANSWER_ID = intval($ANSWER_ID);
1030 if ($ANSWER_ID>0 && $ANSWER_ID==$arAnswer["ID"])
1031 {
1032 if ($FIELD_REQUIRED=="Y" && !preg_match("/".$NOT_ANSWER."/i", $FIELD_PARAM))
1033 {
1034 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1035 break;
1036 }
1037 }
1038 }
1039 }
1040
1041 break;
1042
1043 case "text":
1044 case "textarea":
1045 case "password":
1046 case "hidden":
1047
1048 $fname = "form_".$FIELD_TYPE."_".$arAnswer["ID"];
1049 $ANSWER_ID = intval($arAnswer["ID"]);
1050 $USER_TEXT = $arrVALUES[$fname];
1051 $arAnswerValues[] = $arrVALUES[$fname];
1052 if (trim($USER_TEXT) <> '')
1053 {
1054 if ($FIELD_REQUIRED=="Y")
1055 {
1056 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1057 break;
1058 }
1059 }
1060 break;
1061
1062 case "url":
1063
1064 $fname = "form_".$FIELD_TYPE."_".$arAnswer["ID"];
1065 $arAnswerValues[] = $arrVALUES[$fname];
1066 $ANSWER_ID = intval($arAnswer["ID"]);
1067 $USER_TEXT = $arrVALUES[$fname];
1068 if ($USER_TEXT <> '')
1069 {
1070 if (!preg_match("/^(http|https|ftp):\/\//i",$USER_TEXT))
1071 {
1072 CForm::__check_PushError($errors, GetMessage('FORM_ERROR_BAD_URL'), $FIELD_SID);
1073 }
1074 if ($FIELD_REQUIRED=="Y")
1075 {
1076 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1077 break;
1078 }
1079 }
1080
1081 break;
1082
1083 case "email":
1084
1085 $fname = "form_".$FIELD_TYPE."_".$arAnswer["ID"];
1086 $arAnswerValues[] = $arrVALUES[$fname];
1087 $ANSWER_ID = intval($arAnswer["ID"]);
1088 $USER_TEXT = $arrVALUES[$fname];
1089 if ($USER_TEXT <> '')
1090 {
1091 if (!check_email($USER_TEXT))
1092 {
1093 CForm::__check_PushError($errors, GetMessage('FORM_ERROR_BAD_EMAIL'), $FIELD_SID);
1094 }
1095 if ($FIELD_REQUIRED=="Y")
1096 {
1097 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1098 break;
1099 }
1100 }
1101
1102 break;
1103
1104 case "date":
1105
1106 $fname = "form_".$FIELD_TYPE."_".$arAnswer["ID"];
1107 $arAnswerValues[] = $arrVALUES[$fname];
1108 $USER_DATE = $arrVALUES[$fname];
1109 if ($USER_DATE <> '')
1110 {
1111 if (!CheckDateTime($USER_DATE))
1112 {
1114 $errors,
1115 str_replace("#FIELD_NAME#", $FIELD_TITLE, GetMessage("FORM_INCORRECT_DATE_FORMAT")),
1116 $FIELD_SID
1117 );
1118 }
1119 if ($FIELD_REQUIRED=="Y")
1120 {
1121 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1122 break;
1123 }
1124 }
1125 break;
1126
1127 case "image":
1128
1129 $fname = "form_".$FIELD_TYPE."_".$arAnswer["ID"];
1130 $fname_del = $arrVALUES["form_".$FIELD_TYPE."_".$arAnswer["ID"]."_del"];
1131 $ANSWER_ID = intval($arAnswer["ID"]);
1132 $arIMAGE = isset($arrVALUES[$fname]) ? $arrVALUES[$fname] : $_FILES[$fname];
1133 if (is_array($arIMAGE) && $arIMAGE["tmp_name"] <> '')
1134 {
1135 $arIMAGE["MODULE_ID"] = "form";
1136 if (CFile::CheckImageFile($arIMAGE) <> '')
1137 {
1139 $errors,
1140 str_replace("#FIELD_NAME#", $FIELD_TITLE, GetMessage("FORM_INCORRECT_FILE_TYPE")),
1141 $FIELD_SID
1142
1143 );
1144 }
1145 else
1146 {
1147 $arAnswerValues[] = $arIMAGE;
1148 }
1149
1150 if ($FIELD_REQUIRED=="Y")
1151 {
1152 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1153 break;
1154 }
1155 }
1156 elseif ($RESULT_ID>0 && $fname_del!="Y")
1157 {
1158 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1159 break;
1160 }
1161
1162 break;
1163
1164 case "file":
1165
1166 $fname = "form_".$FIELD_TYPE."_".$arAnswer["ID"];
1167 $fname_del = $arrVALUES["form_".$FIELD_TYPE."_".$arAnswer["ID"]."_del"];
1168 $arFILE = isset($arrVALUES[$fname]) ? $arrVALUES[$fname] : $_FILES[$fname];
1169 if (is_array($arFILE) && $arFILE["tmp_name"] <> '')
1170 {
1171 $arAnswerValues[] = $arFILE;
1172 if ($FIELD_REQUIRED=="Y")
1173 {
1174 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1175 break;
1176 }
1177 }
1178 elseif ($RESULT_ID>0 && $fname_del!="Y")
1179 {
1180 $REQUIRED_FIELDS[$FIELD_SID] = "Y";
1181 break;
1182 }
1183
1184 break;
1185
1186 endswitch;
1187 }
1188 }
1189 }
1190 else
1191 {
1192 $FIELD_TYPE = $arQuestion["FIELD_TYPE"];
1193
1194 $fname = "form_date_ADDITIONAL_".$arQuestion["ID"];
1195 $arAnswerValues = array($arrVALUES[$fname]);
1196
1197 $bCheckValidators = true;
1198 switch ($FIELD_TYPE) :
1199
1200 case "date":
1201
1202 $USER_DATE = $arrVALUES[$fname];
1203 if ($USER_DATE <> '')
1204 {
1205 if (!CheckDateTime($USER_DATE))
1206 {
1208 $errors,
1209 str_replace("#FIELD_NAME#", $FIELD_TITLE, GetMessage("FORM_INCORRECT_DATE_FORMAT")),
1210 $FIELD_SID
1211 );
1212 }
1213 }
1214 break;
1215
1216 endswitch;
1217 }
1218
1219 // check custom validators
1220 if ($bCheckValidators)
1221 {
1222 if ($arQuestion["ADDITIONAL"] == "Y" || is_array($arAnswers[$FIELD_SID]))
1223 {
1224 $rsValidatorList = CFormValidator::GetList($FIELD_ID, array("TYPE" => $FIELD_TYPE));
1225 while ($arValidator = $rsValidatorList->Fetch())
1226 {
1227 if (!CFormValidator::Execute($arValidator, $arQuestion, $arAnswers[$FIELD_SID], $arAnswerValues))
1228 {
1229 if ($e = $APPLICATION->GetException())
1230 {
1231 CForm::__check_PushError($errors, str_replace("#FIELD_NAME#", $FIELD_TITLE, $e->GetString()), $FIELD_SID);
1232 }
1233 }
1234 }
1235 }
1236 }
1237 }
1238
1239 if (($arForm["USE_CAPTCHA"] == "Y" && !$RESULT_ID && !defined('ADMIN_SECTION')))
1240 {
1241 if (!($GLOBALS["APPLICATION"]->CaptchaCheckCode($arrVALUES["captcha_word"], $arrVALUES["captcha_sid"])))
1242 {
1243 CForm::__check_PushError($errors, GetMessage("FORM_WRONG_CAPTCHA"));
1244 }
1245 }
1246
1247 $EMPTY_REQUIRED_NAMES = [];
1248 foreach ($REQUIRED_FIELDS as $key => $value)
1249 {
1250 if ($value == "N")
1251 {
1252 if ($arQuestions[$key]["RESULTS_TABLE_TITLE"] <> '')
1253 {
1254 $title = $arQuestions[$key]["RESULTS_TABLE_TITLE"];
1255 }
1256 /*elseif (strlen($arQuestions[$key]["FILTER_TITLE"])>0)
1257 {
1258 $title = trim($arQuestions[$key]["FILTER_TITLE"],":");
1259 }*/
1260 else
1261 {
1262 $title = ($arQuestions[$key]["TITLE_TYPE"]=="html") ? strip_tags($arQuestions[$key]["TITLE"]) : $arQuestions[$key]["TITLE"];
1263 }
1264 if ($RETURN_ARRAY == 'N')
1265 $EMPTY_REQUIRED_NAMES[] = $title;
1266 else
1267 CForm::__check_PushError($errors, GetMessage("FORM_EMPTY_REQUIRED_FIELDS").' '.$title, $key);
1268 }
1269 }
1270
1271 if ($RETURN_ARRAY == 'N')
1272 {
1273 if (!empty($EMPTY_REQUIRED_NAMES))
1274 {
1275 $errMsg = "";
1276 $errMsg .= GetMessage("FORM_EMPTY_REQUIRED_FIELDS")."<br />";
1277 foreach ($EMPTY_REQUIRED_NAMES as $key => $name) $errMsg .= ($key != 0 ? "<br />" : "")."&nbsp;&nbsp;&raquo;&nbsp;\"".$name."\"";
1279 }
1280 }
1281 }
1282 }
1283 else CForm::__check_PushError($errors, GetMessage("FORM_INCORRECT_FORM_ID"));
1284 }
1285 return $errors;
1286 }
1287
1288 public static function CheckFields($arFields, $FORM_ID, $CHECK_RIGHTS="Y")
1289 {
1290 global $DB, $strError, $APPLICATION, $USER;
1291 $str = "";
1292 $FORM_ID = intval($FORM_ID);
1293 $RIGHT_OK = "N";
1294 if ($CHECK_RIGHTS!="Y" || CForm::IsAdmin()) $RIGHT_OK = "Y";
1295 else
1296 {
1297 if ($FORM_ID>0)
1298 {
1299 $F_RIGHT = CForm::GetPermission($FORM_ID);
1300 if ($F_RIGHT>=30) $RIGHT_OK = "Y";
1301 }
1302 }
1303
1304 if ($RIGHT_OK=="Y")
1305 {
1306
1307 if ($arFields["SID"] <> '') $arFields["VARNAME"] = $arFields["SID"];
1308 elseif ($arFields["VARNAME"] <> '') $arFields["SID"] = $arFields["VARNAME"];
1309
1310 if ($FORM_ID<=0 || ($FORM_ID>0 && is_set($arFields, "NAME")))
1311 {
1312 if (trim($arFields["NAME"]) == '') $str .= GetMessage("FORM_ERROR_FORGOT_NAME")."<br>";
1313 }
1314
1315 if ($FORM_ID<=0 || ($FORM_ID>0 && is_set($arFields, "SID")))
1316 {
1317 if (trim($arFields["SID"]) == '') $str .= GetMessage("FORM_ERROR_FORGOT_SID")."<br>";
1318 if (preg_match("/[^A-Za-z_01-9]/",$arFields["SID"])) $str .= GetMessage("FORM_ERROR_INCORRECT_SID")."<br>";
1319 else
1320 {
1321 $strSql = "SELECT ID FROM b_form WHERE SID='".$DB->ForSql(trim($arFields["SID"]),50)."' and ID<>'$FORM_ID'";
1322 $z = $DB->Query($strSql);
1323 if ($zr = $z->Fetch())
1324 {
1325 $s = str_replace("#TYPE#", GetMessage("FORM_TYPE_FORM"), GetMessage("FORM_ERROR_WRONG_SID"));
1326 $s = str_replace("#ID#",$zr["ID"],$s);
1327 $str .= $s."<br>";
1328 }
1329 else
1330 {
1331 $strSql = "SELECT ID, ADDITIONAL FROM b_form_field WHERE SID='".$DB->ForSql(trim($arFields["SID"]),50)."'";
1332 $z = $DB->Query($strSql);
1333 if ($zr = $z->Fetch())
1334 {
1335 $s = ($zr["ADDITIONAL"]=="Y") ?
1336 str_replace("#TYPE#", GetMessage("FORM_TYPE_FIELD"), GetMessage("FORM_ERROR_WRONG_SID")) :
1337 str_replace("#TYPE#", GetMessage("FORM_TYPE_QUESTION"), GetMessage("FORM_ERROR_WRONG_SID"));
1338
1339 $s = str_replace("#ID#",$zr["ID"],$s);
1340 $str .= $s."<br>";
1341 }
1342 }
1343 }
1344 }
1345 $str .= CFile::CheckImageFile($arFields["arIMAGE"]);
1346 }
1347 else $str .= GetMessage("FORM_ERROR_ACCESS_DENIED");
1348
1349 $strError .= $str;
1350 if ($str <> '') return false; else return true;
1351 }
1352
1353 public static function Set($arFields, $FORM_ID=false, $CHECK_RIGHTS="Y")
1354 {
1355 global $DB, $strError;
1356 global $CACHE_MANAGER;
1357
1358 $FORM_ID = intval($FORM_ID);
1359 if (CForm::CheckFields($arFields, $FORM_ID, $CHECK_RIGHTS))
1360 {
1361 $arFields_i = array();
1362
1363 if (trim($arFields["SID"]) <> '') $arFields["VARNAME"] = $arFields["SID"];
1364 elseif ($arFields["VARNAME"] <> '') $arFields["SID"] = $arFields["VARNAME"];
1365
1366 //$arFields_i["TIMESTAMP_X"] = $DB->GetNowFunction();
1367 $arFields_i["TIMESTAMP_X"] = date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time()+CTimeZone::GetOffset());
1368
1369 if (is_set($arFields, "NAME"))
1370 $arFields_i["NAME"] = $arFields['NAME'];//"'".$DB->ForSql($arFields["NAME"],255)."'";
1371
1372 if (is_set($arFields, "SID"))
1373 $arFields_i["SID"] = $arFields['SID'];//"'".$DB->ForSql($arFields["SID"],255)."'";
1374
1375 if (is_set($arFields, "DESCRIPTION"))
1376 $arFields_i["DESCRIPTION"] = $arFields['DESCRIPTION'];//"'".$DB->ForSql($arFields["DESCRIPTION"],2000)."'";
1377
1378 if (is_set($arFields, "C_SORT"))
1379 $arFields_i["C_SORT"] = intval($arFields["C_SORT"]);//"'".intval($arFields["C_SORT"])."'";
1380
1381 if (is_set($arFields, "BUTTON"))
1382 $arFields_i["BUTTON"] = $arFields['BUTTON']; //"'".$DB->ForSql($arFields["BUTTON"],255)."'";
1383
1384 if (is_set($arFields, "USE_CAPTCHA"))
1385 $arFields_i["USE_CAPTCHA"] = $arFields["USE_CAPTCHA"] == "Y" ? "Y" : "N";// "'Y'" : "'N'";
1386
1387 if (is_set($arFields, "DESCRIPTION_TYPE"))
1388 $arFields_i["DESCRIPTION_TYPE"] = ($arFields["DESCRIPTION_TYPE"]=="html") ? "html" : "text";//"'html'" : "'text'";
1389
1390 if (is_set($arFields, "FORM_TEMPLATE"))
1391 $arFields_i["FORM_TEMPLATE"] = $arFields['FORM_TEMPLATE'];//"'".$DB->ForSql($arFields["FORM_TEMPLATE"])."'";
1392
1393 if (is_set($arFields, "USE_DEFAULT_TEMPLATE"))
1394 $arFields_i["USE_DEFAULT_TEMPLATE"] = $arFields["USE_DEFAULT_TEMPLATE"] == "Y" ? "Y" : "N";//"'Y'" : "'N'";
1395
1396 if (is_set($arFields, "SHOW_TEMPLATE"))
1397 $arFields_i["SHOW_TEMPLATE"] = $arFields['SHOW_TEMPLATE'];//"'".$DB->ForSql($arFields["SHOW_TEMPLATE"],255)."'";
1398
1399 if (is_set($arFields, "SHOW_RESULT_TEMPLATE"))
1400 $arFields_i["SHOW_RESULT_TEMPLATE"] = $arFields['SHOW_RESULT_TEMPLATE']; //"'".$DB->ForSql($arFields["SHOW_RESULT_TEMPLATE"],255)."'";
1401
1402 if (is_set($arFields, "PRINT_RESULT_TEMPLATE"))
1403 $arFields_i["PRINT_RESULT_TEMPLATE"] = $arFields['PRINT_RESULT_TEMPLATE'];//"'".$DB->ForSql($arFields["PRINT_RESULT_TEMPLATE"],255)."'";
1404
1405 if (is_set($arFields, "EDIT_RESULT_TEMPLATE"))
1406 $arFields_i["EDIT_RESULT_TEMPLATE"] = $arFields['EDIT_RESULT_TEMPLATE'];//"'".$DB->ForSql($arFields["EDIT_RESULT_TEMPLATE"],255)."'";
1407
1408 if (is_set($arFields, "FILTER_RESULT_TEMPLATE"))
1409 $arFields_i["FILTER_RESULT_TEMPLATE"] = $arFields['FILTER_RESULT_TEMPLATE']; //"'".$DB->ForSql($arFields["FILTER_RESULT_TEMPLATE"],255)."'";
1410
1411 if (is_set($arFields, "TABLE_RESULT_TEMPLATE"))
1412 $arFields_i["TABLE_RESULT_TEMPLATE"] = $arFields['TABLE_RESULT_TEMPLATE']; //"'".$DB->ForSql($arFields["TABLE_RESULT_TEMPLATE"],255)."'";
1413
1414 if (is_set($arFields, "USE_RESTRICTIONS"))
1415 $arFields_i["USE_RESTRICTIONS"] = $arFields["USE_RESTRICTIONS"] == "Y" ? "Y" : "N";//"'Y'" : "'N'";
1416
1417 if (is_set($arFields, "RESTRICT_USER"))
1418 $arFields_i["RESTRICT_USER"] = intval($arFields["RESTRICT_USER"]);//"'".intval($arFields["RESTRICT_USER"])."'";
1419
1420 if (is_set($arFields, "RESTRICT_TIME"))
1421 $arFields_i["RESTRICT_TIME"] = intval($arFields["RESTRICT_TIME"]);//"'".intval($arFields["RESTRICT_TIME"])."'";
1422
1423 if (is_set($arFields, "arRESTRICT_STATUS"))
1424 $arFields_i["RESTRICT_STATUS"] = implode(",", $arFields["arRESTRICT_STATUS"]);//"'".$DB->ForSql(implode(",", $arFields["arRESTRICT_STATUS"]))."'";
1425
1426 if (is_set($arFields, "STAT_EVENT1"))
1427 $arFields_i["STAT_EVENT1"] = $arFields['STAT_EVENT1']; //"'".$DB->ForSql($arFields["STAT_EVENT1"],255)."'";
1428
1429 if (is_set($arFields, "STAT_EVENT2"))
1430 $arFields_i["STAT_EVENT2"] = $arFields['STAT_EVENT2']; //"'".$DB->ForSql($arFields["STAT_EVENT2"],255)."'";
1431
1432 if (is_set($arFields, "STAT_EVENT3"))
1433 $arFields_i["STAT_EVENT3"] = $arFields['STAT_EVENT3']; //"'".$DB->ForSql($arFields["STAT_EVENT3"],255)."'";
1434
1435 if (CForm::IsOldVersion()!="Y")
1436 {
1437 unset($arFields_i["SHOW_TEMPLATE"]);
1438 unset($arFields_i["SHOW_RESULT_TEMPLATE"]);
1439 unset($arFields_i["PRINT_RESULT_TEMPLATE"]);
1440 unset($arFields_i["EDIT_RESULT_TEMPLATE"]);
1441 }
1442
1443 $z = $DB->Query("SELECT IMAGE_ID, SID, SID as VARNAME FROM b_form WHERE ID='".$FORM_ID."'");
1444 $zr = $z->Fetch();
1445 $oldSID = $zr["SID"];
1446 if ($arFields["arIMAGE"]["name"] <> '' || $arFields["arIMAGE"]["del"] <> '')
1447 {
1448 if(intval($zr["IMAGE_ID"]) > 0)
1449 $arFields["arIMAGE"]["old_file"] = $zr["IMAGE_ID"];
1450
1451 if (!array_key_exists("MODULE_ID", $arFields["arIMAGE"]) || $arFields["arIMAGE"]["MODULE_ID"] == '')
1452 $arFields["arIMAGE"]["MODULE_ID"] = "form";
1453
1454 $fid = CFile::SaveFile($arFields["arIMAGE"], "form");
1455 if (intval($fid)>0) $arFields_i["IMAGE_ID"] = intval($fid);
1456 else $arFields_i["IMAGE_ID"] = "null";
1457 }
1458
1459 $mailEventTypes = ['FORM_FILLING_'.$oldSID => true];
1460 if ($arFields['SID'])
1461 {
1462 $arFields_i["MAIL_EVENT_TYPE"] = "FORM_FILLING_".$arFields["SID"];
1463 $mailEventTypes['FORM_FILLING_'.$arFields['SID']] = true;
1464 }
1465 else
1466 {
1467 $arFields_i["MAIL_EVENT_TYPE"] = "FORM_FILLING_".$oldSID;
1468 }
1469 $mailEventTypes = array_keys($mailEventTypes);
1470
1471 $correctMailTemplates = true;
1472 if (!empty($arFields['arMAIL_TEMPLATE']) && is_array($arFields['arMAIL_TEMPLATE']))
1473 {
1475 if (!empty($arFields['arMAIL_TEMPLATE']))
1476 {
1477 $badTemplates = [];
1479 'select' => ['ID'],
1480 'filter' => [
1481 '@ID' => $arFields['arMAIL_TEMPLATE'],
1482 '!=EVENT_NAME' => $mailEventTypes
1483 ]
1484 ]);
1485 while ($row = $iterator->fetch())
1486 {
1487 $badTemplates[] = $row['ID'];
1488 }
1489 unset($row, $iterator);
1490 if (!empty($badTemplates))
1491 {
1492 $correctMailTemplates = false;
1493 if (count($badTemplates) > 1)
1494 {
1495 $strError .= ' '.Loc::getMessage(
1496 'FORM_ERR_BAD_MAIL_TEMPLATE_LIST_EVENT',
1497 ['#IDS#' => implode(', ', $badTemplates)]
1498 );
1499 }
1500 else
1501 {
1502 $strError .= ' '.Loc::getMessage(
1503 'FORM_ERR_BAD_MAIL_TEMPLATE_EVENT',
1504 ['#ID#' => implode('', $badTemplates)]
1505 );
1506 }
1507 }
1508 unset($badTemplates);
1509 }
1510 }
1511 if (!$correctMailTemplates)
1512 {
1513 return false;
1514 }
1515
1516 if ($FORM_ID>0)
1517 {
1518 $strUpdate = $DB->PrepareUpdate('b_form', $arFields_i);
1519 if ($strUpdate != '')
1520 {
1521 $query = 'UPDATE b_form SET '.$strUpdate." WHERE ID='".$FORM_ID."'";
1522 $arBinds = array('FORM_TEMPLATE' => $arFields_i['FORM_TEMPLATE']);
1523 $DB->QueryBind($query, $arBinds);
1524 }
1525
1526 CForm::SetMailTemplate($FORM_ID, "N", $oldSID);
1527 }
1528 else
1529 {
1530 $FORM_ID = $DB->Add("b_form", $arFields_i, array('FORM_TEMPLATE'));
1531 CForm::SetMailTemplate($FORM_ID, "N");
1532 }
1533 $FORM_ID = intval($FORM_ID);
1534
1535 if ($FORM_ID>0)
1536 {
1537 if (is_set($arFields, "arSITE"))
1538 {
1539 $DB->Query("DELETE FROM b_form_2_site WHERE FORM_ID='".$FORM_ID."'");
1540 if (is_array($arFields["arSITE"]))
1541 {
1542 reset($arFields["arSITE"]);
1543 foreach($arFields["arSITE"] as $sid)
1544 {
1545 $strSql = "
1546 INSERT INTO b_form_2_site (FORM_ID, SITE_ID) VALUES (
1547 $FORM_ID,
1548 '".$DB->ForSql($sid,2)."'
1549 )
1550 ";
1551 $DB->Query($strSql);
1552 }
1553 }
1554 }
1555
1556 if (is_set($arFields, "arMENU"))
1557 {
1558 $DB->Query("DELETE FROM b_form_menu WHERE FORM_ID='".$FORM_ID."'");
1559 if (is_array($arFields["arMENU"]))
1560 {
1561 foreach ($arFields["arMENU"] as $lid => $menu)
1562 {
1563 $arFields_i = array(
1564 "FORM_ID" => $FORM_ID,
1565 "LID" => "'".$DB->ForSql($lid,2)."'",
1566 "MENU" => "'".$DB->ForSql($menu,50)."'"
1567 );
1568
1569 $DB->Insert("b_form_menu", $arFields_i);
1570 }
1571 }
1572 }
1573
1574 if (is_set($arFields, "arMAIL_TEMPLATE"))
1575 {
1576 $DB->Query("DELETE FROM b_form_2_mail_template WHERE FORM_ID='".$FORM_ID."'");
1577 if (is_array($arFields["arMAIL_TEMPLATE"]))
1578 {
1579 foreach ($arFields["arMAIL_TEMPLATE"] as $mid)
1580 {
1581 $strSql = "
1582 INSERT INTO b_form_2_mail_template (FORM_ID, MAIL_TEMPLATE_ID) VALUES (
1583 $FORM_ID,
1584 '".intval($mid)."'
1585 )
1586 ";
1587 $DB->Query($strSql);
1588 }
1589 }
1590 }
1591
1592 if (is_set($arFields, "arGROUP"))
1593 {
1594 $DB->Query("DELETE FROM b_form_2_group WHERE FORM_ID='".$FORM_ID."'");
1595 if (is_array($arFields["arGROUP"]))
1596 {
1597 foreach ($arFields["arGROUP"] as $group_id => $perm)
1598 {
1599 if (intval($perm)>0)
1600 {
1601 $arFields_i = array(
1602 "FORM_ID" => $FORM_ID,
1603 "GROUP_ID" => "'".intval($group_id)."'",
1604 "PERMISSION" => "'".intval($perm)."'"
1605 );
1606 $DB->Insert("b_form_2_group", $arFields_i);
1607 }
1608 }
1609 }
1610 }
1611
1612 $CACHE_MANAGER->ClearByTag('form_'.$FORM_ID);
1613 }
1614 return $FORM_ID;
1615 }
1616 return false;
1617 }
1618
1619 public static function Copy($ID, $CHECK_RIGHTS="Y")
1620 {
1621 global $DB, $APPLICATION, $strError;
1622 $ID = intval($ID);
1623 if ($CHECK_RIGHTS!="Y" || CForm::IsAdmin())
1624 {
1625 $rsForm = CForm::GetByID($ID);
1626 $arForm = $rsForm->Fetch();
1627 if (!is_set($arForm, "FORM_TEMPLATE")) $arForm["FORM_TEMPLATE"] = CForm::GetFormTemplateByID($ID);
1628
1629 while(true)
1630 {
1631 $SID = $arForm["SID"];
1632 if (mb_strlen($SID) > 25) $SID = mb_substr($SID, 0, 25);
1633 $SID .= "_".RandString(5);
1634
1635 $strSql = "SELECT 'x' FROM b_form WHERE SID='".$DB->ForSql($SID,50)."'";
1636 $z = $DB->Query($strSql);
1637 if (!($zr = $z->Fetch())) break;
1638 }
1639
1640 $arFields = array(
1641 "NAME" => $arForm["NAME"],
1642 "SID" => $SID,
1643 "C_SORT" => $arForm["C_SORT"],
1644 "FIRST_SITE_ID" => $arForm["FIRST_SITE_ID"],
1645 "BUTTON" => $arForm["BUTTON"],
1646 "USE_CAPTCHA" => $arForm["USE_CAPTCHA"],
1647 "DESCRIPTION" => $arForm["DESCRIPTION"],
1648 "DESCRIPTION_TYPE" => $arForm["DESCRIPTION_TYPE"],
1649 "SHOW_TEMPLATE" => $arForm["SHOW_TEMPLATE"],
1650 "FORM_TEMPLATE" => $arForm["FORM_TEMPLATE"],
1651 "USE_DEFAULT_TEMPLATE" => $arForm["USE_DEFAULT_TEMPLATE"],
1652 "SHOW_RESULT_TEMPLATE" => $arForm["SHOW_RESULT_TEMPLATE"],
1653 "PRINT_RESULT_TEMPLATE" => $arForm["PRINT_RESULT_TEMPLATE"],
1654 "EDIT_RESULT_TEMPLATE" => $arForm["EDIT_RESULT_TEMPLATE"],
1655 "FILTER_RESULT_TEMPLATE" => $arForm["FILTER_RESULT_TEMPLATE"],
1656 "TABLE_RESULT_TEMPLATE" => $arForm["TABLE_RESULT_TEMPLATE"],
1657 "STAT_EVENT1" => $arForm["STAT_EVENT1"],
1658 "STAT_EVENT2" => $SID,
1659 "STAT_EVENT3" => $arForm["STAT_EVENT3"],
1660 "arSITE" => CForm::GetSiteArray($ID)
1661 );
1662 $z = CForm::GetMenuList(array("FORM_ID"=>$ID), "N");
1663 while ($zr = $z->Fetch()) $arFields["arMENU"][$zr["LID"]] = $zr["MENU"];
1664
1665 $w = CGroup::GetList("dropdown", "asc", Array("ADMIN"=>"N"), $v3);
1666 $arGroups = array();
1667 while ($wr=$w->Fetch()) $arGroups[] = $wr["ID"];
1668 if (is_array($arGroups))
1669 {
1670 foreach($arGroups as $gid)
1671 $arFields["arGROUP"][$gid] = CForm::GetPermission($ID, array($gid), "Y");
1672 }
1673
1674 if (intval($arForm["IMAGE_ID"])>0)
1675 {
1676 $arIMAGE = CFile::MakeFileArray(CFile::CopyFile($arForm["IMAGE_ID"]));
1677 $arIMAGE["MODULE_ID"] = "form";
1678 $arFields["arIMAGE"] = $arIMAGE;
1679 }
1680
1681 $NEW_ID = CForm::Set($arFields, 0);
1682
1683 if (intval($NEW_ID)>0)
1684 {
1685 $rsStatus = CFormStatus::GetList($ID);
1686 while ($arStatus = $rsStatus->Fetch()) CFormStatus::Copy($arStatus["ID"], "N", $NEW_ID);
1687
1688 $rsField = CFormField::GetList($ID, "ALL");
1689 while ($arField = $rsField->Fetch())
1690 {
1691 CFormField::Copy($arField["ID"], "N", $NEW_ID);
1692 }
1693 }
1694 return $NEW_ID;
1695 }
1696 else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."<br>";
1697 return false;
1698 }
1699
1700 public static function Delete($ID, $CHECK_RIGHTS="Y")
1701 {
1702 global $DB, $strError;
1703 $ID = intval($ID);
1704
1705 if ($CHECK_RIGHTS!="Y" || CForm::IsAdmin())
1706 {
1707 // delete form results
1708 if (CForm::Reset($ID, "N"))
1709 {
1710 // delete temporary template
1711 $tmp_filename = $_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/tmp/form/form_".$ID.".php";
1712 if (file_exists($tmp_filename)) @unlink($tmp_filename);
1713
1714 // delete form statuses
1715 $rsStatuses = CFormStatus::GetList($ID, '', '', $arFilter);
1716 while ($arStatus = $rsStatuses->Fetch()) CFormStatus::Delete($arStatus["ID"], "N");
1717
1718 // delete from fields & questions
1719 $rsFields = CFormField::GetList($ID, "ALL");
1720 while ($arField = $rsFields->Fetch()) CFormField::Delete($arField["ID"], "N");
1721
1722 // delete form image
1723 $strSql = "SELECT IMAGE_ID FROM b_form WHERE ID='$ID' and IMAGE_ID>0";
1724 $z = $DB->Query($strSql);
1725 while ($zr = $z->Fetch()) CFile::Delete($zr["IMAGE_ID"]);
1726
1727 // delete mail event type and mail templates, assigned to the current form
1728 $q = CForm::GetByID($ID);
1729 $qr = $q->Fetch();
1730 if (trim($qr["MAIL_EVENT_TYPE"]) <> '')
1731 {
1732 // delete mail templates
1733 $em = new CEventMessage;
1734 $e = $em->GetList("id", "desc", array("EVENT_NAME"=>$qr["MAIL_EVENT_TYPE"], "EVENT_NAME_EXACT_MATCH" => "Y"));
1735 while ($er=$e->Fetch()) $em->Delete($er["ID"]);
1736
1737 // delete mail event type
1738 $et = new CEventType;
1739 $et->Delete($qr["MAIL_EVENT_TYPE"]);
1740 }
1741
1742 // delete site assignment
1743 $DB->Query("DELETE FROM b_form_2_site WHERE FORM_ID='$ID'");
1744
1745 // delete mail templates assignment
1746 $DB->Query("DELETE FROM b_form_2_mail_template WHERE FORM_ID='$ID'");
1747
1748 // delete form menu
1749 $DB->Query("DELETE FROM b_form_menu WHERE FORM_ID='$ID'");
1750
1751 // delete from rights
1752 $DB->Query("DELETE FROM b_form_2_group WHERE FORM_ID='$ID'");
1753
1754 // and finally delete form
1755 $DB->Query("DELETE FROM b_form WHERE ID='$ID'");
1756
1757 return true;
1758 }
1759 }
1760 else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."<br>";
1761 return false;
1762 }
1763
1764 public static function Reset($ID, $CHECK_RIGHTS="Y")
1765 {
1766 global $DB, $strError;
1767
1768 $ID = intval($ID);
1769
1770 $F_RIGHT = ($CHECK_RIGHTS!="Y") ? 30 : CForm::GetPermission($ID);
1771 if ($F_RIGHT>=30)
1772 {
1773 $rsFields = CFormField::GetList($ID, "ALL");
1774 while ($arField = $rsFields->Fetch()) CFormField::Reset($arField["ID"], "N");
1775
1776 $DB->Query("DELETE FROM b_form_result WHERE FORM_ID='$ID'");
1777
1778 return true;
1779 }
1780 else $strError .= GetMessage("FORM_ERROR_ACCESS_DENIED")."<br>";
1781
1782 return false;
1783 }
1784
1785 public static function SetMailTemplate($WEB_FORM_ID, $ADD_NEW_TEMPLATE="Y", $old_SID="", $bReturnFullInfo = false)
1786 {
1787 global $MESS;
1788 $arrReturn = array();
1789 $WEB_FORM_ID = intval($WEB_FORM_ID);
1790 $q = CForm::GetByID($WEB_FORM_ID);
1791 if ($arrForm = $q->Fetch())
1792 {
1793 $old_MAIL_EVENT_TYPE = '';
1794 $MAIL_EVENT_TYPE = "FORM_FILLING_".$arrForm["SID"];
1795 if ($old_SID <> '') $old_MAIL_EVENT_TYPE = "FORM_FILLING_".$old_SID;
1796
1797 $et = new CEventType;
1798 $em = new CEventMessage;
1799
1800 if ($MAIL_EVENT_TYPE <> '')
1801 $et->Delete($MAIL_EVENT_TYPE);
1802
1804 $OLD_MESS = $MESS;
1805 while ($arLang = $z->Fetch())
1806 {
1807 IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/admin/form_mail.php", $arLang["LID"]);
1808
1809 $str = "";
1810 $str .= "#RS_FORM_ID# - ".GetMessage("FORM_L_FORM_ID")."\n";
1811 $str .= "#RS_FORM_NAME# - ".GetMessage("FORM_L_NAME")."\n";
1812 $str .= "#RS_FORM_SID# - ".GetMessage("FORM_L_SID")."\n";
1813 $str .= "#RS_RESULT_ID# - ".GetMessage("FORM_L_RESULT_ID")."\n";
1814 $str .= "#RS_DATE_CREATE# - ".GetMessage("FORM_L_DATE_CREATE")."\n";
1815 $str .= "#RS_USER_ID# - ".GetMessage("FORM_L_USER_ID")."\n";
1816 $str .= "#RS_USER_EMAIL# - ".GetMessage("FORM_L_USER_EMAIL")."\n";
1817 $str .= "#RS_USER_NAME# - ".GetMessage("FORM_L_USER_NAME")."\n";
1818 $str .= "#RS_USER_AUTH# - ".GetMessage("FORM_L_USER_AUTH")."\n";
1819 $str .= "#RS_STAT_GUEST_ID# - ".GetMessage("FORM_L_STAT_GUEST_ID")."\n";
1820 $str .= "#RS_STAT_SESSION_ID# - ".GetMessage("FORM_L_STAT_SESSION_ID")."\n";
1821
1822 $strFIELDS = "";
1823 $w = CFormField::GetList($WEB_FORM_ID, "ALL", '', '', array("ACTIVE" => "Y"));
1824 while ($wr=$w->Fetch())
1825 {
1826 if ($wr["RESULTS_TABLE_TITLE"] <> '')
1827 {
1828 $FIELD_TITLE = $wr["RESULTS_TABLE_TITLE"];
1829 }
1830 elseif ($wr["TITLE"] <> '')
1831 {
1832 $FIELD_TITLE = $wr["TITLE_TYPE"]=="html" ? htmlspecialcharsback(strip_tags($wr["TITLE"])) : $wr["TITLE"];
1833 }
1834 else
1835 {
1836 $FIELD_TITLE = trim($wr["FILTER_TITLE"], ":");
1837 }
1838
1839 $str .= "#".$wr["SID"]."# - ".$FIELD_TITLE."\n";
1840 $str .= "#".$wr["SID"]."_RAW# - ".$FIELD_TITLE." (".GetMessage('FORM_L_RAW').")\n";
1841 $strFIELDS .= $FIELD_TITLE."\n*******************************\n#".$wr["SID"]."#\n\n";
1842 }
1843
1844 $et->Add(
1845 Array(
1846 "LID" => $arLang["LID"],
1847 "EVENT_NAME" => $MAIL_EVENT_TYPE,
1848 "NAME" => GetMessage("FORM_FILLING")." \"".$arrForm["SID"]."\"",
1849 "DESCRIPTION" => $str
1850 )
1851 );
1852 }
1853 if ($old_MAIL_EVENT_TYPE <> '' && $old_MAIL_EVENT_TYPE!=$MAIL_EVENT_TYPE)
1854 {
1855 $e = $em->GetList("id", "desc", array("EVENT_NAME"=>$old_MAIL_EVENT_TYPE));
1856 while ($er=$e->Fetch())
1857 {
1858 $em->Update($er["ID"],array("EVENT_NAME"=>$MAIL_EVENT_TYPE));
1859 }
1860 if ($old_MAIL_EVENT_TYPE <> '')
1861 $et->Delete($old_MAIL_EVENT_TYPE);
1862 }
1863
1864 if ($ADD_NEW_TEMPLATE=="Y")
1865 {
1866 $z = CSite::GetList();
1867 while ($arSite = $z->Fetch()) $arrSiteLang[$arSite["ID"]] = $arSite["LANGUAGE_ID"];
1868
1869 $arrFormSite = CForm::GetSiteArray($WEB_FORM_ID);
1870 if (is_array($arrFormSite) && count($arrFormSite)>0)
1871 {
1872 foreach($arrFormSite as $sid)
1873 {
1874 IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/admin/form_mail.php", $arrSiteLang[$sid]);
1875
1876 $SUBJECT = "#SERVER_NAME#: ".GetMessage("FORM_FILLING_S")." [#RS_FORM_ID#] #RS_FORM_NAME#";
1877 $MESSAGE = "#SERVER_NAME#
1878
1879".GetMessage("FORM_FILLING").": [#RS_FORM_ID#] #RS_FORM_NAME#
1880-------------------------------------------------------
1881
1882".GetMessage("FORM_DATE_CREATE")."#RS_DATE_CREATE#
1883".GetMessage("FORM_RESULT_ID")."#RS_RESULT_ID#
1884".GetMessage("FORM_USER")."[#RS_USER_ID#] #RS_USER_NAME# #RS_USER_AUTH#
1885".GetMessage("FORM_STAT_GUEST_ID")."#RS_STAT_GUEST_ID#
1886".GetMessage("FORM_STAT_SESSION_ID")."#RS_STAT_SESSION_ID#
1887
1888
1889$strFIELDS
1890".GetMessage("FORM_VIEW")."
1891http://#SERVER_NAME#/bitrix/admin/form_result_view.php?lang=".$arrSiteLang[$sid]."&WEB_FORM_ID=#RS_FORM_ID#&RESULT_ID=#RS_RESULT_ID#
1892
1893-------------------------------------------------------
1894".GetMessage("FORM_GENERATED_AUTOMATICALLY")."
1895 ";
1896
1897 $arFields = Array(
1898 "ACTIVE" => "Y",
1899 "EVENT_NAME" => $MAIL_EVENT_TYPE,
1900 "LID" => $sid,
1901 "EMAIL_FROM" => "#DEFAULT_EMAIL_FROM#",
1902 "EMAIL_TO" => "#DEFAULT_EMAIL_FROM#",
1903 "SUBJECT" => $SUBJECT,
1904 "MESSAGE" => $MESSAGE,
1905 "BODY_TYPE" => "text"
1906 );
1907 $TEMPLATE_ID = $em->Add($arFields);
1908 if ($bReturnFullInfo)
1909 $arrReturn[] = array(
1910 'ID' => $TEMPLATE_ID,
1911 'FIELDS' => $arFields,
1912 );
1913 else
1914 $arrReturn[] = $TEMPLATE_ID;
1915 }
1916 }
1917 }
1918 $MESS = $OLD_MESS;
1919 }
1920 return $arrReturn;
1921 }
1922
1923 public static function GetBySID($SID)
1924 {
1925 return CForm::GetByID($SID, "Y");
1926 }
1927
1935 public static function isFieldInTemplate($FIELD_SID, $tpl)
1936 {
1937 $check_str1 = '$FORM->ShowInput(\''.$FIELD_SID.'\')';
1938 $check_str2 = '$FORM->ShowInput("'.$FIELD_SID.'")';
1939
1940 return !((mb_strpos($tpl, $check_str1) === false) && (mb_strpos($tpl, $check_str2) === false));
1941
1942 }
1943
1950 public static function isCAPTCHAInTemplate($tpl)
1951 {
1952 $check_str = '$FORM->ShowCaptcha';
1953
1954 return mb_strpos($tpl, $check_str) !== false;
1955
1956 }
1957
1958 public static function GetByID_admin($WEB_FORM_ID, $current_section = false)
1959 {
1960 $WEB_FORM_ID = intval($WEB_FORM_ID);
1961 if ($WEB_FORM_ID <= 0)
1962 return false;
1963
1964 $dbForm = CForm::GetByID($WEB_FORM_ID);
1965 if ($arForm = $dbForm->Fetch())
1966 {
1967 $bSimple = COption::GetOptionString("form", "SIMPLE", "Y") == "Y";
1968
1969 if (!$current_section)
1970 {
1971 $current_script = basename($GLOBALS['APPLICATION']->GetCurPage());
1972
1973 switch ($current_script)
1974 {
1975 case 'form_edit.php':
1976 $current_section = 'form';
1977 break;
1978
1979 case 'form_field_edit.php':
1980 case 'form_field_edit_simple.php':
1981 case 'form_field_list.php':
1982
1983 if (!$bSimple && isset($_GET['additional']) && $_GET['additional'] == 'Y')
1984 $current_section = 'field';
1985 else
1986 $current_section = 'question';
1987
1988 break;
1989
1990 case 'form_result_edit.php':
1991 case 'form_result_list.php':
1992 case 'form_result_view.php':
1993 $current_section = 'result';
1994 break;
1995
1996 case 'form_status_edit.php':
1997 case 'form_status_list.php':
1998 $current_section = 'status';
1999 break;
2000 }
2001 }
2002
2003 $arForm['ADMIN_MENU'] = array();
2004
2005 $arForm['ADMIN_MENU'][] = array(
2006 "ICON" => $current_section == 'form' ? 'btn_active' : '',
2007 "TEXT" => GetMessage("FORM_MENU_EDIT"),
2008 "LINK" => "/bitrix/admin/form_edit.php?lang=".LANGUAGE_ID."&ID=".$WEB_FORM_ID,
2009 "TITLE" => htmlspecialcharsbx(str_replace("#NAME#", $arForm["NAME"], GetMessage("FORM_MENU_EDIT_TITLE")))
2010 );
2011
2012 $arForm['ADMIN_MENU'][] = array(
2013 "ICON" => $current_section == 'result' ? 'btn_active' : '',
2014 "TEXT" => GetMessage("FORM_MENU_RESULTS")
2015 ." (".CFormResult::GetCount($WEB_FORM_ID).")",
2016 "LINK" => "/bitrix/admin/form_result_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=".$WEB_FORM_ID,
2017 "TITLE" => htmlspecialcharsbx(str_replace("#NAME#", $arForm["NAME"], GetMessage("FORM_MENU_RESULTS_TITLE")))
2018 );
2019
2020 $arForm['ADMIN_MENU'][] = array(
2021 "ICON" => $current_section == 'question' ? 'btn_active' : '',
2022 "TEXT" => GetMessage("FORM_MENU_QUESTIONS")
2023 ." (".($bSimple ? $arForm["QUESTIONS"] + $arForm["C_FIELDS"] : $arForm["QUESTIONS"]).")",
2024 "LINK" => "/bitrix/admin/form_field_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=".$WEB_FORM_ID,
2025 "TITLE" => htmlspecialcharsbx(str_replace("#NAME#", $arForm["NAME"], GetMessage("FORM_MENU_QUESTIONS_TITLE")))
2026 );
2027
2028 if (!$bSimple)
2029 {
2030 $arForm['ADMIN_MENU'][] = array(
2031 "ICON" => $current_section == 'field' ? 'btn_active' : '',
2032 "TEXT" => GetMessage("FORM_MENU_FIELDS")
2033 ." (".$arForm["C_FIELDS"].")",
2034 "LINK" => "/bitrix/admin/form_field_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=".$WEB_FORM_ID."&additional=Y",
2035 "TITLE" => htmlspecialcharsbx(str_replace("#NAME#", $arForm["NAME"], GetMessage("FORM_MENU_FIELDS_TITLE")))
2036 );
2037
2038 $arForm['ADMIN_MENU'][] = array(
2039 "ICON" => $current_section == 'status' ? 'btn_active' : '',
2040 "TEXT" => GetMessage("FORM_MENU_STATUSES")
2041 ." (".$arForm["STATUSES"].")",
2042 "LINK" => "/bitrix/admin/form_status_list.php?lang=".LANGUAGE_ID."&WEB_FORM_ID=".$WEB_FORM_ID,
2043 "TITLE" => htmlspecialcharsbx(str_replace("#NAME#", $arForm["NAME"], GetMessage("FORM_MENU_STATUSES_TITLE")))
2044 );
2045 }
2046
2047 return $arForm;
2048 }
2049
2050 return false;
2051 }
2052}
$path
Определения access_edit.php:21
$type
Определения options.php:106
global $APPLICATION
Определения include.php:80
$arResult
Определения generate_coupon.php:16
static getList(array $parameters=array())
Определения datamanager.php:431
static normalizeArrayValuesByInt(&$map, $sorted=true)
Определения collection.php:150
static Delete($ID)
Определения eventmessage.php:331
static GetList($by='id', $order='desc', $arFilter=[])
Определения eventmessage.php:416
static GetList($QUESTION_ID, $by='s_sort', $order='asc', $arFilter=[])
Определения form_callformanswer.php:64
static Reset($ID, $CHECK_RIGHTS="Y")
Определения form_callformfield.php:298
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
Определения form_callform.php:7
static GetDateValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:724
static GetMenuList($arFilter=Array(), $check_rights="Y")
Определения form_callform.php:383
static Reset($ID, $CHECK_RIGHTS="Y")
Определения form_callform.php:1764
static __check_PushError(&$container, $MESSAGE, $key=false)
Определения form_callform.php:930
static GetEmailValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:610
static GetMailTemplateArray($FORM_ID)
Определения form_callform.php:102
static GetPermission($form_id, $arGroups=false, $get_from_database="")
Определения form_callform.php:254
static Check($WEB_FORM_ID, $arrVALUES=false, $RESULT_ID=false, $CHECK_RIGHTS="Y", $RETURN_ARRAY="N")
Определения form_callform.php:941
static GetTextAreaValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:820
static SetMailTemplate($WEB_FORM_ID, $ADD_NEW_TEMPLATE="Y", $old_SID="", $bReturnFullInfo=false)
Определения form_callform.php:1785
static GetDateField($FIELD_NAME, $FORM_NAME, $VALUE="", $FIELD_WIDTH="", $PARAM="")
Определения form_callform.php:737
static GetTextField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
Определения form_callform.php:626
static GetBySID($SID)
Определения form_callform.php:1923
static GetDropDownValue($FIELD_NAME, $arDropDown, $arrVALUES=false)
Определения form_callform.php:665
static GetUrlValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:618
static isFieldInTemplate($FIELD_SID, $tpl)
Определения form_callform.php:1935
static GetRadioField($FIELD_NAME, $FIELD_ID, $VALUE="", $PARAM="")
Определения form_callform.php:813
static GetSiteArray($FORM_ID)
Определения form_callform.php:121
static GetPermissionList($get_default="Y")
Определения form_callform.php:227
static CheckFields($arFields, $FORM_ID, $CHECK_RIGHTS="Y")
Определения form_callform.php:1288
static GetEmailField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
Определения form_callform.php:647
static GetTextAreaField($FIELD_NAME, $WIDTH="", $HEIGHT="", $PARAM="", $VALUE="")
Определения form_callform.php:828
static GetCheckBoxField($FIELD_NAME, $FIELD_ID, $VALUE="", $PARAM="")
Определения form_callform.php:792
static GetDateFilter($FID, $form_name="form1", $show_select="Y", $field_select="class=\"inputselect\"", $field_input="class=\"inputtext\"")
Определения form_callform.php:494
static GetUrlField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
Определения form_callform.php:653
static GetTextFilter($FID, $size="45", $field_text="class=\"inputtext\"", $field_checkbox="class=\"inputcheckbox\"")
Определения form_callform.php:485
static GetDropDownFilter($ID, $PARAMETER_NAME, $FID, $field="class=\"inputselect\"")
Определения form_callform.php:553
static GetNextSort()
Определения form_callform.php:471
static GetPasswordValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:602
static IsAdmin()
Определения form_callform.php:8
static ExecHandlerBeforeChangeStatus($RESULT_ID, $ACTION, $NEW_STATUS_ID=0)
Определения form_callform.php:140
static GetResultAnswerArray($WEB_FORM_ID, &$arrColumns, &$arrAnswers, &$arrAnswersSID, $arFilter=Array())
Определения form_callform.php:17
static Set($arFields, $FORM_ID=false, $CHECK_RIGHTS="Y")
Определения form_callform.php:1353
static GetCheckBoxValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:763
static GetExistFlagFilter($FID, $field="class=\"inputcheckbox\"")
Определения form_callform.php:537
static GetHiddenField($FIELD_NAME, $VALUE="", $PARAM="")
Определения form_callform.php:641
static GetRadioValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:798
static Delete($ID, $CHECK_RIGHTS="Y")
Определения form_callform.php:1700
static GetNumberFilter($FID, $size="10", $field="class=\"inputtext\"")
Определения form_callform.php:528
static GetDropDownField($FIELD_NAME, $arDropDown, $VALUE, $PARAM="")
Определения form_callform.php:690
static GetHiddenValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:594
static GetPasswordField($FIELD_NAME, $VALUE="", $SIZE="", $PARAM="")
Определения form_callform.php:659
static ShowRequired($flag)
Определения form_callform.php:480
static GetFileField($FIELD_NAME, $WIDTH="", $FILE_TYPE="IMAGE", $MAX_FILE_SIZE=0, $VALUE="", $PARAM_FILE="", $PARAM_CHECKBOX="")
Определения form_callform.php:849
static GetTemplateList($type="SHOW", $path="xxx", $WEB_FORM_ID=0)
Определения form_callform.php:308
static GetTextValue($FIELD_NAME, $arAnswer, $arrVALUES=false)
Определения form_callform.php:586
static GetDataByID($WEB_FORM_ID, &$arForm, &$arQuestions, &$arAnswers, &$arDropDown, &$arMultiSelect, $additional="N", $active="N")
Определения form_callform.php:859
static ExecHandlerAfterChangeStatus($RESULT_ID, $ACTION)
Определения form_callform.php:183
static Copy($ID, $CHECK_RIGHTS="Y")
Определения form_callform.php:1619
static GetCrmFlagFilter($FID, $field="class=\"inputselect\"")
Определения form_callform.php:545
static GetMultiSelectField($FIELD_NAME, $arMultiSelect, $arSELECTED=array(), $HEIGHT="", $PARAM="")
Определения form_callform.php:718
static GetMultiSelectValue($FIELD_NAME, $arMultiSelect, $arrVALUES=false)
Определения form_callform.php:696
static Copy($ID, $CHECK_RIGHTS="Y", $NEW_FORM_ID=false)
Определения form_callformstatus.php:310
static Delete($ID, $CHECK_RIGHTS="Y")
Определения form_callformstatus.php:274
static Execute($arValidator, $arQuestion, $arAnswers, $arAnswerValues)
Определения form_callformvalidator.php:174
static GetList($FIELD_ID, $arFilter=[], $by='C_SORT', $order='ASC')
Определения form_callformvalidator.php:16
static GetList($by='c_sort', $order='asc', $arFilter=[], $SHOW_USERS_AMOUNT="N")
Определения group.php:136
static GetList($by="sort", $order="asc", $arFilter=[])
Определения language.php:12
Определения eventmessage.php:586
Определения eventmessage.php:590
static Delete($arID)
Определения eventmessage.php:750
Определения form_cform_old.php:4
static IsOldVersion()
Определения form_cform_old.php:74
static GetByID($ID, $GET_BY_SID="N")
Определения form_cform.php:146
static GetFormTemplateByID($ID, $GET_BY_SID="N")
Определения form_cform.php:176
static GetList($FORM_ID, $by='s_sort', $order='asc', $arFilter=[])
Определения form_cformstatus.php:5
Определения user.php:6037
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$right
Определения options.php:8
$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
$arGroups
Определения options.php:1766
$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
ShowFilterLogicHelp()
Определения filter_tools.php:349
$handle
Определения include.php:55
$perm
Определения options.php:169
$FORM_RIGHT
Определения form_validator_props.php:4
$zr
Определения options.php:5
$_REQUEST["admin_mnu_menu_id"]
Определения get_menu.php:8
$query
Определения get_search.php:11
if($ajaxMode) $ID
Определения get_user.php:27
$errors
Определения iblock_catalog_edit.php:74
global $MESS
Определения bill.php:2
$strError
Определения options_user_settings.php:4
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$ACTION
Определения csv_new_setup.php:27
$groups
Определения options.php:30
$z
Определения options.php:31
$mid
Определения options.php:27
CalendarPeriod($sFromName, $sFromVal, $sToName, $sToVal, $sFormName="skform", $show_select="N", $field_select="class=\"typeselect\"", $field_input="class=\"typeinput\"", $size="10")
Определения tools.php:329
htmlspecialcharsback($str)
Определения tools.php:2693
InputType($strType, $strName, $strValue, $strCmp, $strPrintValue=false, $strPrint="", $field1="", $strId="")
Определения tools.php:35
SelectBoxMFromArray($strBoxName, $a, $arr, $strDetText="", $strDetText_selected=false, $size="5", $field1="class='typeselect'")
Определения tools.php:163
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
GetTime($timestamp, $type="SHORT", $site=false, $bSearchInSitesOnly=false)
Определения tools.php:1890
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
check_email($email, $strict=false, $domainCheck=false)
Определения tools.php:4571
CheckDateTime($datetime, $format=false)
Определения tools.php:398
SelectBoxFromArray( $strBoxName, $db_array, $strSelectedVal="", $strDetText="", $field1="class='typeselect'", $go=false, $form="form1")
Определения tools.php:216
TruncateText($strText, $intLen)
Определения tools.php:2185
$name
Определения menu_edit.php:35
$GLOBALS['____1690880296']
Определения license.php:1
$var
Определения payment.php:63
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
$title
Определения pdf.php:123
$val
Определения options.php:1793
$rs
Определения action.php:82
$k
Определения template_pdf.php:567
$arFilter
Определения user_search.php:106
$iterator
Определения yandex_run.php:610