1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
grouplesson.php
См. документацию.
1<?php
8
9
10/*
11 table definition:
12
13 CREATE TABLE b_learn_groups_lesson (
14 LEARNING_GROUP_ID int(11) NOT NULL DEFAULT '0',
15 LESSON_ID int(11) NOT NULL DEFAULT '0',
16 DELAY int(11) NOT NULL DEFAULT '0',
17 PRIMARY KEY (LEARNING_GROUP_ID, LESSON_ID),
18 KEY LESSON_ID (LESSON_ID)
19 );
20*/
22{
30 public static function add($arFields)
31 {
32 global $DB;
33
34 if ( ! self::checkFields($arFields) )
35 return false;
36
37 $delay = (int) $arFields['DELAY'];
38 $lessonId = (int) $arFields['LESSON_ID'];
39 $groupId = (int) $arFields['LEARNING_GROUP_ID'];
40
41 $strSql = "INSERT INTO b_learn_groups_lesson (LEARNING_GROUP_ID, LESSON_ID, DELAY)
42 VALUES ($groupId, $lessonId, $delay)";
43
44 $rc = $DB->query($strSql, $bIgnoreErrors = true);
45
46 return ($rc !== false);
47 }
48
49
50 public static function update($arFields)
51 {
52 global $DB;
53
54 if ( ! self::checkFields($arFields) )
55 return false;
56
57 $delay = (int) $arFields['DELAY'];
58 $lessonId = (int) $arFields['LESSON_ID'];
59 $groupId = (int) $arFields['LEARNING_GROUP_ID'];
60
61 $strSql = "UPDATE b_learn_groups_lesson
62 SET DELAY = $delay
63 WHERE LEARNING_GROUP_ID = $groupId AND LESSON_ID = $lessonId
64 ";
65
66 $rc = $DB->query($strSql, $bIgnoreErrors = true);
67
68 return ($rc !== false);
69 }
70
71
82 public static function getList($arOrder, $arFilter, $arSelect = array(), $arNavParams = array())
83 {
84 global $DB, $USER;
85
87 'LEARNING_GROUP_ID' => 'LGL.LEARNING_GROUP_ID',
88 'LESSON_ID' => 'LGL.LESSON_ID',
89 'DELAY' => 'LGL.DELAY'
90 );
91
92 if (count($arSelect) <= 0 || in_array("*", $arSelect))
93 $arSelect = array_keys($arFields);
94
95 if (!is_array($arOrder))
96 $arOrder = array();
97
98 $arSqlOrder = [];
99 foreach ($arOrder as $by => $order)
100 {
101 $by = (string) $by;
102 $needle = null;
103 $order = mb_strtolower($order);
104
105 if ($order != "asc")
106 $order = "desc";
107
108 if (array_key_exists($by, $arFields))
109 {
110 $arSqlOrder[] = ' ' . $by . ' ' . $order . ' ';
111 $needle = $by;
112 }
113
114 if (
115 ($needle !== null)
116 && ( ! in_array($needle, $arSelect, true) )
117 )
118 {
119 $arSelect[] = $needle;
120 }
121 }
122
123 $arSqlSelect = array();
124 foreach ($arSelect as $field)
125 {
126 $field = mb_strtoupper($field);
127 if (array_key_exists($field, $arFields))
128 $arSqlSelect[$field] = $arFields[$field] . ' AS ' . $field;
129 }
130
131 if (!sizeof($arSqlSelect))
132 $arSqlSelect = 'LGL.LESSON_ID AS LESSON_ID';
133
134 $arSqlSearch = self::getFilter($arFilter);
135
136 $strSql = "
137 SELECT
138 " . implode(",\n", $arSqlSelect);
139
140 $strFrom = "
141 FROM
142 b_learn_groups_lesson LGL
143 "
144 . (sizeof($arSqlSearch) ? " WHERE " . implode(" AND ", $arSqlSearch) : "") . " ";
145
146 $strSql .= $strFrom;
147
148 $strSqlOrder = "";
149 DelDuplicateSort($arSqlOrder);
150 for ($i = 0, $arSqlOrderCnt = count($arSqlOrder); $i < $arSqlOrderCnt; $i++)
151 {
152 if ($i == 0)
153 $strSqlOrder = " ORDER BY ";
154 else
155 $strSqlOrder .= ",";
156
157 $strSqlOrder .= $arSqlOrder[$i];
158 }
159
160 $strSql .= $strSqlOrder;
161
162 if (count($arNavParams))
163 {
164 if (isset($arNavParams['nTopCount']))
165 {
166 $strSql = $DB->TopSql($strSql, (int) $arNavParams['nTopCount']);
167 $res = $DB->Query($strSql);
168 }
169 else
170 {
171 $res_cnt = $DB->Query("SELECT COUNT(LGL.ID) as C " . $strFrom);
172 $res_cnt = $res_cnt->Fetch();
173 $res = new CDBResult();
174 $rc = $res->NavQuery($strSql, $res_cnt["C"], $arNavParams, $bIgnoreErrors = false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
175 }
176 }
177 else
178 {
179 $res = $DB->Query($strSql);
180 }
181
182 return $res;
183 }
184
185
193 public static function deleteByGroup($groupId)
194 {
195 global $DB;
196
197 $rc = $DB->Query(
198 "DELETE FROM b_learn_groups_lesson WHERE LEARNING_GROUP_ID = " . (int) $groupId,
199 $bIgnoreErrors = true
200 );
201
202 return ($rc !== false);
203 }
204
205
213 public static function deleteByLesson($lessonId)
214 {
215 global $DB;
216
217 $rc = $DB->Query(
218 "DELETE FROM b_learn_groups_lesson WHERE LESSON_ID = " . (int) $lessonId,
219 $bIgnoreErrors = true
220 );
221
222 return ($rc !== false);
223 }
224
225
234 public static function delete($lessonId, $groupId)
235 {
236 global $DB;
237
238 $rc = $DB->Query(
239 "DELETE FROM b_learn_groups_lesson
240 WHERE LESSON_ID = " . (int) $lessonId . "
241 AND LEARNING_GROUP_ID = " . (int) $groupId,
242 $bIgnoreErrors = true
243 );
244
245 return ($rc !== false);
246 }
247
248
249 public static function getDelays($learningGroupId, $arLessonsIds)
250 {
251 if ( ! is_array($arLessonsIds) )
252 return false;
253
254 $arLessonsIds = array_filter($arLessonsIds);
255
256 if (empty($arLessonsIds))
257 return (array());
258
259 // fill default values
260 $arDelays = array();
261 foreach ($arLessonsIds as $lessonId)
262 $arDelays[$lessonId] = 0;
263
265 array(),
266 array(
267 'LEARNING_GROUP_ID' => $learningGroupId,
268 'LESSON_ID' => $arLessonsIds
269 ),
270 array('LESSON_ID', 'DELAY')
271 );
272
273 while ($ar = $rs->fetch())
274 {
275 $lessonId = (int) $ar['LESSON_ID'];
276
277 if (isset($arDelays[$lessonId]))
278 $arDelays[$lessonId] = (int) $ar['DELAY'];
279 }
280
281 return ($arDelays);
282 }
283
284
285 public static function setDelays($learningGroupId, $arDelays)
286 {
287 if ( ! is_array($arDelays) )
288 return false;
289
290 $learningGroupId = (int) $learningGroupId;
291
292 $arLessonsIds = array();
293
294 // first, collect lessons ids
295 foreach ($arDelays as $lessonId => $delay)
296 $arLessonsIds[] = (int) $lessonId;
297
298 $arLessonsIds = array_unique(array_filter($arLessonsIds));
299
300 // determine already registered delays in DB
301 $arRegistered = array();
302 if ( ! empty($arLessonsIds) )
303 {
305 array(),
306 array(
307 'LEARNING_GROUP_ID' => $learningGroupId,
308 'LESSON_ID' => $arLessonsIds
309 ),
310 array('LESSON_ID')
311 );
312
313 while ($ar = $rs->fetch())
314 $arRegistered[] = (int) $ar['LESSON_ID'];
315 }
316
317 $arRegistered = array_unique(array_filter($arRegistered));
318
319 // Do update/add
320 foreach ($arDelays as $lessonId => $delay)
321 {
323 'DELAY' => abs((int)$delay),
324 'LESSON_ID' => (int) $lessonId,
325 'LEARNING_GROUP_ID' => $learningGroupId
326 );
327
328 if (in_array((int)$lessonId, $arRegistered, true))
330 else
332 }
333 }
334
335
336 private static function checkFields($arFields)
337 {
338 global $DB;
339
340 IncludeModuleLangFile(__FILE__);
341
342 $arMsg = array();
343
344 if ( ! array_key_exists('LEARNING_GROUP_ID', $arFields) )
345 $arMsg[] = array("id" => "LEARNING_GROUP_ID", "text" => GetMessage("LEARNING_BAD_LEARNING_GROUP_ID"));
346 else
347 {
348 $rs = CLearningGroup::getList(array(), array('ID' => (int) $arFields['LEARNING_GROUP_ID']), array('ID'));
349 if ( ! ($rs && $rs->fetch()) )
350 $arMsg[] = array("text" => GetMessage("LEARNING_BAD_LEARNING_GROUP_ID_EX"), "id" => "BAD_GROUP_ID");
351 }
352
353 if ( ! array_key_exists('LESSON_ID', $arFields) )
354 $arMsg[] = array("id" => "LESSON_ID", "text" => GetMessage("LEARNING_BAD_LESSON_ID"));
355
356 if (!empty($arMsg))
357 {
358 $e = new CAdminException($arMsg);
359 $GLOBALS["APPLICATION"]->ThrowException($e);
360 return false;
361 }
362
363 return true;
364 }
365
366
367 private static function getFilter($arFilter)
368 {
369 if (!is_array($arFilter))
370 $arFilter = array();
371
372 $arSqlSearch = array();
373
374 foreach ($arFilter as $key => $val)
375 {
377 $key = $res["FIELD"];
378 $cOperationType = $res["OPERATION"];
379
380 $key = mb_strtoupper($key);
381
382 switch ($key)
383 {
384 case 'LESSON_ID':
385 case 'LEARNING_GROUP_ID':
386 $arSqlSearch[] = CLearnHelper::FilterCreate('LGL.' . $key, $val, 'number', $bFullJoin, $cOperationType);
387 break;
388 }
389 }
390
391 return array_filter($arSqlSearch);
392 }
393
394
395 public static function onAfterLearningGroupDelete($groupId)
396 {
397 self::deleteByGroup($groupId);
398 }
399}
static FilterCreate($fname, $vals, $type, &$bFullJoin, $cOperationType=false, $bSkipEmpty=true)
Определения clearnhelper.php:214
static MkOperationFilter($key)
Определения clearnhelper.php:143
static getList($arOrder, $arFilter, $arSelect=array(), $arNavParams=array())
Определения group.php:169
static setDelays($learningGroupId, $arDelays)
Определения grouplesson.php:285
static deleteByLesson($lessonId)
Определения grouplesson.php:213
static onAfterLearningGroupDelete($groupId)
Определения grouplesson.php:395
static getList($arOrder, $arFilter, $arSelect=array(), $arNavParams=array())
Определения grouplesson.php:82
static getDelays($learningGroupId, $arLessonsIds)
Определения grouplesson.php:249
static deleteByGroup($groupId)
Определения grouplesson.php:193
static update($arFields)
Определения grouplesson.php:50
static add($arFields)
Определения grouplesson.php:30
$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
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
DelDuplicateSort(&$arSort)
Определения tools.php:2055
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$order
Определения payment.php:8
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$val
Определения options.php:1793
$rs
Определения action.php:82
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106