Exemplo n.º 1
0
	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);
	}
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
<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);
	}