• Модуль: 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; }