10 $arSqlSearch =
array();
11 $arSqlOrder =
array();
15 $arAddParams = is_array($arAddParams) ? $arAddParams : [];
16 if (isset($arAddParams[
"nameTemplate"]))
18 $arAddParams[
"sNameTemplate"] = $arAddParams[
"nameTemplate"];
19 unset($arAddParams[
"nameTemplate"]);
22 if (isset(
$arFilter[
'PERSONAL_BIRTHDAY_DATE']))
24 $subQuery =
"SELECT U.ID FROM b_user U WHERE ";
26 $key = mb_strtoupper($key_res[
"FIELD"]);
28 $strNegative = $key_res[
"NEGATIVE"];
29 $strOperation = $key_res[
"OPERATION"];
30 $subQuery .= ( $strNegative ===
"Y"
31 ?
" U.PERSONAL_BIRTHDAY IS NULL OR NOT "
32 :
" U.PERSONAL_BIRTHDAY IS NOT NULL AND ")
33 .
"(" . $sqlHelper->formatDate(
'MM-DD',
'U.PERSONAL_BIRTHDAY')
34 . $strOperation .
" '".$DB->ForSql(
$val).
"')";
35 $db_sub_res =
$DB->Query($subQuery);
39 while($ar_sub_res = $db_sub_res->Fetch())
40 $arUserID[] = $ar_sub_res[
'ID'];
42 if (
sizeof($arUserID) > 0)
44 if (
sizeof($arUserID) > 50)
45 $arUserID = array_slice($arUserID, 0, 50);
47 unset(
$arFilter[
'PERSONAL_BIRTHDAY_DATE']);
55 $key = mb_strtoupper($key_res[
"FIELD"]);
56 $strNegative = $key_res[
"NEGATIVE"];
57 $strOperation = $key_res[
"OPERATION"];
62 $userID = intval(
$val);
63 if (is_array(
$val) && $strOperation ==
'IN')
66 foreach(
$val as $valI)
67 $userID[] = intval($valI);
68 $userID = array_unique($userID);
72 $userID =
'(' . implode(
', ', $userID).
')';
74 if (!is_array(
$val) && intval($userID)<=0)
75 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.ID IS NULL OR U.ID<=0)";
77 $arSqlSearch[] = ($strNegative==
"Y"?
" U.ID IS NULL OR NOT ":
"").
"(U.ID ".$strOperation.
" ".$userID.
" )";
84 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FU.".
$key.
" IS NULL OR FU.".
$key.
"<=0)";
86 $arSqlSearch[] = ($strNegative==
"Y"?
" FU.".$key.
" IS NULL OR NOT ":
"").
"(FU.".
$key.
" ".$strOperation.
" ".intval(
$val).
" )";
89 case "HIDE_FROM_ONLINE":
90 case "SUBSC_GROUP_MESSAGE":
91 case "SUBSC_GET_MY_MESSAGE":
94 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FU.".
$key.
" IS NULL OR LENGTH(FU.".
$key.
")<=0)";
96 $arSqlSearch[] = ($strNegative==
"Y"?
" FU.".$key.
" IS NULL OR NOT ":
"").
"(FU.".
$key.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
100 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.".
$key.
" IS NULL OR LEN(U.".
$key.
")<=0)";
102 $arSqlSearch[] = ($strNegative==
"Y"?
" U.".$key.
" IS NULL OR NOT ":
"").
"(U.".
$key.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
104 case "PERSONAL_BIRTHDATE":
106 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.PERSONAL_BIRTHDATE IS NULL)";
108 $arSqlSearch[] = ($strNegative==
"Y"?
" U.PERSONAL_BIRTHDATE IS NULL OR NOT ":
"").
"(U.PERSONAL_BIRTHDATE ".$strOperation.
" '".
$DB->ForSql(
$val).
"')";
110 case "PERSONAL_BIRTHDAY":
112 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.PERSONAL_BIRTHDAY IS NULL)";
114 $arSqlSearch[] = ($strNegative==
"Y"?
" U.PERSONAL_BIRTHDAY IS NULL OR NOT ":
"").
"(U.PERSONAL_BIRTHDAY ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"SHORT").
")";
116 case "PERSONAL_BIRTHDAY_DATE":
117 $arSqlSearch[] = ($strNegative==
"Y"?
" U.PERSONAL_BIRTHDAY IS NULL OR NOT ":
"").
"(" . $sqlHelper->formatDate(
'MM-DD',
'U.PERSONAL_BIRTHDAY') . $strOperation.
" '".
$DB->ForSql(
$val).
"')";
121 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FU.LAST_VISIT IS NULL)";
123 $arSqlSearch[] = ($strNegative==
"Y"?
" FU.LAST_VISIT IS NULL OR NOT ":
"").
"(FU.LAST_VISIT ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"FULL").
")";
134 LENGTH(TRIM(CONCAT_WS('',".self::GetNameFieldsForQuery($arAddParams[
"sNameTemplate"]).
"))) > 0
153 U.LOGIN LIKE '%".
$DB->ForSql(
$val).
"%'
161 if (
count($arSqlSearch) > 0)
162 $strSqlSearch =
" AND (".implode(
") AND (", $arSqlSearch).
") ";
164 foreach ($arOrder as $by=>
$order)
166 $by = mb_strtoupper($by);
171 if ($by ==
"USER_ID") $arSqlOrder[] =
" U.ID ".$order.
" ";
172 elseif ($by ==
"SHOW_NAME") $arSqlOrder[] =
" FU.SHOW_NAME ".$order.
" ";
173 elseif ($by ==
"HIDE_FROM_ONLINE") $arSqlOrder[] =
" FU.HIDE_FROM_ONLINE ".$order.
" ";
174 elseif ($by ==
"SUBSC_GROUP_MESSAGE") $arSqlOrder[] =
" FU.SUBSC_GROUP_MESSAGE ".$order.
" ";
175 elseif ($by ==
"SUBSC_GET_MY_MESSAGE") $arSqlOrder[] =
" FU.SUBSC_GET_MY_MESSAGE ".$order.
" ";
176 elseif ($by ==
"NUM_POSTS") $arSqlOrder[] =
" FU.NUM_POSTS ".$order.
" ";
177 elseif ($by ==
"LAST_POST") $arSqlOrder[] =
" FU.LAST_POST ".$order.
" ";
178 elseif ($by ==
"POINTS") $arSqlOrder[] =
" FU.POINTS ".$order.
" ";
179 elseif ($by ==
"NAME") $arSqlOrder[] =
" U.NAME ".$order.
" ";
180 elseif ($by ==
"LAST_NAME") $arSqlOrder[] =
" U.LAST_NAME ".$order.
" ";
181 elseif ($by ==
"LOGIN") $arSqlOrder[] =
" U.LOGIN ".$order.
" ";
182 elseif ($by ==
"LAST_VISIT") $arSqlOrder[] =
" FU.LAST_VISIT ".$order.
" ";
183 elseif ($by ==
"DATE_REGISTER") $arSqlOrder[] =
" U.DATE_REGISTER ".$order.
" ";
184 elseif ($by ==
"SHOW_ABC") $arSqlOrder[] =
" SHOW_ABC ".$order.
" ";
187 $arSqlOrder[] =
" FU.ID ".$order.
" ";
192 if (
count($arSqlOrder) > 0)
193 $strSqlOrder =
" ORDER BY ".implode(
", ", $arSqlOrder);
196 "SELECT FU.ID, U.ID as USER_ID, FU.SHOW_NAME, FU.DESCRIPTION, FU.IP_ADDRESS,
197 FU.REAL_IP_ADDRESS, FU.AVATAR, FU.NUM_POSTS, FU.POINTS as NUM_POINTS,
198 FU.INTERESTS, FU.SUBSC_GROUP_MESSAGE, FU.SUBSC_GET_MY_MESSAGE,
199 FU.LAST_POST, FU.ALLOW_POST, FU.SIGNATURE, FU.RANK_ID,
200 U.EMAIL, U.NAME, U.SECOND_NAME, U.LAST_NAME, U.LOGIN, U.PERSONAL_BIRTHDATE,
201 ".$DB->DateToCharFunction(
"FU.DATE_REG",
"SHORT").
" as DATE_REG,
202 ".
$DB->DateToCharFunction(
"FU.LAST_VISIT",
"FULL").
" as LAST_VISIT,
203 ".
$DB->DateToCharFunction(
"FU.LAST_VISIT",
"SHORT").
" as LAST_VISIT_SHORT,
204 ".
$DB->DateToCharFunction(
"U.DATE_REGISTER",
"SHORT").
" as DATE_REGISTER_SHORT,
205 U.PERSONAL_ICQ, U.PERSONAL_WWW, U.PERSONAL_PROFESSION, U.DATE_REGISTER,
206 U.PERSONAL_CITY, U.PERSONAL_COUNTRY, U.EXTERNAL_AUTH_ID, U.PERSONAL_PHOTO,
207 U.PERSONAL_GENDER, FU.POINTS, FU.HIDE_FROM_ONLINE,
208 ".
$DB->DateToCharFunction(
"U.PERSONAL_BIRTHDAY",
"SHORT").
" as PERSONAL_BIRTHDAY ".
209 (array_key_exists(
"SHOW_ABC",
$arFilter) || array_key_exists(
"sNameTemplate", $arAddParams) ?
210 ", \n".self::GetFormattedNameFieldsForSelect(
214 "sUserTablePrefix" =>
"U.",
215 "sForumUserTablePrefix" =>
"FU.",
216 "sFieldName" =>
"SHOW_ABC")
224 " FROM b_user U LEFT JOIN b_forum_user FU ON (FU.USER_ID = U.ID)"
226 " FROM b_forum_user FU LEFT JOIN b_user U ON (FU.USER_ID = U.ID)"
228 " WHERE 1 = 1 ".$strSqlSearch.
" \n".
231 if (!empty($arAddParams[
"nTopCount"]))
232 $strSql .=
" LIMIT 0," . intval($arAddParams[
"nTopCount"]);
233 if (isset($arAddParams[
"bDescPageNumbering"]) && empty($arAddParams[
"nTopCount"]))
237 "SELECT COUNT('x') as CNT ".
239 " FROM b_user U LEFT JOIN b_forum_user FU ON (FU.USER_ID = U.ID)"
241 " FROM b_forum_user FU LEFT JOIN b_user U ON (FU.USER_ID = U.ID)"
243 " WHERE 1 = 1 ".$strSqlSearch;
249 $db_res->NavQuery($strSql, $iCnt, $arAddParams);
262 $arSqlSearch =
array();
263 $arSqlSelect =
array();
264 $arSqlFrom =
array();
265 $arSqlGroup =
array();
266 $arSqlOrder =
array();
277 $arMainUserFields =
array(
"LOGIN"=>
"S",
"NAME"=>
"S",
"LAST_NAME"=>
"S",
"SECOND_NAME"=>
"S",
278 "PERSONAL_PROFESSION"=>
"S",
"PERSONAL_WWW"=>
"S",
"PERSONAL_ICQ"=>
"S",
"PERSONAL_GENDER"=>
"E",
279 "PERSONAL_PHONE"=>
"S",
"PERSONAL_FAX"=>
"S",
"PERSONAL_MOBILE"=>
"S",
"PERSONAL_PAGER"=>
"S",
280 "PERSONAL_STREET"=>
"S",
"PERSONAL_MAILBOX"=>
"S",
"PERSONAL_CITY"=>
"S",
"PERSONAL_STATE"=>
"S",
281 "PERSONAL_ZIP"=>
"S",
"PERSONAL_COUNTRY"=>
"I",
"EXTERNAL_AUTH_ID"=>
"S",
"PERSONAL_NOTES"=>
"S",
"WORK_COMPANY"=>
"S",
282 "WORK_DEPARTMENT"=>
"S",
"WORK_POSITION"=>
"S",
"WORK_WWW"=>
"S",
"WORK_PHONE"=>
"S",
"WORK_FAX"=>
"S",
283 "WORK_PAGER"=>
"S",
"WORK_STREET"=>
"S",
"WORK_MAILBOX"=>
"S",
"WORK_CITY"=>
"S",
"WORK_STATE"=>
"S",
284 "WORK_ZIP"=>
"S",
"WORK_COUNTRY"=>
"I",
"WORK_PROFILE"=>
"S",
"WORK_NOTES"=>
"S");
285 $arSqlSelectConst =
array(
288 "FU.SHOW_NAME" =>
"FU.SHOW_NAME",
289 "FU.DESCRIPTION" =>
"FU.DESCRIPTION",
290 "FU.IP_ADDRESS" =>
"FU.IP_ADDRESS",
291 "FU.REAL_IP_ADDRESS" =>
"FU.REAL_IP_ADDRESS",
292 "FU.AVATAR" =>
"FU.AVATAR",
293 "FU.NUM_POSTS" =>
"FU.NUM_POSTS",
294 "NUM_POINTS" =>
"FU.POINTS",
295 "FU.INTERESTS" =>
"FU.INTERESTS",
296 "FU.SUBSC_GROUP_MESSAGE" =>
"FU.SUBSC_GROUP_MESSAGE",
297 "FU.SUBSC_GET_MY_MESSAGE" =>
"FU.SUBSC_GET_MY_MESSAGE",
298 "FU.LAST_POST" =>
"FU.LAST_POST",
299 "FU.ALLOW_POST" =>
"FU.ALLOW_POST",
300 "FU.SIGNATURE" =>
"FU.SIGNATURE",
301 "FU.RANK_ID" =>
"FU.RANK_ID",
302 "FU.POINTS" =>
"FU.POINTS",
303 "FU.HIDE_FROM_ONLINE" =>
"FU.HIDE_FROM_ONLINE",
304 "U.DATE_REGISTER" =>
"U.DATE_REGISTER",
305 "U.EMAIL" =>
"U.EMAIL",
306 "U.NAME" =>
"U.NAME",
307 "U.SECOND_NAME" =>
"U.SECOND_NAME",
308 "U.LAST_NAME" =>
"U.LAST_NAME",
309 "U.LOGIN" =>
"U.LOGIN",
310 "U.PERSONAL_BIRTHDATE" =>
"U.PERSONAL_BIRTHDATE",
311 "U.PERSONAL_ICQ" =>
"U.PERSONAL_ICQ",
312 "U.PERSONAL_WWW" =>
"U.PERSONAL_WWW",
313 "U.PERSONAL_PROFESSION" =>
"U.PERSONAL_PROFESSION",
314 "U.PERSONAL_CITY" =>
"U.PERSONAL_CITY",
315 "U.PERSONAL_COUNTRY" =>
"U.PERSONAL_COUNTRY",
316 "U.EXTERNAL_AUTH_ID" =>
"U.EXTERNAL_AUTH_ID",
317 "U.PERSONAL_PHOTO" =>
"U.PERSONAL_PHOTO",
318 "U.PERSONAL_GENDER" =>
"U.PERSONAL_GENDER",
319 "DATE_REG" =>
$DB->DateToCharFunction(
"FU.DATE_REG",
"SHORT"),
320 "LAST_VISIT" =>
$DB->DateToCharFunction(
"FU.LAST_VISIT",
"FULL"),
321 "PERSONAL_BIRTHDAY" =>
$DB->DateToCharFunction(
"U.PERSONAL_BIRTHDAY",
"SHORT"),
322 "U.WORK_POSITION" =>
"U.WORK_POSITION",
323 "U.WORK_COMPANY" =>
"U.WORK_COMPANY"
329 $key = mb_strtoupper($key_res[
"FIELD"]);
330 $strNegative = $key_res[
"NEGATIVE"];
331 $strOperation = $key_res[
"OPERATION"];
337 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.ID IS NULL OR U.ID<=0)";
339 $arSqlSearch[] = ($strNegative==
"Y"?
" U.ID IS NULL OR NOT ":
"").
"(U.ID ".$strOperation.
" ".intval(
$val).
" )";
345 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FU.".
$key.
" IS NULL OR FU.".
$key.
"<=0)";
347 $arSqlSearch[] = ($strNegative==
"Y"?
" FU.".$key.
" IS NULL OR NOT ":
"").
"(FU.".
$key.
" ".$strOperation.
" ".intval(
$val).
" )";
350 case "HIDE_FROM_ONLINE":
351 case "SUBSC_GROUP_MESSAGE":
352 case "SUBSC_GET_MY_MESSAGE":
355 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FU.".
$key.
" IS NULL OR LENGTH(FU.".
$key.
")<=0)";
357 $arSqlSearch[] = ($strNegative==
"Y"?
" FU.".$key.
" IS NULL OR NOT ":
"").
"(FU.".
$key.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
361 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.".
$key.
" IS NULL OR LEN(U.".
$key.
")<=0)";
363 $arSqlSearch[] = ($strNegative==
"Y"?
" U.".$key.
" IS NULL OR NOT ":
"").
"(U.".
$key.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
365 case "PERSONAL_BIRTHDATE":
367 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.PERSONAL_BIRTHDATE IS NULL)";
369 $arSqlSearch[] = ($strNegative==
"Y"?
" U.PERSONAL_BIRTHDATE IS NULL OR NOT ":
"").
"(U.PERSONAL_BIRTHDATE ".$strOperation.
" '".
$DB->ForSql(
$val).
"')";
371 case "PERSONAL_BIRTHDAY":
373 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(U.PERSONAL_BIRTHDAY IS NULL)";
375 $arSqlSearch[] = ($strNegative==
"Y"?
" U.PERSONAL_BIRTHDAY IS NULL OR NOT ":
"").
"(U.PERSONAL_BIRTHDAY ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"SHORT").
")";
377 case "PERSONAL_BIRTHDAY_DATE":
378 $arSqlSearch[] = ($strNegative==
"Y"?
" U.PERSONAL_BIRTHDAY IS NULL OR NOT ":
"").
"( ". $sqlHelper->formatDate(
'MM-DD',
'U.PERSONAL_BIRTHDAY') .
") ".$strOperation.
" '".
$DB->ForSql(
$val).
"')";
382 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FU.LAST_VISIT IS NULL)";
384 $arSqlSearch[] = ($strNegative==
"Y"?
" FU.LAST_VISIT IS NULL OR NOT ":
"").
"(FU.LAST_VISIT ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"SHORT").
")";
393 case"SUBSC_NEW_TOPIC_ONLY":
394 $key =
"NEW_TOPIC_ONLY";
395 $arSqlFrom[
"FS"] =
"INNER JOIN b_forum_subscribe FS ON (FU.USER_ID = FS.USER_ID)";
397 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FS.".
$key.
" IS NULL OR LENGTH(FS.".
$key.
")<=0)";
399 $arSqlSearch[] = ($strNegative==
"Y"?
" FS.".$key.
" IS NULL OR NOT ":
"").
"(FS.".
$key.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
401 case "SUBSC_START_DATE":
403 $arSqlFrom[
"FS"] =
"INNER JOIN b_forum_subscribe FS ON (FU.USER_ID = FS.USER_ID)";
405 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FS.".
$key.
" IS NULL)";
407 $arSqlSearch[] = ($strNegative==
"Y"?
" FS.".$key.
" IS NULL OR NOT ":
"").
"(FS.".
$key.
" ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"SHORT").
")";
409 case "SUBSC_FORUM_ID":
410 case "SUBSC_TOPIC_ID":
412 $arSqlFrom[
"FS"] =
"INNER JOIN b_forum_subscribe FS ON (FU.USER_ID = FS.USER_ID)";
413 unset($arSqlSelectConst[
"FU.INTERESTS"]);
414 $arSqlSelect = $arSqlSelectConst;
415 $arSqlSelect[
"SUBSC_COUNT"] =
"COUNT(FS.ID)";
416 $arSqlSelect[
"SUBSC_START_DATE"] =
$DB->DateToCharFunction(
"MIN(FS.START_DATE)",
"FULL");
417 $arSqlGroup = array_merge($arSqlSelectConst, $arSqlGroup);
420 $key = mb_substr(
$key, mb_strlen(
"SUBSC_"));
422 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(FS.".
$key.
" IS NULL OR FS.".
$key.
"<=0)";
424 $arSqlSearch[] = ($strNegative==
"Y"?
" FS.".$key.
" IS NULL OR NOT ":
"").
"(FS.".
$key.
" ".$strOperation.
" ".intval(
$val).
" )";
428 if (mb_substr(
$key, 0, mb_strlen(
"USER_")) ==
"USER_")
430 $strUserKey = mb_substr(
$key, mb_strlen(
"USER_"));
431 if (array_key_exists($strUserKey, $arMainUserFields))
433 if ($arMainUserFields[$strUserKey]==
"I")
434 $arSqlSearch[] = ($strNegative==
"Y"?
" U.".$strUserKey.
" IS NULL OR NOT ":
"").
"(U.".$strUserKey.
" ".$strOperation.
" ".intval(
$val).
" )";
435 elseif ($arMainUserFields[$strUserKey]==
"E")
436 $arSqlSearch[] = ($strNegative==
"Y"?
" U.".$strUserKey.
" IS NULL OR NOT ":
"").
"(U.".$strUserKey.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
443 if (
count($arSqlSearch) > 0)
444 $strSqlSearch =
" AND (".implode(
") AND (", $arSqlSearch).
") ";
445 if (
count($arSqlSelect) <= 0)
446 $arSqlSelect = $arSqlSelectConst;
447 foreach ($arSqlSelect as
$key =>
$val)
454 $strSqlSelect = implode(
", ",
$tmp);
455 if (
count($arSqlFrom) > 0)
456 $strSqlFrom = implode(
" ", $arSqlFrom);
457 if (
count($arSqlGroup) > 0)
458 $strSqlGroup =
" GROUP BY ".implode(
", ", $arSqlGroup);
460 foreach ($arOrder as $by=>
$order)
462 $by = mb_strtoupper($by);
467 if ($by ==
"USER_ID") $arSqlOrder[] =
" U.ID ".$order.
" ";
468 elseif ($by ==
"SHOW_NAME") $arSqlOrder[] =
" FU.SHOW_NAME ".$order.
" ";
469 elseif ($by ==
"HIDE_FROM_ONLINE") $arSqlOrder[] =
" FU.HIDE_FROM_ONLINE ".$order.
" ";
470 elseif ($by ==
"SUBSC_GROUP_MESSAGE") $arSqlOrder[] =
" FU.SUBSC_GROUP_MESSAGE ".$order.
" ";
471 elseif ($by ==
"SUBSC_GET_MY_MESSAGE") $arSqlOrder[] =
" FU.SUBSC_GET_MY_MESSAGE ".$order.
" ";
472 elseif ($by ==
"NUM_POSTS") $arSqlOrder[] =
" FU.NUM_POSTS ".$order.
" ";
473 elseif ($by ==
"LAST_POST") $arSqlOrder[] =
" FU.LAST_POST ".$order.
" ";
474 elseif ($by ==
"POINTS") $arSqlOrder[] =
" FU.POINTS ".$order.
" ";
475 elseif ($by ==
"NAME") $arSqlOrder[] =
" U.NAME ".$order.
" ";
476 elseif ($by ==
"LAST_NAME") $arSqlOrder[] =
" U.LAST_NAME ".$order.
" ";
477 elseif ($by ==
"EMAIL") $arSqlOrder[] =
" U.EMAIL ".$order.
" ";
478 elseif ($by ==
"LOGIN") $arSqlOrder[] =
" U.LOGIN ".$order.
" ";
479 elseif ($by ==
"LAST_VISIT") $arSqlOrder[] =
" FU.LAST_VISIT ".$order.
" ";
480 elseif ($by ==
"DATE_REGISTER") $arSqlOrder[] =
" U.DATE_REGISTER ".$order.
" ";
481 elseif ($by ==
"ID") $arSqlOrder[] =
" FU.ID ".$order.
" ";
482 elseif (($by ==
"SUBSC_COUNT") && array_key_exists(
"FS", $arSqlFrom)) $arSqlOrder[] =
" SUBSC_COUNT ".$order.
" ";
483 elseif (($by ==
"SUBSC_START_DATE") && array_key_exists(
"FS", $arSqlFrom)) $arSqlOrder[] =
" FS.START_DATE ".$order.
" ";
484 elseif (mb_substr($by, 0, mb_strlen(
"USER_")) ==
"USER_")
486 $strUserBy = mb_substr($by, mb_strlen(
"USER_"));
487 if (array_key_exists($strUserBy, $arMainUserFields))
489 $arSqlOrder[] =
" U.".$strUserBy.
" ".
$order.
" ";
494 $arSqlOrder[] =
" FU.ID ".$order.
" ";
500 if (
count($arSqlOrder) > 0)
501 $strSqlOrder =
" ORDER BY ".implode(
", ", $arSqlOrder);
503 $strSql =
"SELECT ".$strSqlSelect.
"
505 INNER JOIN b_user U ON (FU.USER_ID = U.ID)
614 $sNameTemplate = (empty($sNameTemplate) ? CSite::GetDefaultNameFormat() : $sNameTemplate);
615 if (!preg_match(
"/(#NAME#)|(#LAST_NAME#\,)|(#LAST_NAME#)|(#SECOND_NAME#)|(#NAME_SHORT#)|(#SECOND_NAME_SHORT#)/u", $sNameTemplate,
$matches))
616 $sNameTemplate = CSite::GetDefaultNameFormat();
617 if (mb_strpos($sNameTemplate,
"#NOBR#") !==
false)
618 $sNameTemplate = preg_replace(
"/\#NOBR\#(.+?)\#\/NOBR\#/u",
"\\1", $sNameTemplate);
620 preg_match_all(
"/(#NAME#)|(#LAST_NAME#\,)|(#LAST_NAME#)|(#SECOND_NAME#)|(#NAME_SHORT#)|(#SECOND_NAME_SHORT#)/u", $sNameTemplate,
$matches);
624 $pos = mb_strpos($sNameTemplate,
$val);
626 $tmp[] =
"'".$DB->ForSql(mb_substr($sNameTemplate, 0, $pos)).
"'";
628 $tmp[] = str_replace(
635 "#SECOND_NAME_SHORT#"
638 $userTablePrefix.
"NAME",
639 "case when LENGTH(TRIM(".$userTablePrefix.
"LAST_NAME)) <= 0 then '' else " . $sqlHelper->getConcatFunction($userTablePrefix.
'LAST_NAME',
"','") .
" END",
640 $userTablePrefix.
"LAST_NAME",
641 $userTablePrefix.
"SECOND_NAME",
642 "case when LENGTH(TRIM(".$userTablePrefix.
"NAME)) <= 0 then '' else " . $sqlHelper->getConcatFunction(
"SUBSTRING(".$userTablePrefix.
"NAME,1,1)",
"'.'") .
" END",
643 "case when LENGTH(TRIM(".$userTablePrefix.
"SECOND_NAME)) <= 0 then '' else " . $sqlHelper->getConcatFunction(
"SUBSTRING(".$userTablePrefix.
"SECOND_NAME,1,1)",
"'.'") .
" END"
647 $sNameTemplate = mb_substr($sNameTemplate, ($pos + mb_strlen(
$val)));
649 if (!empty($sNameTemplate))
650 $tmp[] =
"'".$DB->ForSql($sNameTemplate).
"'";
652 return (!empty(
$res) ?
$res :
"''");