%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.group_request_search/ |
| Current File : //home/bitrix/www/bitrix/components/bitrix/socialnetwork.group_request_search/component.php |
<?php
/**
* Bitrix Framework
* @package bitrix
* @subpackage socialnetwork
* @copyright 2001-2014 Bitrix
*/
/**
* Bitrix vars
* @global CUser $USER
* @global CMain $APPLICATION
* @param array $arParams
* @param array $arResult
* @param CBitrixComponent $this
*/
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
if (!CModule::IncludeModule("socialnetwork"))
{
ShowError(GetMessage("SONET_MODULE_NOT_INSTALL"));
return;
}
/* intranet.user.search */
$arParams["IUS_INPUT_NAME"] = "ius_ids";
$arParams["IUS_INPUT_NAME_SUSPICIOUS"] = "ius_susp";
$arParams["IUS_INPUT_NAME_STRING"] = "users_list_string_ius";
$arParams["IUS_INPUT_NAME_EXTRANET"] = "ius_ids_extranet";
$arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"] = "ius_susp_extranet";
$arParams["IUS_INPUT_NAME_STRING_EXTRANET"] = "users_list_string_ius_extranet";
$arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] == "N" ? "N" : "Y");
if (strLen($arParams["USER_VAR"]) <= 0)
$arParams["USER_VAR"] = "user_id";
if (strLen($arParams["PAGE_VAR"]) <= 0)
$arParams["PAGE_VAR"] = "page";
if (strLen($arParams["GROUP_VAR"]) <= 0)
$arParams["GROUP_VAR"] = "group_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_GROUP"] = trim($arParams["PATH_TO_GROUP"]);
if (strlen($arParams["PATH_TO_GROUP"]) <= 0)
$arParams["PATH_TO_GROUP"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group&".$arParams["GROUP_VAR"]."=#group_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["ITEMS_COUNT"] = IntVal($arParams["ITEMS_COUNT"]);
if ($arParams["ITEMS_COUNT"] <= 0)
$arParams["ITEMS_COUNT"] = 30;
$arParams["GROUP_ID"] = IntVal($arParams["GROUP_ID"]);
$arParams["USER_ID"] = IntVal($USER->GetID());
// for bitrix:main.user.link
if (IsModuleInstalled('intranet'))
{
$arTooltipFieldsDefault = serialize(array(
"EMAIL",
"PERSONAL_MOBILE",
"WORK_PHONE",
"PERSONAL_ICQ",
"PERSONAL_PHOTO",
"PERSONAL_CITY",
"WORK_COMPANY",
"WORK_POSITION",
));
$arTooltipPropertiesDefault = serialize(array(
"UF_DEPARTMENT",
"UF_PHONE_INNER",
));
}
else
{
$arTooltipFieldsDefault = serialize(array(
"PERSONAL_ICQ",
"PERSONAL_BIRTHDAY",
"PERSONAL_PHOTO",
"PERSONAL_CITY",
"WORK_COMPANY",
"WORK_POSITION"
));
$arTooltipPropertiesDefault = serialize(array());
}
if (!array_key_exists("SHOW_FIELDS_TOOLTIP", $arParams))
$arParams["SHOW_FIELDS_TOOLTIP"] = unserialize(COption::GetOptionString("socialnetwork", "tooltip_fields", $arTooltipFieldsDefault));
if (!array_key_exists("USER_PROPERTY_TOOLTIP", $arParams))
$arParams["USER_PROPERTY_TOOLTIP"] = unserialize(COption::GetOptionString("socialnetwork", "tooltip_properties", $arTooltipPropertiesDefault));
$arResult["ShowForm"] = "Input";
if (!$USER->IsAuthorized())
{
$arResult["NEED_AUTH"] = "Y";
}
else
{
$bIntranet = IsModuleInstalled('intranet');
if ($arParams["GROUP_ID"] <= 0)
{
$arResult["FatalError"] = GetMessage("SONET_C33_NO_GROUP_ID").". ";
}
else
{
$arGroup = CSocNetGroup::GetByID($arParams["GROUP_ID"]);
if (!$arGroup || !is_array($arGroup))
$arResult["FatalError"] = GetMessage("SONET_C33_NO_GROUP").". ";
else
{
$arResult["Group"] = $arGroup;
if (CModule::IncludeModule("extranet"))
{
$arSites = array();
$rsGroupSite = CSocNetGroup::GetSite($arParams["GROUP_ID"]);
while($arGroupSite = $rsGroupSite->Fetch())
$arSites[] = $arGroupSite["LID"];
$extranet_site_id = CExtranet::GetExtranetSiteID();
if ($extranet_site_id && in_array(CExtranet::GetExtranetSiteID(), $arSites))
$arResult["bExtranet"] = true;
}
$arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arResult["Group"]["ID"]));
$arResult["Urls"]["Search"] = $arParams["PATH_TO_SEARCH"];
$arResult["CurrentUserPerms"] = CSocNetUserToGroup::InitUserPerms($USER->GetID(), $arResult["Group"], CSocNetUser::IsCurrentUserModuleAdmin());
if ($arParams["SET_TITLE"] == "Y")
$APPLICATION->SetTitle($arResult["Group"]["NAME"].": ".GetMessage("SONET_C33_PAGE_TITLE"));
if ($arParams["SET_NAV_CHAIN"] != "N")
{
$APPLICATION->AddChainItem($arResult["Group"]["NAME"], $arResult["Urls"]["Group"]);
$APPLICATION->AddChainItem(GetMessage("SONET_C33_PAGE_TITLE"));
}
if (!$arResult["CurrentUserPerms"] || !$arResult["CurrentUserPerms"]["UserCanInitiate"])
$arResult["FatalError"] = GetMessage("SONET_C33_NO_PERMS").". ";
else
{
$arSuccessUsers = array();
$arErrorUsers = array();
$arResult["SuccessUsers"] = false;
$arResult["ErrorUsers"] = false;
if ($_SERVER["REQUEST_METHOD"]=="POST" && strlen($_POST["save"]) > 0 && check_bitrix_sessid())
{
$errorMessage = "";
$warningMessage = "";
$bAnyUser = false;
if ($bIntranet)
{
if (strlen($arParams["IUS_INPUT_NAME"]) > 0 && is_array($_POST[$arParams["IUS_INPUT_NAME"]]) && count($_POST[$arParams["IUS_INPUT_NAME"]]) > 0)
$bAnyUser = true;
if (!$bAnyUser && CModule::IncludeModule('extranet') && strlen($arParams["IUS_INPUT_NAME_EXTRANET"]) > 0 && is_array($_POST[$arParams["IUS_INPUT_NAME_EXTRANET"]]) && count($_POST[$arParams["IUS_INPUT_NAME_EXTRANET"]]) > 0)
$bAnyUser = true;
if (!$bAnyUser && strlen($arParams["IUS_INPUT_NAME_SUSPICIOUS"]) > 0 && strlen($_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS"]]) > 0)
$bAnyUser = true;
if (!$bAnyUser && $arResult["bExtranet"] && strlen($arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"]) > 0 && strlen($_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"]]) > 0)
$bAnyUser = true;
}
/* if data from intranet.user.search not found or there is no intranet module */
if (!$bAnyUser)
{
if ($arResult["bExtranet"])
{
if (strlen($_POST["EMAILS"]) > 0)
$bAnyUser = true;
}
elseif (strlen($_POST["users_list"]) > 0)
$bAnyUser = true;
}
if (!$bAnyUser)
$errorMessage .= GetMessage("SONET_C33_NO_USERS").". ";
$arUserIDs = array();
$arUsersList = array();
$arUsersFull = array();
if (StrLen($errorMessage) <= 0)
{
/* new component */
if ($bIntranet && strlen($arParams["IUS_INPUT_NAME"]) > 0 && is_array($_POST[$arParams["IUS_INPUT_NAME"]]) && count($_POST[$arParams["IUS_INPUT_NAME"]]) > 0)
$arUserIDs = $_POST[$arParams["IUS_INPUT_NAME"]];
if ($bIntranet && strlen($arParams["IUS_INPUT_NAME_EXTRANET"]) > 0 && is_array($_POST[$arParams["IUS_INPUT_NAME_EXTRANET"]]) && count($_POST[$arParams["IUS_INPUT_NAME_EXTRANET"]]) > 0)
{
$arUserIDsExtranet = $_POST[$arParams["IUS_INPUT_NAME_EXTRANET"]];
$arUserIDs = array_merge($arUserIDs, $arUserIDsExtranet);
}
$arUserIDs = array_unique($arUserIDs);
if (is_array($arUserIDs) && count($arUserIDs) > 0)
{
$strUserIDs = implode("|", $arUserIDs);
$rsUser = CUser::GetList(($by="id"), ($order="asc"), array("ACTIVE"=>"Y", "ID"=>$strUserIDs));
while($arUser = $rsUser->GetNext())
{
$arUsersFull[] = array("ID" => $arUser["ID"], "NAME_FORMATTED"=> CSocNetUser::FormatNameEx(
$arUser["NAME"],
$arUser["SECOND_NAME"],
$arUser["LAST_NAME"],
$arUser["LOGIN"],
($bIntranet ? $arUser["EMAIL"] : ""),
$arUser["ID"])
);
}
}
/* old component */
if (!is_array($arUserIDs) || count($arUserIDs) <= 0)
{
$arUsersListTmp = Explode(",", $_POST["users_list"]);
foreach ($arUsersListTmp as $userTmp)
{
$userTmp = Trim($userTmp);
if (StrLen($userTmp) > 0)
$arUsersList[] = $userTmp;
}
if (!$arResult["bExtranet"])
{
if (Count($arUsersList) <= 0 && strlen($_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS"]]) <= 0)
$errorMessage .= GetMessage("SONET_C33_NO_USERS").". ";
}
elseif (Count($arUsersList) <= 0 && strlen($_POST["EMAILS"]) <= 0 && strlen($_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"]]) <= 0 && strlen($_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS"]]) <= 0)
$errorMessage .= GetMessage("SONET_C33_NO_USERS").". ";
if (StrLen($errorMessage) <= 0)
{
$arUsersIDByInput = array();
foreach ($arUsersList as $user)
{
$arFoundUsers = CSocNetUser::SearchUser($user, $bIntranet);
if ($arFoundUsers && is_array($arFoundUsers) && count($arFoundUsers) > 0)
{
foreach ($arFoundUsers as $userID => $userName)
{
$userID = IntVal($userID);
if ($userID > 0)
{
if (in_array($userID, $arUsersIDByInput))
continue;
$arUsersIDByInput[] = $userID;
$arUsersFull[] = array("ID" => $userID, "NAME_FORMATTED"=> $userName);
}
}
}
else
{
$arErrorUsers[] = array($user, "");
$warningMessage .= Str_Replace("#NAME#", HtmlSpecialCharsEx($user), GetMessage("SONET_C33_NO_USER1").". ");
}
}
}
}
}
if (StrLen($errorMessage) <= 0)
{
foreach ($arUsersFull as $arUserToRequest)
{
$isCurrentUserTmp = ($USER->GetID() == $arUserToRequest["ID"]);
$canInviteGroup = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUserToRequest["ID"], "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin());
$user2groupRelation = CSocNetUserToGroup::GetUserRole($arUserToRequest["ID"], $arResult["Group"]["ID"]);
if ($isCurrentUserTmp)
{
$arErrorUsers[] = array($arUserToRequest["NAME_FORMATTED"], CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUserToRequest["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserToRequest["ID"])) : "");
$warningMessage .= Str_Replace("#NAME#", $arUserToRequest["NAME_FORMATTED"], GetMessage("SONET_C11_ERR_SELF")).". ";
}
elseif (!$canInviteGroup)
{
$arErrorUsers[] = array($arUserToRequest["NAME_FORMATTED"], CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUserToRequest["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserToRequest["ID"])) : "");
$warningMessage .= Str_Replace("#NAME#", $arUserToRequest["NAME_FORMATTED"], GetMessage("SONET_C11_BAD_USER")).". ";
}
elseif ($user2groupRelation)
{
$arErrorUsers[] = array($arUserToRequest["NAME_FORMATTED"], CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUserToRequest["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserToRequest["ID"])) : "");
$warningMessage .= Str_Replace("#NAME#", $arUserToRequest["NAME_FORMATTED"], GetMessage("SONET_C11_BAD_RELATION")).". ";
}
else
{
if (CModule::IncludeModule('extranet') && $arResult["bExtranet"] && CExtranet::GetExtranetUserGroupID() > 0)
{
$arUserGroups = CUser::GetUserGroup($arUserToRequest["ID"]);
if (is_array($arUserGroups) && !in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroups))
{
$arUserGroups[] = CExtranet::GetExtranetUserGroupID();
CUser::SetUserGroup($arUserToRequest["ID"], $arUserGroups);
}
}
if (CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $arUserToRequest["ID"], $arResult["Group"]["ID"], $_POST["MESSAGE"]))
$arSuccessUsers[] = array($arUserToRequest["NAME_FORMATTED"], CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUserToRequest["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserToRequest["ID"])) : "");
else
{
$arErrorUsers[] = array($arUserToRequest["NAME_FORMATTED"], CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUserToRequest["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserToRequest["ID"])) : "");
if ($e = $APPLICATION->GetException())
$warningMessage .= $e->GetString();
}
}
}
$arEmail = array();
// get all suspicious intranet emails
if (strlen($arParams["IUS_INPUT_NAME_SUSPICIOUS"]) > 0 && strlen($_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS"]]) > 0)
{
$arEmailOriginal = preg_split("/[\n\r\t\,;]+/", $_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS"]]);
foreach($arEmailOriginal as $addr)
{
if(strlen($addr) > 0 && check_email($addr))
{
$addrX = "";
$phraseX = "";
$white_space = "(?:(?:\\r\\n)?[ \\t])";
$spec = '()<>@,;:\\\\".\\[\\]';
$cntl = '\\000-\\037\\177';
$dtext = "[^\\[\\]\\r\\\\]";
$domain_literal = "\\[(?:$dtext|\\\\.)*\\]$white_space*";
$quoted_string = "\"(?:[^\\\"\\r\\\\]|\\\\.|$white_space)*\"$white_space*";
$atom = "[^$spec $cntl]+(?:$white_space+|\\Z|(?=[\\[\"$spec]))";
$word = "(?:$atom|$quoted_string)";
$localpart = "$word(?:\\.$white_space*$word)*";
$sub_domain = "(?:$atom|$domain_literal)";
$domain = "$sub_domain(?:\\.$white_space*$sub_domain)*";
$addr_spec = "$localpart\@$white_space*$domain";
$phrase = "$word*";
if(preg_match("/$addr_spec/", $addr, $arMatches))
$addrX = $arMatches[0];
if(preg_match("/$localpart/", $addr, $arMatches))
$phraseX = trim(trim($arMatches[0]), "\"");
$arEmail[] = array("EMAIL"=>$addrX, "NAME"=>$phraseX);
}
}
}
// get all suspicious extranet emails
if ($arResult["bExtranet"])
{
if (strlen($arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"]) > 0 && strlen($_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"]]) > 0)
{
$arEmailOriginal = preg_split("/[\n\r\t\,;]+/", $_POST[$arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"]]);
foreach($arEmailOriginal as $addr)
{
if(strlen($addr) > 0 && check_email($addr))
{
$addrX = "";
$phraseX = "";
$white_space = "(?:(?:\\r\\n)?[ \\t])";
$spec = '()<>@,;:\\\\".\\[\\]';
$cntl = '\\000-\\037\\177';
$dtext = "[^\\[\\]\\r\\\\]";
$domain_literal = "\\[(?:$dtext|\\\\.)*\\]$white_space*";
$quoted_string = "\"(?:[^\\\"\\r\\\\]|\\\\.|$white_space)*\"$white_space*";
$atom = "[^$spec $cntl]+(?:$white_space+|\\Z|(?=[\\[\"$spec]))";
$word = "(?:$atom|$quoted_string)";
$localpart = "$word(?:\\.$white_space*$word)*";
$sub_domain = "(?:$atom|$domain_literal)";
$domain = "$sub_domain(?:\\.$white_space*$sub_domain)*";
$addr_spec = "$localpart\@$white_space*$domain";
$phrase = "$word*";
if(preg_match("/$addr_spec/", $addr, $arMatches))
$addrX = $arMatches[0];
if(preg_match("/$localpart/", $addr, $arMatches))
$phraseX = trim(trim($arMatches[0]), "\"");
$arEmail[] = array("EMAIL"=>$addrX, "NAME"=>$phraseX);
}
}
}
}
// get all suspicious extranet emails from an old form
if ($arResult["bExtranet"] && (!is_array($arEmail) || count($arEmail) <= 0) && strlen($_POST["EMAILS"]) > 0)
{
$arEmailOriginal = preg_split("/[\n\r\t\,;]+/", $_POST["EMAILS"]);
foreach($arEmailOriginal as $addr)
{
if(strlen($addr) > 0 && check_email($addr))
{
$addrX = "";
$phraseX = "";
$white_space = "(?:(?:\\r\\n)?[ \\t])";
$spec = '()<>@,;:\\\\".\\[\\]';
$cntl = '\\000-\\037\\177';
$dtext = "[^\\[\\]\\r\\\\]";
$domain_literal = "\\[(?:$dtext|\\\\.)*\\]$white_space*";
$quoted_string = "\"(?:[^\\\"\\r\\\\]|\\\\.|$white_space)*\"$white_space*";
$atom = "[^$spec $cntl]+(?:$white_space+|\\Z|(?=[\\[\"$spec]))";
$word = "(?:$atom|$quoted_string)";
$localpart = "$word(?:\\.$white_space*$word)*";
$sub_domain = "(?:$atom|$domain_literal)";
$domain = "$sub_domain(?:\\.$white_space*$sub_domain)*";
$addr_spec = "$localpart\@$white_space*$domain";
$phrase = "$word*";
if(preg_match("/$addr_spec/", $addr, $arMatches))
$addrX = $arMatches[0];
if(preg_match("/$localpart/", $addr, $arMatches))
$phraseX = trim(trim($arMatches[0]), "\"");
$arEmail[] = array("EMAIL"=>$addrX, "NAME"=>$phraseX);
}
}
}
$arUserToRequest = array();
$arEmailToRegister = array();
if (Count($arUsersFull) <= 0 && count($arEmail) <= 0)
$errorMessage .= GetMessage("SONET_C33_NO_USERS").". ";
foreach($arEmail as $email)
{
$arFilter = array(
"ACTIVE"=>"Y",
"=EMAIL"=>$email["EMAIL"]
);
if (CModule::IncludeModule('extranet') && !CExtranet::IsExtranetSite())
$arFilter["!UF_DEPARTMENT"] = false;
$rsUser = CUser::GetList(($by="id"), ($order="asc"), $arFilter);
$bFound = false;
while ($arUser = $rsUser->GetNext())
{
$bFound = true;
if (is_array($arUsersIDByInput) && in_array($arUser["ID"], $arUsersIDByInput))
continue;
$arUsersFull[] = array("ID" => $arUser["ID"], "NAME_FORMATTED"=> CSocNetUser::FormatNameEx(
$arUser["NAME"],
$arUser["SECOND_NAME"],
$arUser["LAST_NAME"],
$arUser["LOGIN"],
($bIntranet ? $arUser["EMAIL"] : ""),
$arUser["ID"])
);
$name = "";
if (strlen(trim($arUser["NAME"].$arUser["LAST_NAME"])) <= 0)
$name = "<".$arUser["EMAIL"].">";
else
$name = trim($arUser["NAME"]." ".$arUser["LAST_NAME"])." <".$arUser["EMAIL"].">";
$user2groupRelation = CSocNetUserToGroup::GetUserRole($arUser["ID"], $arResult["Group"]["ID"]);
if ($user2groupRelation)
{
$arErrorUsers[] = array($name, CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"])) : "");
$warningMessage .= Str_Replace("#NAME#", $name, GetMessage("SONET_C11_BAD_RELATION")).". ";
continue;
}
$arUserToRequest[] = array("NAME"=>$name, "ID"=>$arUser["ID"]);
if ($arResult["bExtranet"] && CExtranet::GetExtranetUserGroupID() > 0)
{
$arUserGroups = CUser::GetUserGroup($arUser["ID"]);
if (is_array($arUserGroups) && !in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroups))
{
$arUserGroups[] = CExtranet::GetExtranetUserGroupID();
CUser::SetUserGroup($arUser["ID"], $arUserGroups);
}
}
}
if (!$bFound && $arResult["bExtranet"])
$arEmailToRegister[] = $email;
elseif(!$bFound && CModule::IncludeModule('extranet') && !CExtranet::IsExtranetSite())
$warningMessage .= Str_Replace("#EMAIL#", HtmlSpecialCharsEx($email["EMAIL"]), GetMessage("SONET_C33_NOT_EMPLOYEE"))."<br />";
}
// create new extranet users
if ($arResult["bExtranet"])
{
foreach($arEmailToRegister as $email)
{
$def_group = COption::GetOptionString("main", "new_user_registration_def_group", "");
if($def_group!="")
{
$GROUP_ID = explode(",", $def_group);
$arPolicy = $USER->GetGroupPolicy($GROUP_ID);
}
else
$arPolicy = $USER->GetGroupPolicy(array());
$password_min_length = intval($arPolicy["PASSWORD_LENGTH"]);
if($password_min_length <= 0)
$password_min_length = 6;
$password_chars = array(
"abcdefghijklnmopqrstuvwxyz",
"ABCDEFGHIJKLNMOPQRSTUVWXYZ",
"0123456789",
);
if($arPolicy["PASSWORD_PUNCTUATION"] === "Y")
$password_chars[] = ",.<>/?;:'\"[]{}\\|`~!@#\$%^&*()-_+=";
$password = randString($password_min_length, $password_chars);
$checkword = randString(8);
$user = new CUser;
$name = $last_name = "";
if (strlen($email["NAME"]) > 0)
list($name, $last_name) = explode(" ", $email["NAME"]);
$arFields = array(
"EMAIL" => $email["EMAIL"],
"LOGIN" => $email["EMAIL"],
"NAME" => $name,
"LAST_NAME" => $last_name,
"ACTIVE" => "Y",
"GROUP_ID" => array(2),
"PASSWORD" => $password,
"CONFIRM_PASSWORD" => $password,
"CONFIRM_CODE" => $checkword,
"LID" => SITE_ID
);
if (CExtranet::GetExtranetUserGroupID() > 0)
$arFields["GROUP_ID"] = array(2, CExtranet::GetExtranetUserGroupID());
$NEW_USER_ID = $user->Add($arFields);
if (intval($NEW_USER_ID) > 0)
{
$arUserToRequest[] = array("NAME"=>(strlen($email["NAME"]) > 0 ? $email["NAME"]." " : "")."<".$email["EMAIL"].">", "ID"=>$NEW_USER_ID);
$event = new CEvent;
$arFields = Array(
"USER_ID" => $NEW_USER_ID,
"CHECKWORD" => $checkword,
"EMAIL" => $email["EMAIL"],
"USER_TEXT" => ''
);
$event->Send("EXTRANET_INVITATION", SITE_ID, $arFields);
}
else
{
$strError = $user->LAST_ERROR;
if ($APPLICATION->GetException())
{
$err = $APPLICATION->GetException();
$strError .= $err->GetString();
$APPLICATION->ResetException();
}
$warningMessage .= Str_Replace("#EMAIL#", HtmlSpecialCharsEx($email["EMAIL"]), GetMessage("SONET_C33_CANNOT_USER_ADD").$strError);
}
}
}
if ((!is_array($arUsersFull) || count($arUsersFull) <= 0) && (!is_array($arUserToRequest) || count($arUserToRequest) <= 0))
$errorMessage .= GetMessage("SONET_C33_NO_USERS").". ";
else
{
foreach($arUserToRequest as $arUser)
{
if (CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $arUser["ID"], $arResult["Group"]["ID"], $_POST["MESSAGE"]))
$arSuccessUsers[] = array($arUser["NAME"], CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"])) : "");
else
{
$arErrorUsers[] = array($arUser["NAME"], CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"])) : "");
if ($e = $APPLICATION->GetException())
$warningMessage .= $e->GetString();
}
}
}
}
$arResult["SuccessUsers"] = $arSuccessUsers;
$arResult["ErrorUsers"] = $arErrorUsers;
$arResult["WarningMessage"] = $warningMessage;
if (strlen($errorMessage) > 0)
$arResult["ErrorMessage"] = $errorMessage;
else
$arResult["ShowForm"] = "Confirm";
}
if ($arResult["ShowForm"] == "Input")
{
if (!CModule::IncludeModule('extranet') || CExtranet::IsIntranetUser())
$arResult["isCurrentUserIntranet"] = true;
$arResult["Friends"] = false;
if (CSocNetUser::IsFriendsAllowed())
{
$dbFriends = CSocNetUserRelations::GetRelatedUsers($USER->GetID(), SONET_RELATIONS_FRIEND, false);
if ($dbFriends)
{
$arResult["Friends"] = array();
$arResult["Friends"]["List"] = false;
while ($arFriends = $dbFriends->GetNext())
{
if ($arResult["Friends"]["List"] == false)
$arResult["Friends"]["List"] = array();
$pref = ((IntVal($USER->GetID()) == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST");
if (!CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arFriends[$pref."_USER_ID"], "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin()))
continue;
$pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arFriends[$pref."_USER_ID"]));
$canViewProfile = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arFriends[$pref."_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin());
if (intval($arParams["THUMBNAIL_LIST_SIZE"]) > 0)
{
if (intval($arFriends[$pref."_USER_PERSONAL_PHOTO"]) <= 0)
{
switch ($arFriends[$pref."_USER_PERSONAL_GENDER"])
{
case "M":
$suffix = "male";
break;
case "F":
$suffix = "female";
break;
default:
$suffix = "unknown";
}
$arFriends[$pref."_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_".$suffix, false, SITE_ID);
}
$arImage = CSocNetTools::InitImage($arFriends[$pref."_USER_PERSONAL_PHOTO"], $arParams["THUMBNAIL_LIST_SIZE"], "/bitrix/images/socialnetwork/nopic_30x30.gif", 30, $pu, $canViewProfile);
}
else // old
$arImage = CSocNetTools::InitImage($arFriends[$pref."_USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile);
$arResult["Friends"]["List"][] = array(
"ID" => $arFriends["ID"],
"USER_ID" => $arFriends[$pref."_USER_ID"],
"USER_NAME_FORMATED" => CSocNetUser::FormatNameEx(
$arFriends[$pref."_USER_NAME"],
$arFriends[$pref."_USER_SECOND_NAME"],
$arFriends[$pref."_USER_LAST_NAME"],
$arFriends[$pref."_USER_LOGIN"],
($bIntranet ? $arFriends[$pref."_USER_EMAIL"] : ""),
$arFriends[$pref."_USER_ID"]
),
"USER_NAME" => $arFriends[$pref."_USER_NAME"],
"USER_LAST_NAME" => $arFriends[$pref."_USER_LAST_NAME"],
"USER_SECOND_NAME" => $arFriends[$pref."_USER_SECOND_NAME"],
"USER_LOGIN" => $arFriends[$pref."_USER_LOGIN"],
"USER_PERSONAL_PHOTO" => $arFriends[$pref."_USER_PERSONAL_PHOTO"],
"USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"],
"USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"],
"USER_PROFILE_URL" => $pu,
"SHOW_PROFILE_LINK" => $canViewProfile,
"IS_ONLINE" => ($arFriends[$pref."_USER_IS_ONLINE"] == "Y")
);
}
}
}
}
}
}
}
$arResult["bIntranet"] = $bIntranet;
}
$this->IncludeComponentTemplate();