1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
answer.php
См. документацию.
1<?
2
4{
5 function CheckFields(&$arFields, $ID = false)
6 {
7 global $DB;
8 $arMsg = Array();
9
10 if ( (is_set($arFields, "ANSWER") || $ID === false) && trim($arFields["ANSWER"]) == '')
11 $arMsg[] = array("id"=>"NAME", "text"=> GetMessage("LEARNING_BAD_NAME"));
12
13
14 if (
15 ($ID === false && !is_set($arFields, "QUESTION_ID"))
16 ||
17 (is_set($arFields, "QUESTION_ID") && intval($arFields["QUESTION_ID"]) < 1)
18 )
19 {
20 $arMsg[] = array("id"=>"QUESTION_ID", "text"=> GetMessage("LEARNING_BAD_QUESTION_ID"));
21 }
22 elseif (is_set($arFields, "QUESTION_ID"))
23 {
24 $res = CLQuestion::GetByID($arFields["QUESTION_ID"]);
25 if(!$arRes = $res->Fetch())
26 $arMsg[] = array("id"=>"QUESTION_ID", "text"=> GetMessage("LEARNING_BAD_QUESTION_ID"));
27 }
28
29 if(!empty($arMsg))
30 {
31 $e = new CAdminException($arMsg);
32 $GLOBALS["APPLICATION"]->ThrowException($e);
33 return false;
34 }
35
36 if (is_set($arFields, "CORRECT") && $arFields["CORRECT"] != "Y")
37 $arFields["CORRECT"] = "N";
38
39 return true;
40 }
41
42
43 function Add($arFields)
44 {
45 global $DB;
46
47 if($this->CheckFields($arFields))
48 {
49 unset($arFields["ID"]);
50
51 $ID = $DB->Add("b_learn_answer", $arFields, Array("ANSWER", "FEEDBACK", "MATCH_ANSWER"), "learning");
52
53 return $ID;
54 }
55
56 return false;
57 }
58
59
60 function Update($ID, $arFields)
61 {
62 global $DB;
63
64 $ID = intval($ID);
65 if ($ID < 1) return false;
66
67
68 if ($this->CheckFields($arFields, $ID))
69 {
70 unset($arFields["ID"]);
71
72 $arBinds=Array(
73 "ANSWER" => $arFields["ANSWER"],
74 "FEEDBACK" => $arFields["FEEDBACK"] ?? '',
75 "MATCH_ANSWER" => $arFields["MATCH_ANSWER"] ?? '',
76 );
77
78 $strUpdate = $DB->PrepareUpdate("b_learn_answer", $arFields, "learning");
79 $strSql = "UPDATE b_learn_answer SET ".$strUpdate." WHERE ID=".$ID;
80 $DB->QueryBind($strSql, $arBinds);
81
82 return true;
83 }
84 return false;
85 }
86
87
88 public static function Delete($ID)
89 {
90 global $DB;
91
92 $ID = intval($ID);
93 if ($ID < 1) return false;
94
95 $strSql = "DELETE FROM b_learn_answer WHERE ID = ".$ID;
96
97 if (!$DB->Query($strSql))
98 return false;
99
100 return true;
101 }
102
103
104 public static function GetByID($ID)
105 {
106 return CLAnswer::GetList($arOrder=Array(), $arFilter=Array("ID" => $ID));
107 }
108
109
110 public static function GetFilter($arFilter)
111 {
112 if (!is_array($arFilter))
113 $arFilter = Array();
114
115 $arSqlSearch = Array();
116
117 foreach ($arFilter as $key => $val)
118 {
120 $key = $res["FIELD"];
121 $cOperationType = $res["OPERATION"];
122
123 $key = mb_strtoupper($key);
124
125 switch ($key)
126 {
127 case "ID":
128 case "SORT":
129 case "QUESTION_ID":
130 $arSqlSearch[] = CLearnHelper::FilterCreate("CA.".$key, $val, "number", $bFullJoin, $cOperationType);
131 break;
132
133 case "ANSWER":
134 $arSqlSearch[] = CLearnHelper::FilterCreate("CA.".$key, $val, "string", $bFullJoin, $cOperationType);
135 break;
136
137 case "CORRECT":
138 $arSqlSearch[] = CLearnHelper::FilterCreate("CA.".$key, $val, "string_equal", $bFullJoin, $cOperationType);
139 break;
140 }
141
142 }
143
144 return $arSqlSearch;
145 }
146
147
148 public static function GetList($arOrder=Array(), $arFilter=Array())
149 {
150 global $DB, $USER;
151
152 $arSqlSearch = CLAnswer::GetFilter($arFilter);
153
154 $strSqlSearch = "";
155 for($i=0; $i<count($arSqlSearch); $i++)
156 if($arSqlSearch[$i] <> '')
157 $strSqlSearch .= " AND ".$arSqlSearch[$i]." ";
158
159 $strSql =
160 "SELECT CA.*, CQ.ID AS QUESTION_ID, CQ.NAME AS QUESTION_NAME ".
161 "FROM b_learn_answer CA ".
162 "INNER JOIN b_learn_question CQ ON CA.QUESTION_ID = CQ.ID ".
163 "WHERE 1=1 ".
164 $strSqlSearch;
165
166 if (!is_array($arOrder))
167 $arOrder = Array();
168
169 $arSqlOrder = [];
170 foreach($arOrder as $by=>$order)
171 {
172 $by = mb_strtolower($by);
173 $order = mb_strtolower($order);
174 if ($order!="asc")
175 $order = "desc";
176
177 if ($by == "id") $arSqlOrder[] = " CA.ID ".$order." ";
178 elseif ($by == "sort") $arSqlOrder[] = " CA.SORT ".$order." ";
179 elseif ($by == "correct") $arSqlOrder[] = " CA.CORRECT ".$order." ";
180 elseif ($by == "answer") $arSqlOrder[] = " CA.ANSWER ".$order." ";
181 elseif ($by == "rand") $arSqlOrder[] = CTest::GetRandFunction();
182 else
183 {
184 $arSqlOrder[] = " CA.ID ".$order." ";
185 $by = "id";
186 }
187 }
188
189 $strSqlOrder = "";
190 DelDuplicateSort($arSqlOrder);
191 for ($i=0; $i<count($arSqlOrder); $i++)
192 {
193 if($i==0)
194 $strSqlOrder = " ORDER BY ";
195 else
196 $strSqlOrder .= ",";
197
198 $strSqlOrder .= $arSqlOrder[$i];
199 }
200
201 $strSql .= $strSqlOrder;
202
203 //echo $strSql;
204
205 return $DB->Query($strSql);
206 }
207
208
209 function GetStats($ID)
210 {
211 global $DB;
212
213 $ID = intval($ID);
214 $strSql = "SELECT COUNT(*) AS ALL_CNT, SUM(CASE WHEN CORRECT = 'Y' THEN 1 ELSE 0 END) AS CORRECT_CNT FROM b_learn_test_result WHERE ANSWERED = 'Y' AND QUESTION_ID = ".$ID;
215 $rsStat = $DB->Query($strSql);
216 if ($arStat = $rsStat->GetNext())
217 {
218 return array("ALL_CNT" => intval($arStat["ALL_CNT"]), "CORRECT_CNT" => intval($arStat["CORRECT_CNT"]));
219 }
220 else
221 {
222 return array("ALL_CNT" => 0, "CORRECT_CNT" => 0);
223 }
224 }
225
226
227 public static function getMultiStats($arIds)
228 {
229 global $DB;
230
231 if ( ! is_array($arIds) )
232 return (false);
233
234 $arResult = array();
235
236 $arIds = array_filter($arIds);
237
238 if ( ! empty($arIds) )
239 {
240 $arIds = array_map('intval', $arIds);
241
242 $strSql = "SELECT QUESTION_ID, COUNT(*) AS ALL_CNT, SUM(CASE WHEN CORRECT = 'Y' THEN 1 ELSE 0 END) AS CORRECT_CNT
243 FROM b_learn_test_result
244 WHERE ANSWERED = 'Y' AND QUESTION_ID IN (" . implode(',', $arIds) . ")
245 GROUP BY QUESTION_ID ";
246
247 $rsStat = $DB->Query($strSql);
248 while ($arStat = $rsStat->fetch())
249 {
250 $arResult[$arStat['QUESTION_ID']] = array(
251 'ALL_CNT' => (int) $arStat['ALL_CNT'],
252 'CORRECT_CNT' => (int) $arStat['CORRECT_CNT']
253 );
254 }
255 }
256
257 return ($arResult);
258 }
259}
$arResult
Определения generate_coupon.php:16
Определения answer.php:4
static Delete($ID)
Определения answer.php:88
CheckFields(&$arFields, $ID=false)
Определения answer.php:5
static getMultiStats($arIds)
Определения answer.php:227
static GetByID($ID)
Определения answer.php:104
static GetList($arOrder=Array(), $arFilter=Array())
Определения answer.php:148
GetStats($ID)
Определения answer.php:209
Add($arFields)
Определения answer.php:43
static GetFilter($arFilter)
Определения answer.php:110
Update($ID, $arFields)
Определения answer.php:60
static GetByID($ID)
Определения question.php:242
static FilterCreate($fname, $vals, $type, &$bFullJoin, $cOperationType=false, $bSkipEmpty=true)
Определения clearnhelper.php:214
static MkOperationFilter($key)
Определения clearnhelper.php:143
static GetRandFunction()
Определения test.php:7
$arFields
Определения dblapprove.php:5
</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
if($ajaxMode) $ID
Определения get_user.php:27
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
DelDuplicateSort(&$arSort)
Определения tools.php:2055
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$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
$arRes
Определения options.php:104
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106