1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
groupmember.php
См. документацию.
1<?php
8
9
10/*
11 table definition:
12
13 CREATE TABLE b_learn_groups_member (
14 LEARNING_GROUP_ID int(11) NOT NULL DEFAULT '0',
15 USER_ID int(11) NOT NULL DEFAULT '0',
16 PRIMARY KEY (LEARNING_GROUP_ID, USER_ID),
17 KEY USER_ID (USER_ID)
18 );
19*/
21{
29 public static function add($arFields)
30 {
31 global $DB;
32
33 if ( ! self::checkFields($arFields) )
34 return false;
35
36 $userId = (int) $arFields['USER_ID'];
37 $groupId = (int) $arFields['LEARNING_GROUP_ID'];
38
39 $strSql = "INSERT INTO b_learn_groups_member (LEARNING_GROUP_ID, USER_ID)
40 VALUES ($groupId, $userId)";
41
42 $rc = $DB->query($strSql, $bIgnoreErrors = true);
43
44 foreach(GetModuleEvents('learning', 'OnAfterLearningGroupMemberAdd', true) as $arEvent)
46
47 return ($rc !== false);
48 }
49
50
61 public static function getList($arOrder, $arFilter, $arSelect = array(), $arNavParams = array())
62 {
63 global $DB, $USER;
64
66 'LEARNING_GROUP_ID' => 'LGM.LEARNING_GROUP_ID',
67 'USER_ID' => 'LGM.USER_ID'
68 );
69
70 if (count($arSelect) <= 0 || in_array("*", $arSelect))
71 $arSelect = array_keys($arFields);
72
73 if (!is_array($arOrder))
74 $arOrder = array();
75
76 $arSqlOrder = [];
77 foreach ($arOrder as $by => $order)
78 {
79 $by = (string) $by;
80 $needle = null;
81 $order = mb_strtolower($order);
82
83 if ($order != "asc")
84 $order = "desc";
85
86 if (array_key_exists($by, $arFields))
87 {
88 $arSqlOrder[] = ' ' . $by . ' ' . $order . ' ';
89 $needle = $by;
90 }
91
92 if (
93 ($needle !== null)
94 && ( ! in_array($needle, $arSelect, true) )
95 )
96 {
97 $arSelect[] = $needle;
98 }
99 }
100
101 $arSqlSelect = array();
102 foreach ($arSelect as $field)
103 {
104 $field = mb_strtoupper($field);
105 if (array_key_exists($field, $arFields))
106 $arSqlSelect[$field] = $arFields[$field] . ' AS ' . $field;
107 }
108
109 if (!sizeof($arSqlSelect))
110 $arSqlSelect[] = 'LGM.USER_ID AS USER_ID';
111
112 $arSqlSearch = self::getFilter($arFilter);
113
114 $strSql = "
115 SELECT
116 U.NAME AS MEMBER_NAME,
117 U.LAST_NAME AS MEMBER_LAST_NAME,
118 U.SECOND_NAME AS MEMBER_SECOND_NAME,
119 U.LOGIN AS MEMBER_LOGIN,
120 U.EMAIL AS MEMBER_EMAIL,
121 " . implode(",\n", $arSqlSelect);
122
123 $strFrom = "
124 FROM
125 b_learn_groups_member LGM
126 LEFT JOIN b_user U ON U.ID = LGM.USER_ID
127 "
128 . (sizeof($arSqlSearch) ? " WHERE " . implode(" AND ", $arSqlSearch) : "") . " ";
129
130 $strSql .= $strFrom;
131
132 $strSqlOrder = "";
133 DelDuplicateSort($arSqlOrder);
134 for ($i = 0, $arSqlOrderCnt = count($arSqlOrder); $i < $arSqlOrderCnt; $i++)
135 {
136 if ($i == 0)
137 $strSqlOrder = " ORDER BY ";
138 else
139 $strSqlOrder .= ",";
140
141 $strSqlOrder .= $arSqlOrder[$i];
142 }
143
144 $strSql .= $strSqlOrder;
145
146 if (count($arNavParams))
147 {
148 if (isset($arNavParams['nTopCount']))
149 {
150 $strSql = $DB->TopSql($strSql, (int) $arNavParams['nTopCount']);
151 $res = $DB->Query($strSql);
152 }
153 else
154 {
155 $res_cnt = $DB->Query("SELECT COUNT(LGM.ID) as C " . $strFrom);
156 $res_cnt = $res_cnt->Fetch();
157 $res = new CDBResult();
158 $rc = $res->NavQuery($strSql, $res_cnt["C"], $arNavParams, $bIgnoreErrors = false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
159 }
160 }
161 else
162 {
163 $res = $DB->Query($strSql);
164 }
165
166 return $res;
167 }
168
169
177 public static function deleteByGroup($groupId)
178 {
179 global $DB;
180
181 $rc = $DB->Query(
182 "DELETE FROM b_learn_groups_member WHERE LEARNING_GROUP_ID = " . (int) $groupId,
183 $bIgnoreErrors = true
184 );
185
186 return ($rc !== false);
187 }
188
189
197 public static function deleteByUser($userId)
198 {
199 global $DB;
200
201 $rc = $DB->Query(
202 "DELETE FROM b_learn_groups_member WHERE USER_ID = " . (int) $userId,
203 $bIgnoreErrors = true
204 );
205
206 return ($rc !== false);
207 }
208
209
218 public static function delete($userId, $groupId)
219 {
220 global $DB;
221
222 $rc = $DB->Query(
223 "DELETE FROM b_learn_groups_member
224 WHERE USER_ID = " . (int) $userId . "
225 AND LEARNING_GROUP_ID = " . (int) $groupId,
226 $bIgnoreErrors = true
227 );
228
229 return ($rc !== false);
230 }
231
232
233 private static function checkFields($arFields)
234 {
235 global $DB;
236
237 IncludeModuleLangFile(__FILE__);
238
239 $arMsg = array();
240
241 if ( ! array_key_exists('LEARNING_GROUP_ID', $arFields) )
242 $arMsg[] = array("id" => "LEARNING_GROUP_ID", "text" => GetMessage("LEARNING_BAD_LEARNING_GROUP_ID"));
243 else
244 {
245 $rs = CLearningGroup::getList(array(), array('ID' => (int) $arFields['LEARNING_GROUP_ID']), array('ID'));
246 if ( ! ($rs && $rs->fetch()) )
247 $arMsg[] = array("text" => GetMessage("LEARNING_BAD_LEARNING_GROUP_ID_EX"), "id" => "BAD_USER_ID");
248 }
249
250 if ( ! array_key_exists('USER_ID', $arFields) )
251 $arMsg[] = array("id" => "USER_ID", "text" => GetMessage("LEARNING_BAD_USER_ID"));
252 else
253 {
254 $r = CUser::GetByID((int)$arFields["USER_ID"]);
255 if ( ! ($r && $r->fetch()) )
256 $arMsg[] = array("text" => GetMessage("LEARNING_BAD_USER_ID_EX"), "id" => "BAD_USER_ID");
257 }
258
259 if (!empty($arMsg))
260 {
261 $e = new CAdminException($arMsg);
262 $GLOBALS["APPLICATION"]->ThrowException($e);
263 return false;
264 }
265
266 return true;
267 }
268
269
270 private static function getFilter($arFilter)
271 {
272 if (!is_array($arFilter))
273 $arFilter = array();
274
275 $arSqlSearch = array();
276
277 foreach ($arFilter as $key => $val)
278 {
280 $key = $res["FIELD"];
281 $cOperationType = $res["OPERATION"];
282
283 $key = mb_strtoupper($key);
284
285 switch ($key)
286 {
287 case 'USER_ID':
288 case 'LEARNING_GROUP_ID':
289 $arSqlSearch[] = CLearnHelper::FilterCreate('LGM.' . $key, $val, 'number', $bFullJoin, $cOperationType);
290 break;
291 }
292 }
293
294 return array_filter($arSqlSearch);
295 }
296
297
298 public static function onAfterLearningGroupDelete($groupId)
299 {
300 self::deleteByGroup($groupId);
301 }
302}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static GetByID($ID)
Определения user.php:3820
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 deleteByUser($userId)
Определения groupmember.php:197
static onAfterLearningGroupDelete($groupId)
Определения groupmember.php:298
static getList($arOrder, $arFilter, $arSelect=array(), $arNavParams=array())
Определения groupmember.php:61
static deleteByGroup($groupId)
Определения groupmember.php:177
static add($arFields)
Определения groupmember.php:29
$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
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
DelDuplicateSort(&$arSort)
Определения tools.php:2055
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
$order
Определения payment.php:8
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