private function SearchUserByName($user) { $user = trim($user); if (strlen($user) <= 0) { return array(); } $userId = 0; if ($user . "|" == intval($user) . "|") { $userId = intval($user); } if ($userId <= 0) { $arMatches = array(); if (preg_match("#\\[(\\d+)\\]#i", $user, $arMatches)) { $userId = intval($arMatches[1]); } } $arResult = array(); $dbUsers = false; if ($userId > 0) { $arFilter = array("ID_EQUAL_EXACT" => $userId); $dbUsers = CUser::GetList($by = "LAST_NAME", $order = "asc", $arFilter, array("NAV_PARAMS" => false)); } else { $userLogin = ""; $arMatches = array(); if (preg_match("#\\((.+?)\\)#i", $user, $arMatches)) { $userLogin = $arMatches[1]; $user = trim(str_replace("(" . $userLogin . ")", "", $user)); } $userEmail = ""; $arMatches = array(); if (preg_match("#<(.+?)>#i", $user, $arMatches)) { if (check_email($arMatches[1])) { $userEmail = $arMatches[1]; $user = Trim(Str_Replace("<" . $userEmail . ">", "", $user)); } } $arUser = array(); $arUserTmp = Explode(" ", $user); foreach ($arUserTmp as $s) { $s = Trim($s); if (StrLen($s) > 0) { $arUser[] = $s; } } if (strlen($userLogin) > 0) { $arUser[] = $userLogin; } $dbUsers = CUser::SearchUserByName($arUser, $userEmail, true); } if ($dbUsers) { while ($arUsers = $dbUsers->GetNext()) { $arResult[] = $arUsers["ID"]; } } return $arResult; }
public function AjaxRequest($arParams = false) { global $USER; if (!$USER->CanDoOperation('view_all_users')) { return false; } $search = urldecode($_REQUEST['search']); $elements = ""; $arFinderParams = array("PROVIDER" => $this->id, "TYPE" => 2); $strUserIDs = ''; $dbRes = CUser::SearchUserByName(explode(' ', $search), '', true); if ($dbRes) { while ($arRes = $dbRes->Fetch()) { $strUserIDs .= ($strUserIDs == '' ? '' : '|') . $arRes['ID']; } } $arFilter = array('ACTIVE' => 'Y', 'NAME_SEARCH' => $search, 'ID' => $strUserIDs); $dbRes = CUser::GetList($by = 'last_name', $order = 'asc', $arFilter); $dbRes->NavStart(20); while ($arUser = $dbRes->NavNext(false)) { $arItem = array("ID" => "U" . $arUser["ID"], "NAME" => CUser::FormatName(CSite::GetNameFormat(false), $arUser, true, false)); $elements .= CFinder::GetFinderItem($arFinderParams, $arItem); } return $elements; }
/** * <p>Метод ищет пользователя по его имени или коду.</p> * * * * * @param string $user Имя или код пользователя. Если параметр является числом или * строкой, в которой содержится число в квадратных скобках, то это * число рассматривается как код пользователя. В противном случае * параметр рассматривается как строка, содержащая ФИО * пользователя. * * * * @param bool $bIntranet = false Флаг, определяющий, осуществляется ли работа в рамках решения * интранет. Необязательный параметр. По умолчанию равен false. * * * * @return array <p>Массив пользователей, удовлетворяющих условию поиска.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetUser/searchuser.php * @author Bitrix */ public static function SearchUser($user, $bIntranet = false) { $user = Trim($user); if (StrLen($user) <= 0) { return false; } $userID = 0; if ($user . "|" == IntVal($user) . "|") { $userID = IntVal($user); } if ($userID <= 0) { $arMatches = array(); if (preg_match("#\\[(\\d+)\\]#i", $user, $arMatches)) { $userID = IntVal($arMatches[1]); } } $dbUsers = false; if ($userID > 0) { $arFilter = array("ID_EQUAL_EXACT" => $userID); $dbUsers = CUser::GetList($by = "LAST_NAME", $order = "asc", $arFilter, array("NAV_PARAMS" => false)); } else { $email = ""; $arMatches = array(); if (preg_match("#<(.+?)>#i", $user, $arMatches)) { if (check_email($arMatches[1])) { $email = $arMatches[1]; $user = Trim(Str_Replace("<" . $email . ">", "", $user)); } } $arUser = array(); $arUserTmp = Explode(" ", $user); foreach ($arUserTmp as $s) { $s = Trim($s); if (StrLen($s) > 0) { $arUser[] = $s; } } if (count($arUser) <= 0 && strlen($email) > 0) { $arFilter = array("ACTIVE" => "Y", "EMAIL" => $email); $dbUsers = CUser::GetList($by = "id", $order = "asc", $arFilter); } else { $dbUsers = CUser::SearchUserByName($arUser, $email); } } if ($dbUsers) { $arResult = array(); while ($arUsers = $dbUsers->GetNext()) { $arResult[$arUsers["ID"]] = CSocNetUser::FormatNameEx($arUsers["NAME"], $arUsers["SECOND_NAME"], $arUsers["LAST_NAME"], $arUsers["LOGIN"], $bIntranet ? $arUsers["EMAIL"] : "", $arUsers["ID"]); } return $arResult; } return false; }
public static function SearchUsers($search, $nameTemplate = "", $bSelf = true, $bEmployeesOnly = false) { CUtil::JSPostUnescape(); $bIntranetEnable = IsModuleInstalled('intranet'); $bExtranetEnable = IsModuleInstalled('extranet'); $bBitrix24Enable = IsModuleInstalled('bitrix24'); $arUsers = array(); $arTmpUsers = array(); $arExtranetTestUsers = array(); $search = trim($search); if (strlen($search) <= 0) { return $arUsers; } $strUserIDs = ''; $arUserSearch = explode(' ', urldecode($search)); if (empty($arUserSearch)) { return $arUsers; } $dbRes = CUser::SearchUserByName($arUserSearch, '', true); while ($arRes = $dbRes->Fetch()) { if (!$bSelf && is_object($GLOBALS["USER"]) && $GLOBALS["USER"]->GetID() == $arRes['ID']) { continue; } $strUserIDs .= ($strUserIDs == '' ? '' : '|') . $arRes['ID']; } $arFilter = array("ACTIVE" => "Y", "NAME_SEARCH" => $search, "ID" => $strUserIDs); if ($bEmployeesOnly || $bBitrix24Enable && !$bExtranetEnable) { $arFilter["!UF_DEPARTMENT"] = false; } $arExtParams = array("FIELDS" => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION")); if ($bIntranetEnable) { $arExtParams['SELECT'] = array('UF_DEPARTMENT'); } $dbUsers = CUser::GetList($sort_by = array('last_name' => 'asc', 'IS_ONLINE' => 'desc'), $dummy = '', $arFilter, $arExtParams); $dbUsers->NavStart(20); while ($arUser = $dbUsers->NavNext(false)) { if (!$bSelf && is_object($GLOBALS["USER"]) && $GLOBALS["USER"]->GetID() == $arUser['ID']) { continue; } $arTmpUsers[$arUser["ID"]] = $arUser; if ($bIntranetEnable && $bExtranetEnable && (!is_array($arUser["UF_DEPARTMENT"]) || empty($arUser["UF_DEPARTMENT"]))) { $arExtranetTestUsers[$arUser["ID"]] = $arUser["ID"]; } } if (!empty($arExtranetTestUsers) && CModule::IncludeModule('extranet') && CExtranet::IsIntranetUser()) { global $USER; $arUserSocNetGroups = array(); $rsGroups = CSocNetUserToGroup::GetList(array("GROUP_NAME" => "ASC"), array("USER_ID" => $USER->GetID(), "<=ROLE" => SONET_ROLES_USER, "GROUP_SITE_ID" => SITE_ID, "GROUP_ACTIVE" => "Y", "!GROUP_CLOSED" => "Y"), false, array("nPageSize" => 500, "bDescPageNumbering" => false), array("ID", "GROUP_ID")); while ($arGroup = $rsGroups->Fetch()) { $arUserSocNetGroups[] = $arGroup["GROUP_ID"]; } if (count($arUserSocNetGroups) > 0) { $dbUsersInGroup = CSocNetUserToGroup::GetList(array(), array("GROUP_ID" => $arUserSocNetGroups, "<=ROLE" => SONET_ROLES_USER, "USER_ACTIVE" => "Y"), false, false, array("ID", "USER_ID", "GROUP_ID")); while ($ar = $dbUsersInGroup->GetNext(true, false)) { $arSelect[$ar["USER_ID"]] = $ar["USER_ID"]; } foreach ($arExtranetTestUsers as $userId) { if (!isset($arSelect[$userId])) { unset($arTmpUsers[$userId]); } } } else { foreach ($arExtranetTestUsers as $userId) { unset($arTmpUsers[$userId]); } } } foreach ($arTmpUsers as $arUser) { $sName = CUser::FormatName(empty($nameTemplate) ? CSite::GetNameFormat(false) : $nameTemplate, $arUser, true, false); $arFileTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 32, 'height' => 32), BX_RESIZE_IMAGE_EXACT, false); $arUsers['U' . $arUser["ID"]] = array('id' => 'U' . $arUser["ID"], 'entityId' => $arUser["ID"], 'name' => $sName, 'avatar' => empty($arFileTmp['src']) ? '' : $arFileTmp['src'], 'desc' => $arUser['WORK_POSITION'] ? $arUser['WORK_POSITION'] : ($arUser['PERSONAL_PROFESSION'] ? $arUser['PERSONAL_PROFESSION'] : ' ')); } return $arUsers; }
if (empty($arLocalPath[0])) { unset($arLocalPath[0]); } if (sizeof($arLocalPath) > 0) { $userName = $arLocalPath[0]; $userFilter = array(); if (strpos($userName, '(') !== false) { $userFilter = array('LOGIN_EQUAL' => trim($userName, '()')); $dbUser = CUser::GetList($by, $order, $userFilter); } else { //$userFilter = array('NAME' => $userName); $arName = explode(' ', $userName); foreach ($arName as &$namePart) { $namePart = trim(trim($namePart), ".,-"); } $dbUser = CUser::SearchUserByName($arName, '', false); } if ($dbUser !== false && ($arUser = $dbUser->Fetch())) { $userID = $arUser['ID']; $userLogin = $arUser['LOGIN']; } else { CHTTP::SetStatus('404 Not Found'); ShowError(GetMessage("WD_USER_NOT_FOUND")); return 0; } $arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_USER_ID"], "SOCNET_GROUP_ID" => false, "SECTION_ID" => 0, "CHECK_PERMISSIONS" => "N", "CREATED_BY" => $userID); $dbSection = CIBlockSection::GetList(array(), $arFilter, false, array('ID')); if ($arUserSection = $dbSection->Fetch()) { $sectionID = $arUserSection['ID']; } else { CHTTP::SetStatus('404 Not Found');