1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
answer.php
См. документацию.
1
<?
2
3
class
CLAnswer
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
{
119
$res
=
CLearnHelper::MkOperationFilter
(
$key
);
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
$arResult
Определения
generate_coupon.php:16
CAdminException
Определения
adminexception.php:4
CLAnswer
Определения
answer.php:4
CLAnswer\Delete
static Delete($ID)
Определения
answer.php:88
CLAnswer\CheckFields
CheckFields(&$arFields, $ID=false)
Определения
answer.php:5
CLAnswer\getMultiStats
static getMultiStats($arIds)
Определения
answer.php:227
CLAnswer\GetByID
static GetByID($ID)
Определения
answer.php:104
CLAnswer\GetList
static GetList($arOrder=Array(), $arFilter=Array())
Определения
answer.php:148
CLAnswer\GetStats
GetStats($ID)
Определения
answer.php:209
CLAnswer\Add
Add($arFields)
Определения
answer.php:43
CLAnswer\GetFilter
static GetFilter($arFilter)
Определения
answer.php:110
CLAnswer\Update
Update($ID, $arFields)
Определения
answer.php:60
CLQuestion\GetByID
static GetByID($ID)
Определения
question.php:242
CLearnHelper\FilterCreate
static FilterCreate($fname, $vals, $type, &$bFullJoin, $cOperationType=false, $bSkipEmpty=true)
Определения
clearnhelper.php:214
CLearnHelper\MkOperationFilter
static MkOperationFilter($key)
Определения
clearnhelper.php:143
CTest\GetRandFunction
static GetRandFunction()
Определения
test.php:7
$arFields
$arFields
Определения
dblapprove.php:5
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$res
$res
Определения
filter_act.php:7
$ID
if($ajaxMode) $ID
Определения
get_user.php:27
$DB
global $DB
Определения
cron_frame.php:29
$USER
global $USER
Определения
csv_new_run.php:40
DelDuplicateSort
DelDuplicateSort(&$arSort)
Определения
tools.php:2055
is_set
is_set($a, $k=false)
Определения
tools.php:2133
GetMessage
GetMessage($name, $aReplace=null)
Определения
tools.php:3397
$order
$order
Определения
payment.php:8
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
$i
$i
Определения
factura.php:643
count
</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
$val
Определения
options.php:1793
$arRes
$arRes
Определения
options.php:104
$GLOBALS
$GLOBALS['_____370096793']
Определения
update_client.php:1
$arFilter
$arFilter
Определения
user_search.php:106
bitrix
modules
learning
classes
general
answer.php
Создано системой
1.14.0