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