174 $obUserFieldsSql->SetEntity(
"LEARNING_LGROUPS",
"LG.ID");
175 $obUserFieldsSql->SetSelect($arSelect);
177 $obUserFieldsSql->SetOrder($arOrder);
181 'TITLE' =>
'LG.TITLE',
182 'ACTIVE' =>
'LG.ACTIVE',
185 'ACTIVE_FROM' =>
$DB->DateToCharFunction(
'LG.ACTIVE_FROM',
'FULL'),
186 'ACTIVE_TO' =>
$DB->DateToCharFunction(
'LG.ACTIVE_TO',
'FULL'),
187 'COURSE_LESSON_ID' =>
'LG.COURSE_LESSON_ID',
188 'COURSE_TITLE' =>
'LL.NAME',
189 'MEMBER_ID' =>
'LGM.USER_ID'
193 $arFieldsSort[
"ACTIVE_FROM"] =
"LG.ACTIVE_FROM";
194 $arFieldsSort[
"ACTIVE_TO"] =
"LG.ACTIVE_TO";
196 if (
count($arSelect) <= 0 || in_array(
"*", $arSelect))
197 $arSelect = array_diff(array_keys(
$arFields),
array(
'MEMBER_ID'));
198 elseif (!in_array(
"ID", $arSelect))
201 if (!is_array($arOrder))
205 foreach ($arOrder as $by =>
$order)
208 $byUppercase = mb_strtoupper($by);
215 if (array_key_exists($byUppercase, $arFieldsSort))
217 $arSqlOrder[] =
' ' . $arFieldsSort[$byUppercase] .
' ' .
$order .
' ';
218 $needle = $byUppercase;
220 elseif ($s = $obUserFieldsSql->getOrder(mb_strtolower($by)))
221 $arSqlOrder[] =
' ' . $s .
' ' .
$order .
' ';
225 && ( ! in_array($needle, $arSelect,
true) )
228 $arSelect[] = $needle;
234 && ( ! in_array(
'MEMBER_ID', $arSelect,
true) )
237 $arSelect[] =
'MEMBER_ID';
240 $arSqlSelect =
array();
241 foreach ($arSelect as $field)
243 $field = mb_strtoupper($field);
245 $arSqlSelect[$field] =
$arFields[$field] .
' AS ' . $field;
248 if (!
sizeof($arSqlSelect))
249 $arSqlSelect =
'LG.ID AS ID';
251 $arSqlSearch = self::getFilter(
$arFilter);
253 $r = $obUserFieldsSql->GetFilter();
255 $arSqlSearch[] =
"(".$r.
")";
259 ".implode(
",\n", $arSqlSelect).
"
260 ".$obUserFieldsSql->GetSelect();
267 if (in_array(
'COURSE_TITLE', $arSelect,
true))
268 $strFrom .=
"LEFT OUTER JOIN b_learn_lesson LL ON LL.ID = LG.COURSE_LESSON_ID \n" ;
270 if (in_array(
'MEMBER_ID', $arSelect,
true))
271 $strFrom .=
"LEFT JOIN b_learn_groups_member LGM ON LGM.LEARNING_GROUP_ID = LG.ID \n" ;
273 $strFrom .= $obUserFieldsSql->GetJoin(
"LG.ID") .
" "
274 . (
sizeof($arSqlSearch) ?
" WHERE " . implode(
" AND ", $arSqlSearch) :
"") .
" ";
280 for (
$i = 0, $arSqlOrderCnt =
count($arSqlOrder);
$i < $arSqlOrderCnt;
$i++)
283 $strSqlOrder =
" ORDER BY ";
287 $strSqlOrder .= $arSqlOrder[
$i];
290 $strSql .= $strSqlOrder;
292 if (
count($arNavParams))
294 if (isset($arNavParams[
'nTopCount']))
296 $strSql =
$DB->TopSql($strSql, (
int) $arNavParams[
'nTopCount']);
302 $res_cnt =
$DB->Query(
"SELECT COUNT(LG.ID) as C " . $strFrom);
303 $res_cnt = $res_cnt->Fetch();
304 $res =
new CDBResult();
306 $rc =
$res->NavQuery($strSql, $res_cnt[
"C"], $arNavParams, $bIgnoreErrors =
false,
"File: " . __FILE__ .
"<br>Line: " . __LINE__);