- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/classes/mysql/user.php
- Класс: CForumUser
- Вызов: CForumUser::SearchUser
static function SearchUser($template, $arAddParams = array())
{
global $DB;
$template = $DB->ForSql(str_replace("*", "%", $template));
$arAddParams = (is_array($arAddParams) ? $arAddParams : array($arAddParams));
$arAddParams["sNameTemplate"] = (is_set($arAddParams, "nameTemplate") ? $arAddParams["nameTemplate"] : $arAddParams["sNameTemplate"]);
$strSqlSearch =
"(
F.SHOW_NAME = 'Y' AND LENGTH(U.NAME) > 0 AND U.NAME LIKE '".$template."'
)
OR
(
F.SHOW_NAME = 'Y' AND LENGTH(U.NAME) <= 0
AND
LENGTH(U.LAST_NAME) > 0 AND U.LAST_NAME LIKE '".$template."'
)
OR
(
(
F.SHOW_NAME = 'N' OR F.SHOW_NAME = '' OR (F.SHOW_NAME IS NULL)
OR
(
F.SHOW_NAME = 'Y'
AND
LENGTH(TRIM(CONCAT_WS('',".self::GetNameFieldsForQuery($arAddParams["sNameTemplate"]).")))<=0
)
)
AND
U.LOGIN LIKE '".$template."'
)";
if (mb_substr($template, 0, 1) == '%')
$strSqlSearch =
"(
(
F.SHOW_NAME = 'Y'
AND
LENGTH(TRIM(CONCAT_WS('',U.NAME,U.LAST_NAME))) > 0
AND
REPLACE(CONCAT_WS(' ',".self::GetNameFieldsForQuery($arAddParams["sNameTemplate"])."), ' ', ' ') LIKE '".$template."'
)
OR
(
(
F.SHOW_NAME = 'N' OR F.SHOW_NAME = '' OR (F.SHOW_NAME IS NULL)
OR
(
F.SHOW_NAME = 'Y'
AND
LENGTH(TRIM(CONCAT_WS('',".self::GetNameFieldsForQuery($arAddParams["sNameTemplate"])."))) <= 0
)
)
AND
U.LOGIN LIKE '".$template."'
)
)";
$iCnt = 0;
if ($arAddParams["bCount"] || is_set($arAddParams, "bDescPageNumbering"))
{
$strSql = "SELECT COUNT(U.ID) AS CNT FROM b_user U LEFT JOIN b_forum_user F ON (F.USER_ID = U.ID) WHERE ".$strSqlSearch;
$db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
$iCnt = ($db_res && ($res = $db_res->Fetch()) ? intval($res["CNT"]) : 0);
if ($arAddParams["bCount"])
return $iCnt;
}
$strSql =
"SELECT U.ID, U.NAME, U.SECOND_NAME, U.LAST_NAME, U.LOGIN, F.SHOW_NAME,
CASE
WHEN (F.SHOW_NAME = 'Y' AND LENGTH(TRIM(CONCAT_WS('',".self::GetNameFieldsForQuery($arAddParams["sNameTemplate"])."))) > 0)
THEN TRIM(REPLACE(CONCAT_WS(' ',".self::GetNameFieldsForQuery($arAddParams["sNameTemplate"])."), ' ', ' '))
ELSE U.LOGIN
END AS SHOW_ABC
FROM b_user U
LEFT JOIN b_forum_user F ON (F.USER_ID = U.ID)
WHERE ".$strSqlSearch."n"."ORDER BY SHOW_ABC";
if (is_set($arAddParams, "bDescPageNumbering")) {
$db_res = new CDBResult();
$db_res->NavQuery($strSql, $iCnt, $arAddParams);
} else {
if ($arAddParams["nTopCount"] > 0)
$strSql .= " LIMIT 0,".$arAddParams["nTopCount"];
$db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
}
return $db_res;
}