%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();