• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/mysql/user.php
  • Класс: CForumUser
  • Вызов: CForumUser::GetNameFieldsForQuery
static function GetNameFieldsForQuery($sNameTemplate, $userTablePrefix = "U.")
{
	global $DB;
	$sNameTemplate = (empty($sNameTemplate) ? CSite::GetDefaultNameFormat() : $sNameTemplate);
	if (!preg_match("/(#NAME#)|(#LAST_NAME#,)|(#LAST_NAME#)|(#SECOND_NAME#)|(#NAME_SHORT#)|(#SECOND_NAME_SHORT#)/".BX_UTF_PCRE_MODIFIER, $sNameTemplate, $matches))
		$sNameTemplate = CSite::GetDefaultNameFormat();
	if (mb_strpos($sNameTemplate, "#NOBR#") !== false)
		$sNameTemplate = preg_replace("/#NOBR#(.+?)#/NOBR#/".BX_UTF_PCRE_MODIFIER, "\1", $sNameTemplate);

	preg_match_all("/(#NAME#)|(#LAST_NAME#,)|(#LAST_NAME#)|(#SECOND_NAME#)|(#NAME_SHORT#)|(#SECOND_NAME_SHORT#)/".BX_UTF_PCRE_MODIFIER, $sNameTemplate, $matches);

	$tmp = array();
	foreach($matches[0] as $val) {
		$pos = mb_strpos($sNameTemplate, $val);
		if ($pos > 0) {
			$tmp[] = "'".$DB->ForSql(mb_substr($sNameTemplate, 0, $pos))."'";
		}
		$tmp[] = str_replace(
			array(
				"#NAME#",
				"#LAST_NAME#,",
				"#LAST_NAME#",
				"#SECOND_NAME#",
				"#NAME_SHORT#",
				"#SECOND_NAME_SHORT#"
			),
			array(
				$userTablePrefix."NAME",
				"IF (LENGTH(TRIM(".$userTablePrefix."LAST_NAME)) <= 0, '', CONCAT(".$userTablePrefix."LAST_NAME, ','))",
				$userTablePrefix."LAST_NAME",
				$userTablePrefix."SECOND_NAME",
				"IF (LENGTH(TRIM(".$userTablePrefix."NAME)) <= 0,'',CONCAT(SUBSTRING(".$userTablePrefix."NAME,1,1),'.'))",
				"IF (LENGTH(TRIM(".$userTablePrefix."SECOND_NAME)) <= 0,'',CONCAT(SUBSTRING(".$userTablePrefix."SECOND_NAME,1,1),'.'))"
			),
			$val
		);
		$sNameTemplate = mb_substr($sNameTemplate, ($pos + mb_strlen($val)));
	}
	if (!empty($sNameTemplate))
		$tmp[] = "'".$DB->ForSql($sNameTemplate)."'";
	$res = implode(",", $tmp);
	return (!empty($res) ? $res : "''");
}