%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.user_search/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.user_search/component.php |
<?
/** @var CBitrixComponent $this */
/** @var array $arParams */
/** @var array $arResult */
/** @var string $componentPath */
/** @var string $componentName */
/** @var string $componentTemplate */
/** @global CDatabase $DB */
/** @global CUser $USER */
/** @global CMain $APPLICATION */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (!CModule::IncludeModule("socialnetwork"))
{
ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
return;
}
$arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] == "N" ? "N" : "Y");
if (strLen($arParams["PAGE_VAR"]) <= 0)
$arParams["PAGE_VAR"] = "page";
if (strLen($arParams["USER_VAR"]) <= 0)
$arParams["USER_VAR"] = "user_id";
$arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]);
if (strlen($arParams["PATH_TO_USER"]) <= 0)
$arParams["PATH_TO_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#");
$arParams["PATH_TO_SEARCH"] = trim($arParams["PATH_TO_SEARCH"]);
if (strlen($arParams["PATH_TO_SEARCH"]) <= 0)
$arParams["PATH_TO_SEARCH"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=search");
$arParams["PATH_TO_SEARCH_INNER"] = trim($arParams["PATH_TO_SEARCH_INNER"]);
if (strlen($arParams["PATH_TO_SEARCH_INNER"]) <= 0)
$arParams["PATH_TO_SEARCH_INNER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=search");
$arParams["PATH_TO_USER_FRIENDS_ADD"] = trim($arParams["PATH_TO_USER_FRIENDS_ADD"]);
if(strlen($arParams["PATH_TO_USER_FRIENDS_ADD"])<=0)
$arParams["PATH_TO_USER_FRIENDS_ADD"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user_friends_add&".$arParams["USER_VAR"]."=#user_id#");
$arParams["PATH_TO_MESSAGE_FORM"] = trim($arParams["PATH_TO_MESSAGE_FORM"]);
if (strlen($arParams["PATH_TO_MESSAGE_FORM"]) <= 0)
$arParams["PATH_TO_MESSAGE_FORM"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=message_form&".$arParams["USER_VAR"]."=#user_id#");
$arParams["PATH_TO_MESSAGES_CHAT"] = trim($arParams["PATH_TO_MESSAGES_CHAT"]);
if (strlen($arParams["PATH_TO_MESSAGES_CHAT"]) <= 0)
$arParams["PATH_TO_MESSAGES_CHAT"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=messages_chat&".$arParams["USER_VAR"]."=#user_id#");
$arParams["SHOW_USERS_WITHOUT_FILTER_SET"] = ($arParams["SHOW_USERS_WITHOUT_FILTER_SET"] == "Y" ? "Y" : "N");
if(!isset($arParams["CACHE_TIME"]))
$arParams["CACHE_TIME"] = 3600;
if ($arParams['CACHE_TYPE'] == 'A')
$arParams['CACHE_TYPE'] = COption::GetOptionString("main", "component_cache_on", "Y");
$arParams["ITEMS_COUNT"] = IntVal($arParams["ITEMS_COUNT"]);
if ($arParams["ITEMS_COUNT"] <= 0)
$arParams["ITEMS_COUNT"] = 20;
$arParams['SHOW_YEAR'] = $arParams['SHOW_YEAR'] == 'Y' ? 'Y' : ($arParams['SHOW_YEAR'] == 'M' ? 'M' : 'N');
$arParams["DATE_TIME_FORMAT"] = Trim($arParams["DATE_TIME_FORMAT"]);
$arParams["DATE_TIME_FORMAT"] = ((StrLen($arParams["DATE_TIME_FORMAT"]) <= 0) ? $DB->DateFormatToPHP(CSite::GetDateFormat("FULL")) : $arParams["DATE_TIME_FORMAT"]);
if (strlen($arParams["NAME_TEMPLATE"]) <= 0)
$arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();
$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;
if (!isset($arParams["USER_FIELDS_SEARCH_SIMPLE"]) || !is_array($arParams["USER_FIELDS_SEARCH_SIMPLE"]))
$arParams["USER_FIELDS_SEARCH_SIMPLE"] = array();
if (!isset($arParams["USER_PROPERTIES_SEARCH_SIMPLE"]) || !is_array($arParams["USER_PROPERTIES_SEARCH_SIMPLE"]))
$arParams["USER_PROPERTIES_SEARCH_SIMPLE"] = array();
if (!isset($arParams["USER_FIELDS_SEARCH_ADV"]) || !is_array($arParams["USER_FIELDS_SEARCH_ADV"]))
$arParams["USER_FIELDS_SEARCH_ADV"] = array();
if (!isset($arParams["USER_PROPERTIES_SEARCH_ADV"]) || !is_array($arParams["USER_PROPERTIES_SEARCH_ADV"]))
$arParams["USER_PROPERTIES_SEARCH_ADV"] = array();
if (!isset($arParams["USER_FIELDS_LIST"]) || !is_array($arParams["USER_FIELDS_LIST"]))
$arParams["USER_FIELDS_LIST"] = array();
if (!isset($arParams["USER_PROPERTY_LIST"]) || !is_array($arParams["USER_PROPERTY_LIST"]))
$arParams["USER_PROPERTY_LIST"] = array();
if (empty($arParams["USER_PROPERTY_LIST"]) && isset($arParams["USER_PROPERTIES_LIST"]) && !empty($arParams["USER_PROPERTIES_LIST"]))
$arParams["USER_PROPERTY_LIST"] = $arParams["USER_PROPERTIES_LIST"];
if (!isset($arParams["USER_FIELDS_SEARCHABLE"]) || !is_array($arParams["USER_FIELDS_SEARCHABLE"]))
$arParams["USER_FIELDS_SEARCHABLE"] = array();
if (!isset($arParams["USER_PROPERTY_SEARCHABLE"]) || !is_array($arParams["USER_PROPERTY_SEARCHABLE"]))
$arParams["USER_PROPERTY_SEARCHABLE"] = array();
foreach ($arParams["USER_FIELDS_SEARCH_SIMPLE"] as $value)
{
if (!in_array($value, $arParams["USER_FIELDS_SEARCHABLE"]))
$arParams["USER_FIELDS_SEARCHABLE"][] = $value;
}
foreach ($arParams["USER_FIELDS_SEARCH_ADV"] as $value)
{
if (!in_array($value, $arParams["USER_FIELDS_SEARCHABLE"]))
$arParams["USER_FIELDS_SEARCHABLE"][] = $value;
}
foreach ($arParams["USER_PROPERTIES_SEARCH_SIMPLE"] as $value)
{
if (!in_array($value, $arParams["USER_PROPERTY_SEARCHABLE"]))
$arParams["USER_PROPERTY_SEARCHABLE"][] = $value;
}
foreach ($arParams["USER_PROPERTIES_SEARCH_ADV"] as $value)
{
if (!in_array($value, $arParams["USER_PROPERTY_SEARCHABLE"]))
$arParams["USER_PROPERTY_SEARCHABLE"][] = $value;
}
if ($arParams["SET_TITLE"] == "Y")
$APPLICATION->SetTitle(GetMessage("SONET_C241_PAGE_TITLE"));
if ($arParams["SET_NAV_CHAIN"] != "N")
$APPLICATION->AddChainItem(GetMessage("SONET_C241_PAGE_TITLE"));
$arResult["Urls"]["UserSearch"] = (\Bitrix\Main\ModuleManager::isModuleInstalled('intranet') ? $APPLICATION->GetCurPage() : CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_SEARCH_INNER"], array()));
$arResult["Params"]["UserSearch"] = array();
if (StrPos($arResult["Urls"]["UserSearch"], "?") !== false)
{
$str = SubStr($arResult["Urls"]["UserSearch"], StrPos($arResult["Urls"]["UserSearch"], "?") + 1);
$arStr = Explode("&", $str);
foreach ($arStr as $str)
{
$str = Trim($str);
$p = StrPos($str, "=");
if (StrLen($str) > 0 && $p !== false)
$arResult["Params"]["UserSearch"][htmlspecialcharsbx(SubStr($str, 0, $p))] = htmlspecialcharsbx(SubStr($str, $p + 1));
}
}
$arResult["Urls"]["ViewList"] = htmlspecialcharsbx($APPLICATION->GetCurPageParam("current_view=list", array("current_view")));
$arResult["Urls"]["ViewIcon"] = htmlspecialcharsbx($APPLICATION->GetCurPageParam("current_view=icon", array("current_view")));
$arResult["Urls"]["ViewBigIcon"] = htmlspecialcharsbx($APPLICATION->GetCurPageParam("current_view=bigicon", array("current_view")));
$currentFilter = ($_REQUEST['current_filter'] == 'adv' ? 'adv' : 'simple');
$arResult['CURRENT_FILTER'] = $currentFilter;
$currentView = (array_key_exists("current_view", $_REQUEST) ? $_REQUEST["current_view"] : $_SESSION["SONET_SEARCH_current_view"]);
if (!in_array($currentView, array("icon", "bigicon", "list")))
$currentView = "list";
$_SESSION["SONET_SEARCH_current_view"] = $currentView;
$arResult['CURRENT_VIEW'] = $currentView;
$arResult["SEARCH_RESULT"] = Array();
$arNavParams = array("nPageSize" => $arParams["ITEMS_COUNT"], "bShowAll" => false, "bDescPageNumbering" => false);
$arNavigation = CDBResult::GetNavParams($arNavParams);
$by = "LAST_NAME";
$order = "asc";
$arFilter = array("ACTIVE" => "Y");
$arResult["ShowResults"] = ($arParams["SHOW_USERS_WITHOUT_FILTER_SET"] == "Y");
//**************** INIT FILTER ******************************************************************//
$arUserProps = array(
"ID" => GetMessage("SONET_C241_ID"),
"LOGIN" => GetMessage("SONET_C241_LOGIN"),
"NAME" => GetMessage("SONET_C241_NAME"),
"SECOND_NAME" => GetMessage("SONET_C241_SECOND_NAME"),
"LAST_NAME" => GetMessage("SONET_C241_LAST_NAME"),
"EMAIL" => GetMessage("SONET_C241_EMAIL"),
"LAST_LOGIN" => GetMessage("SONET_C241_LAST_LOGIN"),
"DATE_REGISTER" => GetMessage("SONET_C241_DATE_REGISTER"),
"LID" => GetMessage("SONET_C241_LID"),
"PERSONAL_BIRTHDAY" => GetMessage("SONET_C241_PERSONAL_BIRTHDAY"),
"PERSONAL_BIRTHDAY_YEAR" => GetMessage("SONET_C241_PERSONAL_BIRTHDAY_YEAR"),
"PERSONAL_BIRTHDAY_DAY" => GetMessage("SONET_C241_PERSONAL_BIRTHDAY_DAY"),
"PERSONAL_PROFESSION" => GetMessage("SONET_C241_PERSONAL_PROFESSION"),
"PERSONAL_WWW" => GetMessage("SONET_C241_PERSONAL_WWW"),
"PERSONAL_ICQ" => GetMessage("SONET_C241_PERSONAL_ICQ"),
"PERSONAL_GENDER" => GetMessage("SONET_C241_PERSONAL_GENDER"),
"PERSONAL_PHOTO" => GetMessage("SONET_C241_PERSONAL_PHOTO"),
"PERSONAL_NOTES" => GetMessage("SONET_C241_PERSONAL_NOTES"),
"PERSONAL_PHONE" => GetMessage("SONET_C241_PERSONAL_PHONE"),
"PERSONAL_FAX" => GetMessage("SONET_C241_PERSONAL_FAX"),
"PERSONAL_MOBILE" => GetMessage("SONET_C241_PERSONAL_MOBILE"),
"PERSONAL_PAGER" => GetMessage("SONET_C241_PERSONAL_PAGER"),
"PERSONAL_COUNTRY" => GetMessage("SONET_C241_PERSONAL_COUNTRY"),
"PERSONAL_STATE" => GetMessage("SONET_C241_PERSONAL_STATE"),
"PERSONAL_CITY" => GetMessage("SONET_C241_PERSONAL_CITY"),
"PERSONAL_ZIP" => GetMessage("SONET_C241_PERSONAL_ZIP"),
"PERSONAL_STREET" => GetMessage("SONET_C241_PERSONAL_STREET"),
"PERSONAL_MAILBOX" => GetMessage("SONET_C241_PERSONAL_MAILBOX"),
"WORK_COMPANY" => GetMessage("SONET_C241_WORK_COMPANY"),
"WORK_DEPARTMENT" => GetMessage("SONET_C241_WORK_DEPARTMENT"),
"WORK_POSITION" => GetMessage("SONET_C241_WORK_POSITION"),
"WORK_WWW" => GetMessage("SONET_C241_WORK_WWW"),
"WORK_PROFILE" => GetMessage("SONET_C241_WORK_PROFILE"),
"WORK_LOGO" => GetMessage("SONET_C241_WORK_LOGO"),
"WORK_NOTES" => GetMessage("SONET_C241_WORK_NOTES"),
"WORK_PHONE" => GetMessage("SONET_C241_WORK_PHONE"),
"WORK_FAX" => GetMessage("SONET_C241_WORK_FAX"),
"WORK_PAGER" => GetMessage("SONET_C241_WORK_PAGER"),
"WORK_COUNTRY" => GetMessage("SONET_C241_WORK_COUNTRY"),
"WORK_STATE" => GetMessage("SONET_C241_WORK_STATE"),
"WORK_CITY" => GetMessage("SONET_C241_WORK_CITY"),
"WORK_ZIP" => GetMessage("SONET_C241_WORK_ZIP"),
"WORK_STREET" => GetMessage("SONET_C241_WORK_STREET"),
"WORK_MAILBOX" => GetMessage("SONET_C241_WORK_MAILBOX"),
);
$arResTmp = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("USER", 0, LANGUAGE_ID);
$arUserCustomProps = array();
if (!empty($arResTmp))
{
foreach ($arResTmp as $key => $value)
{
if (in_array($value["FIELD_NAME"], $arParams["USER_PROPERTY_SEARCHABLE"]))
$arUserCustomProps[StrToUpper($value["FIELD_NAME"])] = $value;
}
}
foreach ($_REQUEST as $key => $value)
{
if (StrToLower(SubStr($key, 0, 4)) != "flt_")
continue;
if (!is_array($value) && StrLen($value) <= 0 || is_array($value) && count($value) <= 0)
continue;
$keyTmp = StrToUpper(SubStr($key, 4));
if (array_key_exists($keyTmp, $arUserProps))
{
if (in_array($keyTmp, $arParams["USER_FIELDS_SEARCHABLE"]))
{
if (!in_array($keyTmp, $arParams["USER_FIELDS_SEARCH_SIMPLE"]))
$arParams["USER_FIELDS_SEARCH_SIMPLE"][] = $keyTmp;
if (!in_array($keyTmp, $arParams["USER_FIELDS_SEARCH_ADV"]))
$arParams["USER_FIELDS_SEARCH_ADV"][] = $keyTmp;
}
}
elseif (array_key_exists($keyTmp, $arUserCustomProps))
{
if (in_array($keyTmp, $arParams["USER_PROPERTY_SEARCHABLE"]))
{
if (!in_array($keyTmp, $arParams["USER_PROPERTIES_SEARCH_SIMPLE"]))
$arParams["USER_PROPERTIES_SEARCH_SIMPLE"][] = $keyTmp;
if (!in_array($keyTmp, $arParams["USER_PROPERTIES_SEARCH_ADV"]))
$arParams["USER_PROPERTIES_SEARCH_ADV"][] = $keyTmp;
}
}
}
$arResult["UserFieldsSearchSimple"] = array();
$arResult["UserFieldsSearchAdv"] = array();
if (count($arParams["USER_FIELDS_SEARCH_SIMPLE"]) > 0 || count($arParams["USER_FIELDS_SEARCH_ADV"]) > 0)
{
foreach ($arUserProps as $userFieldName => $userFieldTitle)
{
if (in_array($userFieldName, $arParams["USER_FIELDS_SEARCHABLE"])
&& (in_array($userFieldName, $arParams["USER_FIELDS_SEARCH_SIMPLE"])
|| in_array($userFieldName, $arParams["USER_FIELDS_SEARCH_ADV"])))
{
$requestName = StrToLower("FLT_".$userFieldName);
$arVal = array(
"VALUE" => htmlspecialcharsex(array_key_exists($requestName, $_REQUEST) ? $_REQUEST[$requestName] : ""),
"NAME" => $requestName,
"TITLE" => $userFieldTitle,
);
switch ($userFieldName)
{
case 'LAST_LOGIN':
case 'DATE_REGISTER':
case 'PERSONAL_BIRTHDAY':
$arVal["TYPE"] = "calendar";
break;
case 'PERSONAL_GENDER':
$arVal["TYPE"] = "select";
$arVal["VALUES"] = array("M" => GetMessage("SONET_C241_MALE"), "F" => GetMessage("SONET_C241_FEMALE"));
break;
case 'PERSONAL_COUNTRY':
case 'WORK_COUNTRY':
$arVal["TYPE"] = "select";
$arVal["VALUES"] = array();
$arCountriesTmp = GetCountryArray(LANGUAGE_ID);
$tmpCnt = count($arCountriesTmp["reference_id"]);
for ($i = 0; $i < $tmpCnt; $i++)
$arVal["VALUES"][$arCountriesTmp["reference_id"][$i]] = $arCountriesTmp["reference"][$i];
break;
default:
$arVal["TYPE"] = "string";
break;
}
if (in_array($userFieldName, $arParams["USER_FIELDS_SEARCH_SIMPLE"]))
$arResult["UserFieldsSearchSimple"][$userFieldName] = $arVal;
if (in_array($userFieldName, $arParams["USER_FIELDS_SEARCH_ADV"]))
$arResult["UserFieldsSearchAdv"][$userFieldName] = $arVal;
}
}
}
$arResult["UserPropertiesSearchSimple"] = array();
$arResult["UserPropertiesSearchAdv"] = array();
if (count($arParams["USER_PROPERTIES_SEARCH_SIMPLE"]) > 0 || count($arParams["USER_PROPERTIES_SEARCH_ADV"]) > 0)
{
foreach ($arUserCustomProps as $fieldName => $arUserField)
{
if (in_array($fieldName, $arParams["USER_PROPERTY_SEARCHABLE"]))
{
$arUserField["EDIT_FORM_LABEL"] = StrLen($arUserField["EDIT_FORM_LABEL"]) > 0 ? $arUserField["EDIT_FORM_LABEL"] : $arUserField["FIELD_NAME"];
$arUserField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arUserField["EDIT_FORM_LABEL"]);
$arUserField["~EDIT_FORM_LABEL"] = $arUserField["EDIT_FORM_LABEL"];
$arUserField["FIELD_NAME"] = StrToLower("FLT_".$fieldName);
$arUserField["~FIELD_NAME"] = StrToLower("FLT_".$fieldName);
if (in_array($fieldName, $arParams["USER_PROPERTIES_SEARCH_SIMPLE"]))
$arResult["UserPropertiesSearchSimple"][$fieldName] = $arUserField;
if (in_array($fieldName, $arParams["USER_PROPERTIES_SEARCH_ADV"]))
$arResult["UserPropertiesSearchAdv"][$fieldName] = $arUserField;
}
}
}
//**************** MAKE FILTER ******************************************************************//
$bFilter = false;
foreach ($_REQUEST as $key => $value)
{
if (StrToLower(SubStr($key, 0, 4)) != "flt_")
continue;
if (Is_Array($value))
{
if (Count($value) <= 0)
continue;
$value1 = $value;
$value = array();
foreach ($value1 as $val)
{
if (Is_Array($val))
{
foreach($val as $tmpkey => $tmpval)
{
$tmpval = preg_replace('#[\(\)]#', '', $tmpval);
$val[$tmpkey] = $tmpval;
}
}
else
{
$val = preg_replace('#[\(\)]#', '', $val);
}
if (
(Is_Array($val) && Count($val) > 0)
|| (!Is_Array($val) && StrLen($val) > 0)
)
$value[] = $val;
}
if (Count($value) <= 0)
continue;
}
else
{
$value = preg_replace('#[\(\)]#', '', $value);
if (StrLen($value) <= 0)
continue;
}
$keyTmp = StrToUpper(SubStr($key, 4));
if ($keyTmp == "FIO")
{
$arFilter["NAME"] = $value;
$arResult["ShowResults"] = true;
$bFilter = true;
}
elseif (array_key_exists($keyTmp, $arUserProps))
{
if (in_array($keyTmp, $arParams["USER_FIELDS_SEARCHABLE"]))
{
if ($keyTmp == "PERSONAL_BIRTHDAY")
{
$arFilter["PERSONAL_BIRTHDAY_1"] = $value;
$arFilter["PERSONAL_BIRTHDAY_2"] = $value;
}
elseif ($keyTmp == "PERSONAL_BIRTHDAY_YEAR")
{
$arFilter["PERSONAL_BIRTHDAY_1"] = ConvertTimeStamp(mktime(0, 0, 0, 0, 0, $value), "SHORT", SITE_ID);
$arFilter["PERSONAL_BIRTHDAY_2"] = ConvertTimeStamp(mktime(0, 0, 0, 12, 31, $value), "SHORT", SITE_ID);
}
elseif ($keyTmp == "PERSONAL_BIRTHDAY_DAY")
{
$arFilter["PERSONAL_BIRTHDAY_DATE"] = $value;
}
else
{
$arFilter[$keyTmp] = $value;
}
$arResult["ShowResults"] = true;
$bFilter = true;
}
}
elseif (array_key_exists($keyTmp, $arUserCustomProps))
{
if (in_array($keyTmp, $arParams["USER_PROPERTY_SEARCHABLE"]))
{
if ($arUserCustomProps[$keyTmp]["SHOW_FILTER"] == "I")
$arFilter["=".$keyTmp] = $value;
elseif ($arUserCustomProps[$keyTmp]["SHOW_FILTER"] == "S")
$arFilter["%".$keyTmp] = $value;
else
$arFilter[$keyTmp] = $value;
$arResult["ShowResults"] = true;
$bFilter = true;
}
}
}
//*****************************************************************************************************//
// activation rating
CRatingsComponentsMain::GetShowRating($arParams);
if ($arResult["ShowResults"])
{
$arMonths_r = array();
for ($i = 1; $i <= 12; $i++)
$arMonths_r[$i] = ToLower(GetMessage('MONTH_'.$i.'_S'));
$iSize = 150;
if ($arResult['CURRENT_VIEW'] == "icon")
$iSize = 100;
if (!$bFilter)
{
$cache_id = $this->GetName().'|'.$arParams['ITEMS_COUNT'].'|'.$by.'|'.$order.'|'.$iSize.'|'.$arParams["PATH_TO_USER"].'|'.$arParams["PATH_TO_USER_FRIENDS_ADD"].'|'.$arParams["PATH_TO_MESSAGE_FORM"].'|'.$arParams["PATH_TO_MESSAGES_CHAT"].'|'.$arParams['NAME_TEMPLATE'].'|'.$bUseLogin.'|'.$arParams['SHOW_YEAR'].'|'.implode(';', $arParams['USER_FIELDS_LIST']).'|'.implode(';', $arParams['USER_PROPERTY_LIST']).CDBResult::NavStringForCache($arParams['ITEMS_COUNT'], false);
$obCache = new CPHPCache();
}
if ($arParams["SHOW_RATING"] == 'Y' && array_key_exists("RATING_ID", $arParams) && intval($arParams["RATING_ID"]) > 0)
{
$db_rating = CRatings::GetByID($arParams["RATING_ID"]);
if ($arRating = $db_rating->GetNext())
$arResult["RATING"]["NAME"] = $arRating["NAME"];
}
if (!$bFilter && $obCache->InitCache($arParams['CACHE_TIME'], $cache_id))
{
$vars = $obCache->GetVars();
$arResult['SEARCH_RESULT'] = $vars['SEARCH_RESULT'];
$arResult['NAV_STRING'] = $vars['NAV_STRING'];
// recaclulating some user data
foreach($arResult['SEARCH_RESULT'] as $i => $arUser)
{
$arUser["SHOW_PROFILE_LINK"] = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
$arUser["CAN_MESSAGE"] = (
$GLOBALS["USER"]->IsAuthorized()
&& ($GLOBALS["USER"]->GetID() != $arUser["ID"])
&& ($arUser["ACTIVE"] != "N")
&& (
IsModuleInstalled("im")
|| CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin())
)
);
$arUser["IS_ONLINE"] = ($arUser["IS_ONLINE"] == "Y");
if ($GLOBALS["USER"]->IsAuthorized() && ($GLOBALS["USER"]->GetID() != $arUser["ID"]) && CSocNetUser::IsFriendsAllowed())
{
$rel = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arUser["ID"]);
$arUser["CAN_ADD2FRIENDS"] = (!$rel && $arUser["ID"] != $GLOBALS["USER"]->GetID()) ? true : false;
}
else
$arUser["CAN_ADD2FRIENDS"] = false;
$arResult['SEARCH_RESULT'][$i] = $arUser;
}
}
else
{
$arListParam = array(
"NAV_PARAMS" => $arNavParams,
);
if ($arParams["ALLOW_RATING_SORT"] == 'Y')
$by="RATING_".$arParams["RATING_ID"];
if ($arParams["SHOW_RATING"] == 'Y')
$arListParam["SELECT"][]="RATING_".$arParams["RATING_ID"];
$dbUsers = CUser::GetList(
$by,
$order="desc",
$arFilter,
$arListParam
);
while ($arUser = $dbUsers->GetNext())
{
$arUser["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"]));
$arUser["SHOW_PROFILE_LINK"] = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
$arUser["CAN_MESSAGE"] = ($GLOBALS["USER"]->IsAuthorized() && ($GLOBALS["USER"]->GetID() != $arUser["ID"]) && (IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin())));
if (intval($arUser["PERSONAL_PHOTO"]) <= 0)
{
switch ($arUser["PERSONAL_GENDER"])
{
case "M":
$suffix = "male";
break;
case "F":
$suffix = "female";
break;
default:
$suffix = "unknown";
}
$arUser["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
}
$arImage = CSocNetTools::InitImage($arUser["PERSONAL_PHOTO"], $iSize, "/bitrix/images/socialnetwork/nopic_user_".$iSize.".gif", $iSize, $arUser["URL"], $arUser["SHOW_PROFILE_LINK"]);
$arUser["IMAGE_FILE"] = $arImage["FILE"];
$arUser["IMAGE_IMG"] = $arImage["IMG"];
$arUser["NAME_FORMATED"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin);
$arUser["IS_ONLINE"] = ($arUser["IS_ONLINE"] == "Y");
if ($GLOBALS["USER"]->IsAuthorized() && ($GLOBALS["USER"]->GetID() != $arUser["ID"]) && CSocNetUser::IsFriendsAllowed())
{
$rel = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arUser["ID"]);
$arUser["CAN_ADD2FRIENDS"] = (!$rel && $arUser["ID"] != $GLOBALS["USER"]->GetID()) ? true : false;
}
else
{
$arUser["CAN_ADD2FRIENDS"] = false;
}
$arUser["ADD_TO_FRIENDS_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS_ADD"], array("user_id" => $arUser["ID"]));
$arUser["MESSAGE_FORM_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGE_FORM"], array("user_id" => $arUser["ID"]));
$arUser["MESSAGE_LINK"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_CHAT"], array("user_id" => $arUser["ID"]));
$arUser["UserFieldsMain"] = array("SHOW" => "N", "DATA" => array());
if (count($arParams["USER_FIELDS_LIST"]) > 0)
{
foreach ($arUser as $userFieldName => $userFieldValue)
{
if (in_array($userFieldName, $arParams["USER_FIELDS_LIST"]))
{
$val = $userFieldValue;
switch ($userFieldName)
{
case 'EMAIL':
if (StrLen($val) > 0)
$val = '<a href="mailto:'.$val.'">'.$val.'</a>';
break;
case 'PERSONAL_WWW':
case 'WORK_WWW':
if (StrLen($val) > 0)
{
$valLink = $val;
if (StrToLower(SubStr($val, 0, StrLen("http://"))) != "http://")
$valLink = "http://".$val;
$val = '<a href="'.$valLink.'" target="_blank">'.$val.'</a>';
}
break;
case 'PERSONAL_COUNTRY':
case 'WORK_COUNTRY':
if (StrLen($val) > 0)
$val = GetCountryByID($val);
break;
case 'PERSONAL_ICQ':
if (StrLen($val) > 0)
$val = $val.' <img src="http://web.icq.com/whitepages/online?icq='.$val.'&img=5" alt="" />';
break;
case 'PERSONAL_PHONE':
case 'PERSONAL_FAX':
case 'PERSONAL_MOBILE':
case 'WORK_PHONE':
case 'WORK_FAX':
if (StrLen($val) > 0)
{
$valEncoded = preg_replace('/[^\d\+]+/', '', $val);
$val = '<a href="callto:'.$valEncoded.'">'.$val.'</a>';
}
break;
case 'PERSONAL_GENDER':
$val = (($val == 'F') ? GetMessage("SONET_C241_FEMALE") : (($val == 'M') ? GetMessage("SONET_C241_MALE") : ""));
break;
case 'PERSONAL_BIRTHDAY':
if (StrLen($val) > 0)
{
$arBirthdayTmp = CSocNetTools::Birthday($val, $arUser['PERSONAL_GENDER'], $arParams['SHOW_YEAR']);
$val = $arBirthdayTmp["DATE"];
}
break;
default:
break;
}
$arUser["UserFieldsMain"]["DATA"][$userFieldName] = array("NAME" => GetMessage("SONET_C241_".$userFieldName), "VALUE" => $val);
}
}
if (count($arUser["UserFieldsMain"]["DATA"]) > 0)
$arUser["UserFieldsMain"]["SHOW"] = "Y";
}
// USER PROPERIES
$arUser["UserPropertiesMain"] = array("SHOW" => "N", "DATA" => array());
if (count($arParams["USER_PROPERTY_LIST"]) > 0)
{
$arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("USER", $arUser["ID"], LANGUAGE_ID);
foreach ($arUserFields as $fieldName => $arUserField)
{
if (in_array($fieldName, $arParams["USER_PROPERTY_LIST"]))
{
$arUserField["EDIT_FORM_LABEL"] = StrLen($arUserField["EDIT_FORM_LABEL"]) > 0 ? $arUserField["EDIT_FORM_LABEL"] : $arUserField["FIELD_NAME"];
$arUserField["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arUserField["EDIT_FORM_LABEL"]);
$arUserField["~EDIT_FORM_LABEL"] = $arUserField["EDIT_FORM_LABEL"];
$arUser["UserPropertiesMain"]["DATA"][$fieldName] = $arUserField;
}
}
if (count($arUser["UserPropertiesMain"]["DATA"]) > 0)
$arUser["UserPropertiesMain"]["SHOW"] = "Y";
}
$arResult["SEARCH_RESULT"][] = $arUser;
}
$arResult["NAV_STRING"] = $dbUsers->GetPageNavStringEx($navComponentObject, GetMessage("SONET_C241_NAV"), "", false);
if (!$bFilter)
{
$obCache->StartDataCache();
$obCache->EndDataCache(array(
'SEARCH_RESULT' => $arResult['SEARCH_RESULT'],
'NAV_STRING' => $arResult['NAV_STRING'],
));
}
}
}
$this->IncludeComponentTemplate();
?>