CForumUser::GetFormattedNameFieldsForSelect: метод Битрикс
Постоянная ссылка: http://bxapi.ru/src/?id=179474
// CForumUser::GetFormattedNameFieldsForSelect()
// /bitrix/modules/forum/classes/mysql/user.php:642
public static function GetFormattedNameFieldsForSelect($arParams = array(), $bReturnAll = true)
{
$arParams = (is_array($arParams) ? $arParams : array($arParams));
$arParams["sNameTemplate"] = trim($arParams["sNameTemplate"]);
$arParams["sUserTablePrefix"] = rtrim((!empty($arParams["sUserTablePrefix"]) ? $arParams["sUserTablePrefix"] : "U"), ".").".";
$arParams["sForumUserTablePrefix"] = rtrim((!empty($arParams["sForumUserTablePrefix"]) ? $arParams["sForumUserTablePrefix"] : "FU"), ".").".";
$arParams["sFieldName"] = (!empty($arParams["sFieldName"]) ? $arParams["sFieldName"] : "AUTHOR_NAME_FRMT");
$arParams["sUserIDFieldName"] = (!empty($arParams["sUserIDFieldName"]) ? $arParams["sUserIDFieldName"] : "F.LAST_POSTER_ID");
$res = array(
"select" =>
"CASE ".
" WHEN (".
$arParams["sForumUserTablePrefix"]."USER_ID > 0 ".
" AND ".
$arParams["sForumUserTablePrefix"]."SHOW_NAME = 'Y' ".
" AND ".
"LENGTH(TRIM(CONCAT_WS('',".
CForumUser::GetNameFieldsForQuery(
$arParams["sNameTemplate"],
$arParams["sUserTablePrefix"])."))) > 0".
") ".
" THEN TRIM(REPLACE(CONCAT_WS(' ',".
CForumUser::GetNameFieldsForQuery(
$arParams["sNameTemplate"],
$arParams["sUserTablePrefix"])."), ' ', ' '))".
" ELSE ".$arParams["sUserTablePrefix"]."LOGIN ".
" END AS ".$arParams["sFieldName"],
"join" =>
"LEFT JOIN b_forum_user ".rtrim($arParams["sForumUserTablePrefix"], ".").
" ON (".$arParams["sUserIDFieldName"]."=".$arParams["sForumUserTablePrefix"]."USER_ID) ".
"LEFT JOIN b_user ".rtrim($arParams["sUserTablePrefix"], ".").
" ON (".$arParams["sUserIDFieldName"]."=".$arParams["sUserTablePrefix"]."ID) "
);
if ($bReturnAll)
return $res;
return $res["select"];
}