1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
form_cformresult.php
См. документацию.
1<?php
2
4{
5 public static function GetList($WEB_FORM_ID, $by = 's_timestamp', $order = 'desc', $arFilter = [], $is_filtered = null, $CHECK_RIGHTS = "Y", $records_limit = false)
6 {
7 global $DB, $USER, $strError;
8
9 $CHECK_RIGHTS = ($CHECK_RIGHTS=="Y") ? "Y" : "N";
10 $WEB_FORM_ID = intval($WEB_FORM_ID);
11
12 $F_RIGHT = CForm::GetPermission($WEB_FORM_ID);
13
14 $USER_ID = intval($USER->GetID());
15 $arSqlSearch = array();
16 $arr["FIELDS"] = array();
17 if (is_array($arFilter))
18 {
20
21 $z = CForm::GetByID($WEB_FORM_ID);
22 $form = $z->Fetch();
23
24 /***********************/
25
26 $z = CFormField::GetList($WEB_FORM_ID, "");
27
28 while ($zr=$z->Fetch())
29 {
30 $arPARAMETER_NAME = array("ANSWER_TEXT", "ANSWER_VALUE", "USER", "ANSWER_ID");
31 CFormField::GetFilterTypeList($arrUSER, $arrANSWER_TEXT, $arrANSWER_VALUE, $arrFIELD);
32 foreach ($arPARAMETER_NAME as $PARAMETER_NAME)
33 {
34 switch ($PARAMETER_NAME)
35 {
36 case "ANSWER_TEXT":
37 $arFILTER_TYPE = $arrANSWER_TEXT["reference_id"];
38 break;
39 case "ANSWER_VALUE":
40 $arFILTER_TYPE = $arrANSWER_VALUE["reference_id"];
41 break;
42 case "USER":
43 $arFILTER_TYPE = $arrUSER["reference_id"];
44 break;
45 case "ANSWER_ID":
46 $arFILTER_TYPE = ["answer_id"];
47 break;
48 }
49 foreach ($arFILTER_TYPE as $FILTER_TYPE)
50 {
51 $arrUF = array();
52 $arrUF["ID"] = $zr["ID"];
53 $arrUF["PARAMETER_NAME"] = $PARAMETER_NAME;
54 $arrUF["FILTER_TYPE"] = $FILTER_TYPE;
55 $FID = $form["SID"]."_".$zr["SID"]."_".$PARAMETER_NAME."_".$FILTER_TYPE;
56 if ($FILTER_TYPE=="date" || $FILTER_TYPE=="integer")
57 {
58 $arrUF["SIDE"] = "1";
59 $arrFORM_FILTER[$FID."_1"] = $arrUF;
60 $arrUF["SIDE"] = "2";
61 $arrFORM_FILTER[$FID."_2"] = $arrUF;
62 $arrUF["SIDE"] = "0";
63 $arrFORM_FILTER[$FID."_0"] = $arrUF;
64 }
65 else $arrFORM_FILTER[$FID] = $arrUF;
66 }
67 }
68 }
69 if (is_array($arrFORM_FILTER)) $arrFORM_FILTER_KEYS = array_keys($arrFORM_FILTER);
70
71 $t = 0;
72 $filter_keys = array_keys($arFilter);
73 $keyCount = count($filter_keys);
74 for ($i=0; $i<$keyCount; $i++)
75 {
76 $key = $filter_keys[$i];
77 $val = $arFilter[$filter_keys[$i]];
78 if(is_array($val))
79 {
80 if(empty($val))
81 continue;
82 }
83 else
84 {
85 if((string)$val == '' || $val === "NOT_REF")
86 continue;
87 }
88 $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys));
89 $key = strtoupper($key);
90 switch($key)
91 {
92 case "ID":
93 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
94 $arSqlSearch[] = GetFilterQuery("R.ID", $val, $match);
95 break;
96 case "STATUS":
97 $arSqlSearch[] = "R.STATUS_ID='".intval($val)."'";
98 break;
99 case "STATUS_ID":
100 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
101 $arSqlSearch[] = GetFilterQuery("R.STATUS_ID", $val, $match);
102 break;
103 case "TIMESTAMP_1":
104 $arSqlSearch[] = "R.TIMESTAMP_X>=".$DB->CharToDateFunction($val, "SHORT");
105 break;
106 case "TIMESTAMP_2":
107 $arSqlSearch[] = "R.TIMESTAMP_X<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
108 break;
109 case "DATE_CREATE_1":
110 $arSqlSearch[] = "R.DATE_CREATE>=".$DB->CharToDateFunction($val, "SHORT");
111 break;
112 case "DATE_CREATE_2":
113 $arSqlSearch[] = "R.DATE_CREATE<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
114 break;
115 case "TIME_CREATE_1":
116 $arSqlSearch[] = "R.DATE_CREATE>=".$DB->CharToDateFunction($val, "FULL");
117 break;
118 case "TIME_CREATE_2":
119 $arSqlSearch[] = "R.DATE_CREATE<".$DB->CharToDateFunction($val, "FULL");
120 break;
121 case "REGISTERED":
122 $arSqlSearch[] = ($val=="Y") ? "R.USER_ID>0" : "(R.USER_ID<=0 or R.USER_ID is null)";
123 break;
124 case "USER_AUTH":
125 $arSqlSearch[] = ($val=="Y") ? "(R.USER_AUTH='Y' and R.USER_ID>0)" : "(R.USER_AUTH='N' and R.USER_ID>0)";
126 break;
127 case "USER_ID":
128 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
129 $arSqlSearch[] = GetFilterQuery("R.USER_ID", $val, $match);
130 break;
131 case "GUEST_ID":
132 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
133 $arSqlSearch[] = GetFilterQuery("R.STAT_GUEST_ID", $val, $match);
134 break;
135 case "SESSION_ID":
136 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
137 $arSqlSearch[] = GetFilterQuery("R.STAT_SESSION_ID", $val, $match);
138 break;
139 case "SENT_TO_CRM":
140 $arSqlSearch[] = GetFilterQuery("R.SENT_TO_CRM", $val, "Y");
141 break;
142 default:
143 if (is_array($arrFORM_FILTER))
144 {
145 $key = $filter_keys[$i];
146 if (in_array($key, $arrFORM_FILTER_KEYS))
147 {
148 $arrF = $arrFORM_FILTER[$key];
149 if (is_array($arr["FIELDS"]) && !in_array($arrF["ID"],$arr["FIELDS"]))
150 {
151 $t++;
152 $A = "A".$t;
153 $arr["TABLES"][] = "b_form_result_answer ".$A;
154 $arr["WHERE"][] = "(".$A.".RESULT_ID=R.ID and ".$A.".FIELD_ID='".$arrF["ID"]."')";
155 $arr["FIELDS"][] = $arrF["ID"];
156 }
157 switch(mb_strtoupper($arrF["FILTER_TYPE"]))
158 {
159 case "EXIST":
160
161 if($arrF["PARAMETER_NAME"] == "ANSWER_TEXT")
162 {
163 $arSqlSearch[] = "length(".$A.".ANSWER_TEXT)+0>0";
164 }
165
166 elseif($arrF["PARAMETER_NAME"] == "ANSWER_VALUE")
167 {
168 $arSqlSearch[] = "length(".$A.".ANSWER_VALUE)+0>0";
169 }
170
171 elseif($arrF["PARAMETER_NAME"] == "USER")
172 {
173 $arSqlSearch[] = "length(".$A.".USER_TEXT)+0>0";
174 }
175
176 break;
177 case "TEXT":
178 $match = ($arFilter[$key."_exact_match"] == "Y")? "N" : "Y";
179 $sql = "";
180
181 if($arrF["PARAMETER_NAME"] == "ANSWER_TEXT")
182 {
183 $sql = GetFilterQuery($A.".ANSWER_TEXT_SEARCH", mb_strtoupper($val), $match);
184 }
185
186 elseif($arrF["PARAMETER_NAME"] == "ANSWER_VALUE")
187 {
188 $sql = GetFilterQuery($A.".ANSWER_VALUE_SEARCH", mb_strtoupper($val), $match);
189 }
190
191 elseif($arrF["PARAMETER_NAME"] == "USER")
192 {
193 $sql = GetFilterQuery($A.".USER_TEXT_SEARCH", mb_strtoupper($val), $match);
194 }
195
196 if($sql !== "0" && trim($sql) <> '')
197 {
198 $arSqlSearch[] = $sql;
199 }
200 break;
201 case "DROPDOWN":
202 case "ANSWER_ID":
203 $arSqlSearch[] = $A.".ANSWER_ID=".intval($val);
204 break;
205 case "DATE":
206 if($arrF["PARAMETER_NAME"] == "USER")
207 {
209 {
210 if($arrF["SIDE"] == "1")
211 {
212 $arSqlSearch[] = $A.".USER_DATE>=".$DB->CharToDateFunction($val, "SHORT");
213 }
214 elseif($arrF["SIDE"] == "2")
215 {
216 $arSqlSearch[] = $A.".USER_DATE<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
217 }
218 elseif($arrF["SIDE"] == "0")
219 {
220 $arSqlSearch[] = $A.".USER_DATE=".$DB->CharToDateFunction($val);
221 }
222 }
223 }
224 break;
225 case "INTEGER":
226 if($arrF["PARAMETER_NAME"] == "USER")
227 {
228 if($arrF["SIDE"] == "1")
229 {
230 $arSqlSearch[] = $A.".USER_TEXT+0>=".intval($val);
231 }
232 elseif($arrF["SIDE"] == "2")
233 {
234 $arSqlSearch[] = $A.".USER_TEXT+0<=".intval($val);
235 }
236 elseif($arrF["SIDE"] == "0")
237 {
238 $arSqlSearch[] = $A.".USER_TEXT='".intval($val)."'";
239 }
240 }
241 elseif($arrF["PARAMETER_NAME"] == "ANSWER_TEXT")
242 {
243 if($arrF["SIDE"] == "1")
244 {
245 $arSqlSearch[] = $A.".ANSWER_TEXT+0>=".intval($val);
246 }
247 elseif($arrF["SIDE"] == "2")
248 {
249 $arSqlSearch[] = $A.".ANSWER_TEXT+0<=".intval($val);
250 }
251 elseif($arrF["SIDE"] == "0")
252 {
253 $arSqlSearch[] = $A.".ANSWER_TEXT='".intval($val)."'";
254 }
255 }
256 elseif($arrF["PARAMETER_NAME"] == "ANSWER_VALUE")
257 {
258 if($arrF["SIDE"] == "1")
259 {
260 $arSqlSearch[] = $A.".ANSWER_VALUE+0>=".intval($val);
261 }
262 elseif($arrF["SIDE"] == "2")
263 {
264 $arSqlSearch[] = $A.".ANSWER_VALUE+0<=".intval($val);
265 }
266 elseif($arrF["SIDE"] == "0")
267 {
268 $arSqlSearch[] = $A.".ANSWER_VALUE='".intval($val)."'";
269 }
270 }
271 break;
272 }
273 }
274 }
275 }
276 }
277 }
278 if ($by == "s_id") $strSqlOrder = "ORDER BY R.ID";
279 elseif ($by == "s_date_create") $strSqlOrder = "ORDER BY R.DATE_CREATE";
280 elseif ($by == "s_timestamp") $strSqlOrder = "ORDER BY R.TIMESTAMP_X";
281 elseif ($by == "s_user_id") $strSqlOrder = "ORDER BY R.USER_ID";
282 elseif ($by == "s_guest_id") $strSqlOrder = "ORDER BY R.STAT_GUEST_ID";
283 elseif ($by == "s_session_id") $strSqlOrder = "ORDER BY R.STAT_SESSION_ID";
284 elseif ($by == "s_status") $strSqlOrder = "ORDER BY R.STATUS_ID";
285 elseif ($by == "s_sent_to_crm") $strSqlOrder = "ORDER BY R.SENT_TO_CRM";
286 else
287 {
288 $strSqlOrder = "ORDER BY R.TIMESTAMP_X";
289 }
290
291 if ($order != "asc")
292 {
293 $strSqlOrder .= " desc ";
294 }
295
296 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
297 $str1 = '';
298 if (!empty($arr["TABLES"]))
299 $str1 = implode(",\n ",$arr["TABLES"]);
300 $str2 = '';
301 if (!empty($arr["WHERE"]))
302 $str2 = implode("\n and ",$arr["WHERE"]);
303 if ($str1 <> '') $str1 = ",\n ".$str1;
304 if ($str2 <> '') $str2 = "\n and ".$str2;
305
306 if ($records_limit===false)
307 {
308 $records_limit = "LIMIT ".intval(COption::GetOptionString("form","RECORDS_LIMIT"));
309 }
310 else
311 {
312 $records_limit = intval($records_limit);
313 if ($records_limit>0)
314 {
315 $records_limit = "LIMIT ".$records_limit;
316 }
317 }
318
319 if ($CHECK_RIGHTS!="Y" || $F_RIGHT >= 30 || CForm::IsAdmin())
320 {
321 $strSql = "
322 SELECT
323 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID, R.SENT_TO_CRM,
324 ".$DB->DateToCharFunction("R.DATE_CREATE")." DATE_CREATE,
325 ".$DB->DateToCharFunction("R.TIMESTAMP_X")." TIMESTAMP_X,
326 S.TITLE STATUS_TITLE,
327 S.CSS STATUS_CSS
328 FROM
329 b_form_result R,
330 b_form_status S
331 $str1
332 WHERE
333 $strSqlSearch
334 $str2
335 and R.FORM_ID = '$WEB_FORM_ID'
336 and S.ID = R.STATUS_ID
337 GROUP BY
338 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.DATE_CREATE, R.STATUS_ID, R.SENT_TO_CRM
339 $strSqlOrder
340 $records_limit
341 ";
342 $res = $DB->Query($strSql);
343 }
344 elseif ($F_RIGHT>=15)
345 {
346 $arGroups = $USER->GetUserGroupArray();
347 if (!is_array($arGroups)) $arGroups[] = 2;
348 if (is_array($arGroups) && count($arGroups)>0) $groups = implode(",",$arGroups);
349 if ($F_RIGHT<20) $str3 = "and ifnull(R.USER_ID,0) = $USER_ID";
350
351 $strSql = "
352 SELECT
353 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID, R.STAT_SESSION_ID, R.STATUS_ID, R.SENT_TO_CRM,
354 ".$DB->DateToCharFunction("R.DATE_CREATE")." DATE_CREATE,
355 ".$DB->DateToCharFunction("R.TIMESTAMP_X")." TIMESTAMP_X,
356 S.TITLE STATUS_TITLE,
357 S.CSS STATUS_CSS
358 FROM
359 b_form_result R,
360 b_form_status S,
361 b_form_status_2_group G$str1
362 WHERE
363 $strSqlSearch
364 $str2
365 $str3
366 and R.FORM_ID = '$WEB_FORM_ID'
367 and S.ID = R.STATUS_ID
368 and G.STATUS_ID = S.ID
369 and (
370 (G.GROUP_ID in ($groups)) or
371 (G.GROUP_ID in ($groups,0) and ifnull(R.USER_ID,0) = $USER_ID and $USER_ID>0)
372 )
373 and G.PERMISSION in ('VIEW', 'EDIT', 'DELETE')
374 GROUP BY
375 R.ID, R.USER_ID, R.USER_AUTH, R.STAT_GUEST_ID,
376 R.STAT_SESSION_ID, R.SENT_TO_CRM, R.DATE_CREATE, R.STATUS_ID, R.SENT_TO_CRM
377 $strSqlOrder
378 $records_limit
379 ";
380 $res = $DB->Query($strSql);
381 }
382 else
383 {
384 $res = new CDBResult();
385 $res->InitFromArray(array());
386 }
387
388 return $res;
389 }
390
391 public static function GetByID($ID)
392 {
393 global $DB, $strError;
394 $ID = intval($ID);
395 $strSql = "
396 SELECT
397 R.*,
398 ".$DB->DateToCharFunction("R.DATE_CREATE")." DATE_CREATE,
399 ".$DB->DateToCharFunction("R.TIMESTAMP_X")." TIMESTAMP_X,
400 F.IMAGE_ID, F.DESCRIPTION, F.DESCRIPTION_TYPE, F.SHOW_RESULT_TEMPLATE, F.PRINT_RESULT_TEMPLATE, F.EDIT_RESULT_TEMPLATE, F.NAME,
401 F.SID,
402 F.SID VARNAME,
403 S.TITLE STATUS_TITLE,
404 S.DESCRIPTION STATUS_DESCRIPTION,
405 S.CSS STATUS_CSS
406 FROM
407 b_form_result R,
408 b_form_status S,
409 b_form F
410 WHERE
411 R.ID = $ID
412 and F.ID = R.FORM_ID
413 and R.STATUS_ID = S.ID
414 ";
415 $res = $DB->Query($strSql);
416 return $res;
417 }
418
419 public static function GetPermissions($RESULT_ID, &$CURRENT_STATUS_ID = null)
420 {
421 global $DB, $USER, $strError;
422 $USER_ID = intval($USER->GetID());
423 $RESULT_ID = intval($RESULT_ID);
424 $arrReturn = array();
425 $arGroups = $USER->GetUserGroupArray();
426 if (!is_array($arGroups)) $arGroups[] = 2;
428 else
429 {
430 $arr = array();
431 if (is_array($arGroups) && count($arGroups)>0) $groups = implode(",",$arGroups);
432 $strSql = "
433 SELECT
434 G.PERMISSION,
435 R.STATUS_ID
436 FROM
437 b_form_result R,
438 b_form_status_2_group G
439 WHERE
440 R.ID = $RESULT_ID
441 and R.STATUS_ID = G.STATUS_ID
442 and (
443 (G.GROUP_ID in ($groups) and ifnull(R.USER_ID,0) <> $USER_ID) or
444 (G.GROUP_ID in ($groups,0) and ifnull(R.USER_ID,0) = $USER_ID)
445 )
446 ";
447 $z = $DB->Query($strSql);
448 while ($zr = $z->Fetch())
449 {
450 $arrReturn[] = $zr["PERMISSION"];
451 $CURRENT_STATUS_ID = $zr["STATUS_ID"];
452 }
453 }
454 return $arrReturn;
455 }
456
457 public static function AddAnswer($arFields)
458 {
459 global $DB, $strError;
460 $arInsert = $DB->PrepareInsert("b_form_result_answer", $arFields, "form");
461 $strSql = "INSERT INTO b_form_result_answer (".$arInsert[0].") VALUES (".$arInsert[1].")";
462 $DB->Query($strSql);
463 return intval($DB->LastID());
464 }
465
466 public static function UpdateField($arFields, $RESULT_ID, $FIELD_ID)
467 {
468 global $DB, $strError;
469 $RESULT_ID = intval($RESULT_ID);
470 $FIELD_ID = intval($FIELD_ID);
471 $strUpdate = $DB->PrepareUpdate("b_form_result_answer", $arFields, "form");
472 $strSql = "UPDATE b_form_result_answer SET ".$strUpdate." WHERE RESULT_ID=".$RESULT_ID." and FIELD_ID=".$FIELD_ID;
473 $DB->Query($strSql);
474 }
475}
static GetFilterTypeList(&$arrUSER, &$arrANSWER_TEXT, &$arrANSWER_VALUE, &$arrFIELD)
Определения form_callformfield.php:321
static GetList($WEB_FORM_ID, $get_fields, $by='s_sort', $order='asc', $arFilter=[])
Определения form_callformfield.php:5
static GetPermission($form_id, $arGroups=false, $get_from_database="")
Определения form_callform.php:254
static IsAdmin()
Определения form_callform.php:8
static PrepareFilter($WEB_FORM_ID, $arFilter)
Определения form_callformresult.php:2039
static GetMaxPermissions()
Определения form_callformstatus.php:30
static GetByID($ID, $GET_BY_SID="N")
Определения form_cform.php:146
Определения form_cformresult.php:4
static GetPermissions($RESULT_ID, &$CURRENT_STATUS_ID=null)
Определения form_cformresult.php:419
static GetByID($ID)
Определения form_cformresult.php:391
static AddAnswer($arFields)
Определения form_cformresult.php:457
static UpdateField($arFields, $RESULT_ID, $FIELD_ID)
Определения form_cformresult.php:466
static GetList($WEB_FORM_ID, $by='s_timestamp', $order='desc', $arFilter=[], $is_filtered=null, $CHECK_RIGHTS="Y", $records_limit=false)
Определения form_cformresult.php:5
$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
$zr
Определения options.php:5
if($ajaxMode) $ID
Определения get_user.php:27
$strError
Определения options_user_settings.php:4
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$groups
Определения options.php:30
$z
Определения options.php:31
CheckDateTime($datetime, $format=false)
Определения tools.php:398
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
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
$arFilter
Определения user_search.php:106