public static function SearchUsers($searchText) { $searchText = trim($searchText); if (strlen($searchText) <= 3) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_CL_SEARCH_EMPTY"), "ERROR_SEARCH_EMPTY"); return false; } $nameTemplate = COption::GetOptionString("im", "user_name_template", "#LAST_NAME# #NAME#", SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $arFilter = array( "ACTIVE" => "Y", "NAME_SEARCH" => $searchText, ); $arSettings = CIMSettings::GetDefaultSettings(CIMSettings::SETTINGS); if ($arSettings[CIMSettings::PRIVACY_SEARCH] == CIMSettings::PRIVACY_RESULT_ALL) $arFilter['?UF_IM_SEARCH'] = "~".CIMSettings::PRIVACY_RESULT_CONTACT; else $arFilter['UF_IM_SEARCH'] = CIMSettings::PRIVACY_RESULT_ALL; $arExtParams = Array('FIELDS' => Array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "PERSONAL_BIRTHDAY", "IS_ONLINE"), 'SELECT' => Array('UF_IM_SEARCH')); $dbUsers = CUser::GetList(($sort_by = Array('last_name'=>'asc')), ($dummy=''), $arFilter, $arExtParams); while ($arUser = $dbUsers->GetNext(true, false)) { $arFileTmp = CFile::ResizeImageGet( $arUser["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false ); $arUsers[$arUser["ID"]] = Array( 'id' => $arUser["ID"], 'select' => $arUser['UF_IM_SEARCH'], 'name' => CUser::FormatName($nameTemplateSite, $arUser, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arUser, true, false), 'avatar' => empty($arFileTmp['src'])? '/bitrix/js/im/images/blank.gif': $arFileTmp['src'], 'status' => $arUser['IS_ONLINE'] == 'Y'? 'online': 'offline', 'profile' => CComponentEngine::MakePathFromTemplate(COption::GetOptionString('im', 'path_to_user_profile', "", CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser()? "ex": false), array("user_id" => $arUser["ID"])) ); } return Array('users' => $arUsers); }
public static function SearchUsers($searchText) { $searchText = trim($searchText); if (strlen($searchText) < 3) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_CL_SEARCH_EMPTY"), "ERROR_SEARCH_EMPTY"); return false; } $nameTemplate = self::GetUserNameTemplate(SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $arFilter = array("ACTIVE" => "Y", "CONFIRM_CODE" => false, "NAME" => $searchText); $bIntranetEnable = IsModuleInstalled('intranet'); $bVoximplantEnable = IsModuleInstalled('voximplant'); if (!$bIntranetEnable) { $arSettings = CIMSettings::GetDefaultSettings(CIMSettings::SETTINGS); if ($arSettings[CIMSettings::PRIVACY_SEARCH] == CIMSettings::PRIVACY_RESULT_ALL) { $arFilter['!=UF_IM_SEARCH'] = CIMSettings::PRIVACY_RESULT_CONTACT; } else { $arFilter['UF_IM_SEARCH'] = CIMSettings::PRIVACY_RESULT_ALL; } } $arExtParams = array('FIELDS' => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "PERSONAL_BIRTHDAY", "WORK_POSITION", "PERSONAL_GENDER", "EXTERNAL_AUTH_ID"), 'SELECT' => array('UF_IM_SEARCH')); if ($bIntranetEnable) { $arExtParams['SELECT'][] = 'UF_DEPARTMENT'; } if ($bVoximplantEnable) { $arExtParams['SELECT'][] = 'UF_VI_PHONE'; } $arUsers = array(); $dbUsers = CUser::GetList($sort_by = array('last_name' => 'asc'), $dummy = '', $arFilter, $arExtParams); while ($arUser = $dbUsers->GetNext(true, false)) { $arFileTmp = CFile::ResizeImageGet($arUser["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false, false, true); $arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'name' => CUser::FormatName($nameTemplateSite, $arUser, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arUser, true, false), 'workPosition' => $arUser['WORK_POSITION'], 'color' => self::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F'), 'avatar' => empty($arFileTmp['src']) ? '/bitrix/js/im/images/blank.gif' : $arFileTmp['src'], 'status' => 'offline', 'birthday' => $bIntranetEnable ? CIntranetUtils::IsToday($arUser['PERSONAL_BIRTHDAY']) : false, 'gender' => $arUser['PERSONAL_GENDER'] == 'F' ? 'F' : 'M', 'phoneDevice' => $bVoximplantEnable && $arUser['UF_VI_PHONE'] == 'Y', 'extranet' => self::IsExtranet($arUser), 'network' => $arUser['EXTERNAL_AUTH_ID'] == self::NETWORK_AUTH_ID, 'profile' => CIMContactList::GetUserPath($arUser["ID"]), 'searchMark' => $searchText); } if (!empty($arUsers)) { $arOnline = CIMStatus::GetList(array('ID' => array_keys($arUsers), 'GET_OFFLINE' => 'Y')); foreach ($arUsers as $userId => $value) { $arUsers[$userId]['status'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['status'] : 'offline'; $arUsers[$userId]['idle'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['idle'] : 0; $arUsers[$userId]['mobileLastDate'] = isset($arOnline['users'][$userId]) ? $arOnline['users'][$userId]['mobileLastDate'] : 0; if ($arOnline['users'][$userId]['color']) { $arUsers[$userId]['color'] = $arOnline['users'][$userId]['color']; } } } if (CModule::IncludeModule('socialservices')) { $network = new \Bitrix\Socialservices\Network(); if ($network->isEnabled()) { $result = $network->searchUser($searchText); if ($result) { $arUserIds = array_keys($arUsers); $arIntersectUserIds = array(); foreach ($result as $arUser) { $id = 'network' . $arUser["NETWORK_ID"]; $arUsers[$id] = array('id' => $id, 'name' => CUser::FormatName($nameTemplateSite, $arUser, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arUser, true, false), 'workPosition' => $arUser['CLIENT_DOMAIN'], 'color' => IM\Color::getColor('GRAY'), 'avatar' => empty($arUser['PERSONAL_PHOTO']) ? '/bitrix/js/im/images/blank.gif' : $arUser['PERSONAL_PHOTO'], 'status' => 'guest', 'birthday' => false, 'gender' => $arUser['PERSONAL_GENDER'] == 'F' ? 'F' : 'M', 'phoneDevice' => false, 'extranet' => true, 'network' => true, 'profile' => CIMContactList::GetUserPath($arUser["ID"]), 'select' => 'Y', 'networkId' => $arUser['NETWORK_ID'], 'searchMark' => $searchText); $arIntersectUserIds[$arUser['XML_ID']] = $id; } if (!empty($arUserIds)) { $result = \Bitrix\Main\UserTable::getList(array('select' => array('XML_ID'), 'filter' => array('=XML_ID' => array_keys($arIntersectUserIds), '=EXTERNAL_AUTH_ID' => \Bitrix\Socialservices\Network::EXTERNAL_AUTH_ID))); while ($user = $result->fetch()) { unset($arUsers[$arIntersectUserIds[$user['XML_ID']]]); } } } } } return array('users' => $arUsers); }
<form method="post" action="<?php echo $APPLICATION->GetCurPage(); ?> ?mid=<?php echo htmlspecialcharsbx($mid); ?> &lang=<?php echo LANG; ?> "> <?php echo bitrix_sessid_post(); $tabControl->Begin(); $tabControl->BeginNextTab(); $selfVideoServer = COption::GetOptionString("im", "turn_server_self") == 'Y' ? true : false; $arSettingsDefault = CIMSettings::GetDefaultSettings(CIMSettings::SETTINGS); if ($arSettingsDefault['panelPositionVertical'] == 'top' && $arSettingsDefault['panelPositionHorizontal'] == 'left') { $arSettingsDefault['location'] = 'TL'; } else { if ($arSettingsDefault['panelPositionVertical'] == 'top' && $arSettingsDefault['panelPositionHorizontal'] == 'right') { $arSettingsDefault['location'] = 'TR'; } else { if ($arSettingsDefault['panelPositionVertical'] == 'top' && $arSettingsDefault['panelPositionHorizontal'] == 'center') { $arSettingsDefault['location'] = 'TC'; } else { if ($arSettingsDefault['panelPositionVertical'] == 'bottom' && $arSettingsDefault['panelPositionHorizontal'] == 'left') { $arSettingsDefault['location'] = 'BL'; } else { if ($arSettingsDefault['panelPositionVertical'] == 'bottom' && $arSettingsDefault['panelPositionHorizontal'] == 'right') { $arSettingsDefault['location'] = 'BR'; } else {
function SearchUsers($searchText) { $searchText = trim($searchText); if (strlen($searchText) <= 3) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_CL_SEARCH_EMPTY"), "ERROR_SEARCH_EMPTY"); return false; } $nameTemplate = self::GetUserNameTemplate(SITE_ID); $nameTemplateSite = CSite::GetNameFormat(false); $arFilter = array( "ACTIVE" => "Y", "NAME_SEARCH" => $searchText, ); $arSettings = CIMSettings::GetDefaultSettings(CIMSettings::SETTINGS); if ($arSettings[CIMSettings::PRIVACY_SEARCH] == CIMSettings::PRIVACY_RESULT_ALL) $arFilter['?UF_IM_SEARCH'] = "~".CIMSettings::PRIVACY_RESULT_CONTACT; else $arFilter['UF_IM_SEARCH'] = CIMSettings::PRIVACY_RESULT_ALL; $bIntranetEnable = IsModuleInstalled('intranet'); $arExtParams = Array('FIELDS' => Array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "PERSONAL_BIRTHDAY", "WORK_POSITION", "PERSONAL_GENDER"), 'SELECT' => Array('UF_IM_SEARCH')); if($bIntranetEnable) $arExtParams['SELECT'] = array('UF_DEPARTMENT'); $arUsers = Array(); $dbUsers = CUser::GetList(($sort_by = Array('last_name'=>'asc')), ($dummy=''), $arFilter, $arExtParams); while ($arUser = $dbUsers->GetNext(true, false)) { $arFileTmp = CFile::ResizeImageGet( $arUser["PERSONAL_PHOTO"], array('width' => 58, 'height' => 58), BX_RESIZE_IMAGE_EXACT, false, false, true ); $arUsers[$arUser["ID"]] = Array( 'id' => $arUser["ID"], 'name' => CUser::FormatName($nameTemplateSite, $arUser, true, false), 'nameList' => CUser::FormatName($nameTemplate, $arUser, true, false), 'workPosition' => $arUser['WORK_POSITION'], 'avatar' => empty($arFileTmp['src'])? '/bitrix/js/im/images/blank.gif': $arFileTmp['src'], 'status' => 'offline', 'birthday' => $bIntranetEnable? CIntranetUtils::IsToday($arUser['PERSONAL_BIRTHDAY']): false, 'gender' => $arUser['PERSONAL_GENDER'] == 'F'? 'F': 'M', 'extranet' => self::IsExtranet($arUser), 'profile' => CIMContactList::GetUserPath($arUser["ID"]), 'select' => $arUser['UF_IM_SEARCH'], ); } if (!empty($arUsers)) { $arOnline = CIMStatus::GetList(Array('ID' => array_keys($arUsers))); foreach ($arUsers as $userId => $value) { $arUsers[$userId]['status'] = isset($arOnline['users'][$userId])? $arOnline['users'][$userId]['status']: 'offline'; $arUsers[$userId]['idle'] = isset($arOnline['users'][$userId])? $arOnline['users'][$userId]['idle']: 0; } } return Array('users' => $arUsers); }