function _FormatUser(&$arUser, $arPath) { global $USER, $CACHE_ABSENCE; if ($arUser['PERSONAL_PHOTO']) { $arImage = CIntranetUtils::InitImage($arUser['PERSONAL_PHOTO'], 30); $arUser['PERSONAL_PHOTO'] = $arImage['IMG']; } if ($arPath['DETAIL_URL']) { $arUser['DETAIL_URL'] = str_replace('#ID#', $arUser['ID'], $arPath['DETAIL_URL']); } $arUser["canViewProfile"] = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser['ID'], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $arUser["canMessage"] = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arUser['ID'], "message", CSocNetUser::IsCurrentUserModuleAdmin()); if ($arPath['MESSAGES_CHAT_URL']) { $arUser['MESSAGES_CHAT_URL'] = str_replace('#ID#', $arUser['ID'], $arPath['MESSAGES_CHAT_URL']); } $arUser['IS_ABSENT'] = CIntranetUtils::IsUserAbsent($arUser['ID']); $arUser['IS_ONLINE'] = CSocNetUser::IsOnLine($arUser['ID']); if ($arUser['IS_ABSENT']) { $maxAbsence = 0; foreach ($CACHE_ABSENCE[$arUser["ID"]] as $arAbsence) { if (MakeTimeStamp($arAbsence["DATE_TO"]) > $maxAbsence) { $arUser['ABSENT_TILL'] = $arAbsence["DATE_TO"]; } } } $arFilter = array("TO_USER_ID" => $arUser['ID'], "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE, "FROM_USER_ID" => $USER->GetID()); $dbMessages = CSocNetMessages::GetList(array("DATE_CREATE" => "DESC"), $arFilter, false, array("nTopCount" => 1), array("ID", "DATE_CREATE")); if ($arMessages = $dbMessages->GetNext()) { $arUser['LAST_CHAT'] = $arMessages["DATE_CREATE"]; } return true; }
} $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"];
/** * <p>Метод инициализирует массив прав пользователя на операции над профайлом заданного пользователя.</p> * * * @param int $currentUserID Код пользователя, права которого проверяются. * * @param int $userID Код пользователя, к профайлу которого осуществляется доступ. * * @param bool $bCurrentUserIsAdmin Флаг, является ли администратором пользователь, права которого * проверяются. * * @return array <p>Массив с ключами:<br><b>IsCurrentUser</b> - флаг, осуществляется ли доступ к * собственному профайлу,<br><b>Relation</b> - отношения между * пользователями,<br><b>Operations</b> - массив операций: <br> modifyuser - право на * изменение профайла, если в главном модуле разрешено * редактировать профиль,<br> modifyuser_main - право на изменение * профайла,<br> viewcontacts - право на просмотр контактной информации,<br> * invitegroup - приглашение в группу, <br> message - отправка персонального * сообщения, <br> viewfriends - просмотр друзей, <br> viewgroups - просмотр групп, * <br> viewprofile - просмотр профиля. </p> <a name="examples"></a> * * <h4>Example</h4> * <pre> * Array * ( * [Operations] => Array * ( * [modifyuser] => 1 * [viewcontacts] => 1 * [invitegroup] => 1 * [message] => 1 * [viewfriends] => 1 * [viewgroups] => 1 * [viewprofile] => 1 * [modifyuser_main] => * ) * * [IsCurrentUser] => * [Relation] => * ) * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/csocnetuserperms/inituserperms.php * @author Bitrix */ public static function InitUserPerms($currentUserID, $userID, $bCurrentUserIsAdmin) { global $arSocNetUserOperations, $USER; $arReturn = array(); $currentUserID = IntVal($currentUserID); $userID = IntVal($userID); if ($userID <= 0) { return false; } $arReturn["Operations"] = array(); if ($currentUserID <= 0) { $arReturn["IsCurrentUser"] = false; $arReturn["Relation"] = false; $arReturn["Operations"]["modifyuser"] = false; $arReturn["Operations"]["viewcontacts"] = false; foreach ($arSocNetUserOperations as $operation => $defPerm) { $arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false); } } else { $arReturn["IsCurrentUser"] = $currentUserID == $userID; if ($arReturn["IsCurrentUser"]) { $arReturn["Relation"] = false; } else { $arReturn["Relation"] = CSocNetUserRelations::GetRelation($currentUserID, $userID); } if ($bCurrentUserIsAdmin || $arReturn["IsCurrentUser"]) { $arReturn["Operations"]["modifyuser"] = true; $arReturn["Operations"]["viewcontacts"] = true; foreach ($arSocNetUserOperations as $operation => $defPerm) { $arReturn["Operations"][$operation] = true; } } else { $arReturn["Operations"]["modifyuser"] = false; if (CSocNetUser::IsFriendsAllowed()) { $arReturn["Operations"]["viewcontacts"] = $arReturn["Relation"] == SONET_RELATIONS_FRIEND; } else { $arReturn["Operations"]["viewcontacts"] = true; } foreach ($arSocNetUserOperations as $operation => $defPerm) { $arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false); } } $arReturn["Operations"]["modifyuser_main"] = false; if ($arReturn["IsCurrentUser"]) { if ($USER->CanDoOperation('edit_own_profile')) { $arReturn["Operations"]["modifyuser_main"] = true; } } elseif ($USER->CanDoOperation('edit_all_users') || $USER->CanDoOperation('edit_subordinate_users') && count(array_diff(CUser::GetUserGroup($userID), CSocNetTools::GetSubordinateGroups($currentUserID))) <= 0) { $arReturn["Operations"]["modifyuser_main"] = true; } } return $arReturn; }
function InitUserPerms($currentUserID, $userID, $bCurrentUserIsAdmin) { global $arSocNetUserOperations, $USER; $arReturn = array(); $currentUserID = IntVal($currentUserID); $userID = IntVal($userID); if ($userID <= 0) { return false; } $arReturn["Operations"] = array(); if ($currentUserID <= 0) { $arReturn["IsCurrentUser"] = false; $arReturn["Relation"] = false; $arReturn["Operations"]["modifyuser"] = false; $arReturn["Operations"]["viewcontacts"] = false; foreach ($arSocNetUserOperations as $operation => $defPerm) { $arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false); } } else { $arReturn["IsCurrentUser"] = $currentUserID == $userID; if ($arReturn["IsCurrentUser"]) { $arReturn["Relation"] = false; } else { $arReturn["Relation"] = CSocNetUserRelations::GetRelation($currentUserID, $userID); } if ($bCurrentUserIsAdmin || $arReturn["IsCurrentUser"]) { $arReturn["Operations"]["modifyuser"] = true; $arReturn["Operations"]["viewcontacts"] = true; foreach ($arSocNetUserOperations as $operation => $defPerm) { $arReturn["Operations"][$operation] = true; } } else { $arReturn["Operations"]["modifyuser"] = false; if (CSocNetUser::IsFriendsAllowed()) { $arReturn["Operations"]["viewcontacts"] = $arReturn["Relation"] == SONET_RELATIONS_FRIEND; } else { $arReturn["Operations"]["viewcontacts"] = true; } foreach ($arSocNetUserOperations as $operation => $defPerm) { $arReturn["Operations"][$operation] = CSocNetUserPerms::CanPerformOperation($currentUserID, $userID, $operation, false); } } $arReturn["Operations"]["modifyuser_main"] = false; if ($arReturn["IsCurrentUser"]) { if ($USER->CanDoOperation('edit_own_profile')) { $arReturn["Operations"]["modifyuser_main"] = true; } } elseif ($USER->CanDoOperation('edit_all_users')) { $arReturn["Operations"]["modifyuser_main"] = true; } elseif ($USER->CanDoOperation('edit_subordinate_users')) { $arUserGroups = CUser::GetUserGroup($userID); if (array_key_exists("SONET_SUBORD_GROUPS_BY_USER_ID", $GLOBALS) && !array_key_exists("SONET_ALLOW_FRIENDS_CACHE", $_REQUEST)) { $arUserSubordinateGroups = $GLOBALS["SONET_SUBORD_GROUPS_BY_USER_ID"][$currentUserID]; } else { $arUserSubordinateGroups = array(2); $arUserGroups_u = CUser::GetUserGroup($currentUserID); for ($j = 0, $len = count($arUserGroups_u); $j < $len; $j++) { $arSubordinateGroups = CGroup::GetSubordinateGroups($arUserGroups_u[$j]); $arUserSubordinateGroups = array_merge($arUserSubordinateGroups, $arSubordinateGroups); } $arUserSubordinateGroups = array_unique($arUserSubordinateGroups); if (!array_key_exists("SONET_SUBORD_GROUPS_BY_USER_ID", $GLOBALS)) { $GLOBALS["SONET_SUBORD_GROUPS_BY_USER_ID"] = array(); } $GLOBALS["SONET_SUBORD_GROUPS_BY_USER_ID"][$currentUserID] = $arUserSubordinateGroups; } if (count(array_diff($arUserGroups, $arUserSubordinateGroups)) <= 0) { $arReturn["Operations"]["modifyuser_main"] = true; } } } return $arReturn; }
echo "*"; } else { if (!check_bitrix_sessid()) { echo GetMessage("SONET_C50_ERR_PERMS") . "."; } else { $message = $_REQUEST["data"]; CUtil::decodeURIComponent($message); $message = Trim($message); if (StrLen($message) <= 0) { echo GetMessage("SONET_C50_NO_TEXT") . "."; } else { if (empty($aUserId)) { echo GetMessage("SONET_C50_NO_USER_ID") . "."; } else { foreach ($aUserId as $userID) { if (!CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $userID, "message", CSocNetUser::IsCurrentUserModuleAdmin(false))) { echo GetMessage("SONET_C50_CANT_WRITE") . "."; } else { $errorMessage = ""; if (!CSocNetMessages::CreateMessage($GLOBALS["USER"]->GetID(), $userID, $message)) { if ($e = $GLOBALS["APPLICATION"]->GetException()) { $errorMessage .= $e->GetString(); } } if (strlen($errorMessage) > 0) { echo $errorMessage; } } } } }
$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); } $gruLink = ""; $bGruInvite = false; if ($arParams["GROUP_ID"] > 0) { if (CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arFriends[$pref . "_USER_ID"], "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin())) { $gruLink = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_REQUEST_USER"], array("user_id" => $arFriends[$pref . "_USER_ID"], "group_id" => $arParams["GROUP_ID"])); } } $arResult["Friends"]["List"][] = array("ID" => $arFriends["ID"], "USER_ID" => $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", "ADD_TO_FRIENDS_LINK" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS_ADD"], array("user_id" => $arFriends[$pref . "_USER_ID"])), "DELETE_FROM_FRIENDS_LINK" => CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER_FRIENDS_DELETE"], array("user_id" => $arFriends[$pref . "_USER_ID"])), "CAN_ADD2FRIENDS" => !$arResult["CurrentUserPerms"]["IsCurrentUser"] && !$rel && $arFriends[$pref . "_USER_ID"] != $GLOBALS["USER"]->GetID() ? true : false, "CAN_DELETE_FRIEND" => $arResult["CurrentUserPerms"]["IsCurrentUser"] && $rel == SONET_RELATIONS_FRIEND ? true : false, "REQUEST_GROUP_LINK" => $gruLink); } $arResult["NAV_STRING"] = $dbFriends->GetPageNavStringEx($navComponentObject, GetMessage("SONET_C33_NAV"), "", false); } } } } } $this->IncludeComponentTemplate();
public static function InitUserTmp($userID, $arParams, $bCurrentUserIsAdmin = "unknown", $bRSS = false) { $title = ""; $message = ""; $bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false; $dbUser = CUser::GetByID($userID); if ($arUser = $dbUser->Fetch()) { if ($bCurrentUserIsAdmin == "unknown") $bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin(); $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "viewprofile", $bCurrentUserIsAdmin); $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"])); if (!$bRSS && $canViewProfile) $title .= "<a href=\"".$pu."\">"; $title .= CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin); if (!$bRSS && $canViewProfile) $title .= "</a>"; 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"], 100, "/bitrix/images/socialnetwork/nopic_user_100.gif", 100, $pu, $canViewProfile); $message = $arImage["IMG"]; } return array($title, $message); }
LocalRedirect($APPLICATION->GetCurPageParam("invite_sent=Y", array("invite_user_id", "employee"))); } } } $parser = new CSocNetTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]); $arResult["Requests"] = false; $dbRequests = CSocNetUserToGroup::GetList(array("DATE_CREATE" => "ASC"), array("GROUP_ID" => $arResult["Group"]["ID"], "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP), false, $arNavParams, array("ID", "USER_ID", "DATE_CREATE", "DATE_UPDATE", "MESSAGE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER")); if ($dbRequests) { $arResult["Requests"] = array(); $arResult["Requests"]["List"] = false; while ($arRequests = $dbRequests->GetNext()) { if ($arResult["Requests"]["List"] == false) { $arResult["Requests"]["List"] = array(); } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arRequests["USER_ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $arRequests["USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); if (intval($arRequests["USER_PERSONAL_PHOTO"]) <= 0) { switch ($arRequests["USER_PERSONAL_GENDER"]) { case "M": $suffix = "male"; break; case "F": $suffix = "female"; break; default: $suffix = "unknown"; } $arRequests["USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID); } $arImage = CSocNetTools::InitImage($arRequests["USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile); $arResult["Requests"]["List"][] = array("ID" => $arRequests["ID"], "USER_ID" => $arRequests["USER_ID"], "USER_NAME" => $arRequests["USER_NAME"], "USER_LAST_NAME" => $arRequests["USER_LAST_NAME"], "USER_SECOND_NAME" => $arRequests["USER_SECOND_NAME"], "USER_LOGIN" => $arRequests["USER_LOGIN"], "USER_PERSONAL_PHOTO" => $arRequests["USER_PERSONAL_PHOTO"], "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"], "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"], "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "DATE_CREATE" => FormatDateFromDB($arRequests["DATE_CREATE"]), "MESSAGE" => $parser->convert($arRequests["~MESSAGE"], false, array(), array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LIST" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "SMILES" => "Y", "UPLOAD" => "N", "NL2BR" => "N")));
$this->IncludeComponentTemplate(); $r = $APPLICATION->EndBufferContentMan(); echo $r; die; } if (intval($arGroup["IMAGE_ID"]) <= 0) { $arGroup["IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID); } $arResult["PICTURE"] = CSocNetTools::InitImage($arGroup["IMAGE_ID"], 100, "/bitrix/images/socialnetwork/nopic_group_100.gif", 100, "", false); $arResult["PICTURE"]["FILE"]["SRC"] = __RSSCheckServerName($arResult["PICTURE"]["FILE"]["SRC"], $arResult["SERVER_NAME"]); $arResult["NAME"] = $arGroup["NAME"]; $arResult["DESCRIPTION"] = $arGroup["DESCRIPTION"]; $arResult["URL"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arParams["ENTITY_ID"])); $arResult["URL"] = htmlspecialcharsbx(__RSSCheckServerName($arResult["URL"], $arResult["SERVER_NAME"])); } else { $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), ${$arParams}["ENTITY_ID"], "viewprofile", $bCurrentUserIsAdmin); if (!$canViewProfile) { $APPLICATION->RestartBuffer(); $arResult["NAME"] = GetMessage("SONET_LOG_RSS_ERROR"); $arResult["Events"] = array(array("LOG_DATE" => date("r"), "TITLE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_TITLE")), "MESSAGE_FORMAT" => htmlspecialcharsbx(GetMessage("SONET_LOG_RSS_USER_NO_PERMS_MESSAGE")), "URL" => "")); $this->IncludeComponentTemplate(); $r = $APPLICATION->EndBufferContentMan(); echo $r; die; } $rsUser = CUser::GetByID($arParams["ENTITY_ID"]); if ($arUser = $rsUser->GetNext()) { if (intval($arUser["PERSONAL_PHOTO"]) <= 0) { switch ($arUser["PERSONAL_GENDER"]) { case "M": $suffix = "male";
public function ReceiveMessage($senderJId, array $arMessage, CXMPPClient $senderClient) { if (!$senderClient->IsAuthenticated()) { return false; } if (strlen($senderJId) <= 0) { return false; } if (!array_key_exists("message", $arMessage) || !array_key_exists(".", $arMessage["message"])) { return false; } $type = "normal"; if (array_key_exists("type", $arMessage["message"]["."])) { $type = $arMessage["message"]["."]["type"]; } if ($type == "error") { return false; } $mid = ""; if (array_key_exists("id", $arMessage["message"]["."])) { $mid = $arMessage["message"]["."]["id"]; } if (!in_array($type, array("chat", "groupchat", "headline", "normal"))) { return CXMPPUtility::GetErrorArray($senderJId, "message", "modify", "bad-request", "", $mid, "", $senderClient->GetClientDomain()); } $recipientJId = ""; if (array_key_exists("to", $arMessage["message"]["."])) { $recipientJId = $arMessage["message"]["."]["to"]; } if (strlen($recipientJId) <= 0) { return CXMPPUtility::GetErrorArray($senderJId, "message", "modify", "bad-request", "", $mid, "", $senderClient->GetClientDomain()); } $body = ""; if (array_key_exists("body", $arMessage["message"])) { $body = $arMessage["message"]["body"]["#"]; } if (strlen($body) <= 0) { return true; } //$body = CXMPPReceiveMessage::htmlspecialcharsback($body); //$body = html_entity_decode($body); $body = html_entity_decode($body, ENT_COMPAT, SITE_CHARSET); $body = str_replace("'", "'", $body); $arSender = CXMPPUtility::GetUserByJId($senderJId); if (!$arSender) { return CXMPPUtility::GetErrorArray($senderJId, "message", "auth", "forbidden", $recipientJId, $mid, "", $senderClient->GetClientDomain()); } $arRecipient = CXMPPUtility::GetUserByJId($recipientJId); if (!$arRecipient) { return CXMPPUtility::GetErrorArray($senderJId, "message", "cancel", "item-not-found", $recipientJId, $mid, "", $senderClient->GetClientDomain()); } if (!CSocNetUserPerms::CanPerformOperation($arSender["ID"], $arRecipient["ID"], "message", false)) { return CXMPPUtility::GetErrorArray($senderJId, "message", "auth", "forbidden", $recipientJId, $mid, "", $senderClient->GetClientDomain()); } if (IsModuleInstalled("im") && CModule::IncludeModule("im")) { $arMessageFields = array("FROM_USER_ID" => $arSender["ID"], "TO_USER_ID" => $arRecipient["ID"], "MESSAGE" => $body); CIMMessage::Add($arMessageFields); } else { $arMessageFields = array("=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_PRIVATE, "FROM_USER_ID" => $arSender["ID"], "TO_USER_ID" => $arRecipient["ID"], "MESSAGE" => $body); CSocNetMessages::Add($arMessageFields); } return true; }
$arParams["NAME_TEMPLATE"] = CSite::GetNameFormat(); } $bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false; if (!$USER->IsAuthorized()) { $arResult["NEED_AUTH"] = "Y"; } else { $dbUser = CUser::GetByID($arParams["USER_ID"]); $arResult["User"] = $dbUser->GetNext(); if (!is_array($arResult["User"])) { $arResult["FatalError"] = GetMessage("SONET_P_USER_NO_USER") . ". "; } else { $arResult["IsCurrentUser"] = $GLOBALS["USER"]->GetID() == $arResult["User"]["ID"]; $arResult["CurrentUserRelation"] = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"]); $arResult["CurrentUserPerms"]["ViewProfile"] = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $arResult["CurrentUserPerms"]["ModifyUser"] = $GLOBALS["USER"]->GetID() == $arResult["User"]["ID"] || CSocNetUser::IsCurrentUserModuleAdmin(); $arResult["CurrentUserPerms"]["Message"] = IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin()); $arResult["Urls"]["User"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"])); $arResult["Urls"]["MessagesInput"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_INPUT"], array()); $arResult["Urls"]["MessagesOutput"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_MESSAGES_OUTPUT"], array()); $arResult["User"]["NAME_FORMATTED"] = CUser::FormatName($arParams['NAME_TEMPLATE'], $arResult["User"], $bUseLogin); if ($arParams["SET_TITLE"] == "Y" || $arParams["SET_NAV_CHAIN"] != "N") { $arParams["TITLE_NAME_TEMPLATE"] = str_replace(array("#NOBR#", "#/NOBR#"), array("", ""), $arParams["NAME_TEMPLATE"]); $strTitleFormatted = CUser::FormatName($arParams['TITLE_NAME_TEMPLATE'], $arResult["User"], $bUseLogin); } if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle($strTitleFormatted . ": " . GetMessage("SONET_C26_PAGE_TITLE")); } if ($arParams["SET_NAV_CHAIN"] != "N") { $APPLICATION->AddChainItem($strTitleFormatted, $arResult["Urls"]["User"]); $APPLICATION->AddChainItem(GetMessage("SONET_C26_PAGE_TITLE")); }
$arData[] = $arTmpData; } // while $arFilter = array("TO_USER_ID" => $GLOBALS["USER"]->GetID(), "DATE_VIEW" => "", "TO_DELETED" => "N"); if ($log == "Y") { $arFilter["IS_LOG_ALL"] = "Y"; } $dbUserRequests = CSocNetMessages::GetList(array("DATE_CREATE" => "ASC"), $arFilter, false, array("nTopCount" => 50), array("ID", "FROM_USER_ID", "TITLE", "MESSAGE", "DATE_CREATE", "MESSAGE_TYPE", "FROM_USER_NAME", "FROM_USER_LAST_NAME", "FROM_USER_SECOND_NAME", "FROM_USER_LOGIN", "FROM_USER_PERSONAL_PHOTO", "FROM_USER_PERSONAL_GENDER", "FROM_USER_IS_ONLINE", "IS_LOG")); while ($arUserRequests = $dbUserRequests->GetNext()) { $arTmpData = array(); $arTmpData["TYPE"] = "M"; $arTmpData["IS_LOG"] = $arUserRequests["IS_LOG"]; $arTmpData["MESSAGE_TYPE"] = $arUserRequests["MESSAGE_TYPE"]; $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserRequests["FROM_USER_ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUserRequests["FROM_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin($site)); $canAnsver = IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUserRequests["FROM_USER_ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin($site)); $arTmpData["IMAGE_USER"] = "******"; if (intval($arUserRequests["FROM_USER_PERSONAL_PHOTO"]) <= 0) { switch ($arUserRequests["FROM_USER_PERSONAL_GENDER"]) { case "M": $suffix = "male"; break; case "F": $suffix = "female"; break; default: $suffix = "unknown"; } $arUserRequests["FROM_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, $site); } if (intval($arUserRequests["FROM_USER_PERSONAL_PHOTO"]) > 0) {
} } $rsRequestsIn = new CDBResult(); $rsRequestsIn->InitFromArray($arTmpResult["RequestsIn"]); $rsRequestsIn->NavStart(); while ($arRecord = $rsRequestsIn->GetNext()) { $arResult["RequestsIn"]["List"][] = $arRecord; } $arResult["RequestsIn"]["NAV_STRING"] = $rsRequestsIn->GetPageNavStringEx($navComponentObject, GetMessage("SONET_URE_NAV"), "", false); /********************* Outogoing Requests ***********************/ /* Friends Outgoing */ $arResult["RequestsOut"] = array(); $dbUserRequests = CSocNetUserRelations::GetList(array("DATE_UPDATE" => "ASC"), array("FIRST_USER_ID" => $arParams["USER_ID"], "RELATION" => SONET_RELATIONS_REQUEST), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID", "MESSAGE", "SECOND_USER_NAME", "DATE_UPDATE", "SECOND_USER_LAST_NAME", "SECOND_USER_SECOND_NAME", "SECOND_USER_LOGIN", "SECOND_USER_PERSONAL_PHOTO", "SECOND_USER_PERSONAL_GENDER", "SECOND_USER_IS_ONLINE")); while ($arUserRequest = $dbUserRequests->GetNext()) { $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserRequest["SECOND_USER_ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($arParams["USER_ID"], $arUserRequest["SECOND_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); if (intval($arParams["THUMBNAIL_LIST_SIZE"]) > 0) { if (intval($arUserRequest["SECOND_USER_PERSONAL_PHOTO"]) <= 0) { switch ($arUserRequest["SECOND_USER_PERSONAL_GENDER"]) { case "M": $suffix = "male"; break; case "F": $suffix = "female"; break; default: $suffix = "unknown"; } $arUserRequest["SECOND_USER_PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID); } $arImage = CFile::ResizeImageGet($arUserRequest["SECOND_USER_PERSONAL_PHOTO"], array("width" => $arParams["THUMBNAIL_LIST_SIZE"], "height" => $arParams["THUMBNAIL_LIST_SIZE"]), BX_RESIZE_IMAGE_EXACT, false);
if (!$arParams["SHORT_FORM"]) { // USER FRIENDS $arResult["Friends"] = false; if (CSocNetUser::IsFriendsAllowed() && $arResult["CurrentUserPerms"]["Operations"]["viewfriends"]) { $dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["User"]["ID"], SONET_RELATIONS_FRIEND, array("nTopCount" => $arParams["ITEMS_COUNT"])); if ($dbFriends) { $arResult["Friends"] = array(); $arResult["Friends"]["Count"] = CSocNetUserRelations::GetList(array(), array("USER_ID" => $arResult["User"]["ID"], "RELATION" => SONET_RELATIONS_FRIEND), array()); $arResult["Friends"]["List"] = false; while ($arFriends = $dbFriends->GetNext()) { if ($arResult["Friends"]["List"] == false) { $arResult["Friends"]["List"] = array(); } $pref = IntVal($arResult["User"]["ID"]) == $arFriends["FIRST_USER_ID"] ? "SECOND" : "FIRST"; $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arFriends[$pref . "_USER_ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["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);
$arUserIDs[] = $ID_ADDED; } } } // send invitations if (is_array($arUserIDs) && count($arUserIDs) > 0) { foreach ($arUserIDs as $user_id) { $isCurrentUserTmp = $USER->GetID() == $user_id; $canInviteGroup = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $user_id, "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin()); $user2groupRelation = CSocNetUserToGroup::GetUserRole($user_id, $arResult["GROUP_ID"]); if (!$isCurrentUserTmp && $canInviteGroup && !$user2groupRelation) { $bMail = !is_array($arInvitedExtranetUsers) || !in_array($user_id, $arInvitedExtranetUsers); if (!CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $user_id, $arResult["GROUP_ID"], $_POST["MESSAGE"], $bMail)) { $rsUser = CUser::GetByID($user_id); if ($arUser = $rsUser->Fetch()) { $arErrorUsers[] = array(CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, $bUseLogin), 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(); } } } elseif (is_array($arResult["POST"]["USER_IDS"]) && in_array($user_id, $arResult["POST"]["USER_IDS"])) { $bInvited = true; // delete from uninvited users list $arKeysFound = array_keys($arResult["POST"]["USER_IDS"], $user_id); foreach ($arKeysFound as $key) { unset($arResult["POST"]["USER_IDS"][$key]); } } } else { if (!$isCurrentUserTmp && $canInviteGroup && $user2groupRelation) { $rsUser = CUser::GetByID($user_id);
if (in_array($arUser["ID"], $arUsersInListID)) { continue; } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($arResult["UserSelf"]["ID"], $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arUser, $bUseLogin); $arResult["Friends"][] = array("USER_ID" => $arUser["ID"], "USER_NAME" => $arUser["NAME"], "USER_LAST_NAME" => $arUser["LAST_NAME"], "USER_SECOND_NAME" => $arUser["SECOND_NAME"], "USER_LOGIN" => $arUser["LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arUser["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]), "IS_ONLINE" => $arUser["IS_ONLINE"] == "Y"); } } //Recent users $arResult["RecentUsers"] = array(); $arNavParams = array("nPageSize" => 20, "bDescPageNumbering" => false); $dbMessages = CSocNetMessages::GetMessagesUsers($GLOBALS["USER"]->GetID(), $arNavParams); while ($arMessages = $dbMessages->GetNext()) { $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arMessages["ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $arTmpUser = array("NAME" => $arMessages["~NAME"], "LAST_NAME" => $arMessages["~LAST_NAME"], "SECOND_NAME" => $arMessages["~SECOND_NAME"], "LOGIN" => $arMessages["~LOGIN"]); $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin); $arResult["RecentUsers"][] = array("USER_ID" => $arMessages["ID"], "USER_NAME" => $arMessages["NAME"], "USER_LAST_NAME" => $arMessages["LAST_NAME"], "USER_SECOND_NAME" => $arMessages["SECOND_NAME"], "USER_LOGIN" => $arMessages["LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfile, "PATH_TO_MESSAGES_CHAT" => str_replace("#user_id#", $arMessages["ID"], $arParams["PATH_TO_MESSAGES_CHAT"]), "IS_ONLINE" => $arMessages["IS_ONLINE"] == "Y"); } $arResult["PrintSmilesList"] = CSocNetSmile::PrintSmilesList(0, LANGUAGE_ID, $arParams["PATH_TO_SMILE"]); $strNow = CSocNetMessages::Now(); $strNow_ts = MakeTimeStamp($strNow, "YYYY-MM-DD HH:MI:SS") + CTimeZone::GetOffset(); $arResult["Now"] = date("Y-m-d H:i:s", $strNow_ts); //user options require_once $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/classes/" . strtolower($GLOBALS['DB']->type) . "/favorites.php"; $arResult["USER_OPTIONS"] = CUserOptions::GetOption('socnet', 'chat', array()); if ($arResult["USER_OPTIONS"]["sound"] != "N") { $arResult["USER_OPTIONS"]["sound"] = "Y"; } if ($arResult["USER_OPTIONS"]["contacts"] != "Y") {
while ($arGroupSite = $rsGroupSite->Fetch()) { $arGroupSites[] = $arGroupSite["LID"]; } if (!in_array(SITE_ID, $arGroupSites)) { $arResult["FatalError"] = GetMessage("SONET_P_USER_NO_GROUP"); } else { $arResult["Group"] = $arGroup; $arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arResult["Group"]["ID"])); $arResult["CurrentUserPerms"] = CSocNetUserToGroup::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["Group"], CSocNetUser::IsCurrentUserModuleAdmin()); if (!$arResult["CurrentUserPerms"] || !$arResult["CurrentUserPerms"]["UserCanInitiate"]) { $arResult["FatalError"] = GetMessage("SONET_C11_NO_PERMS") . ". "; } else { $arResult["IsCurrentUser"] = $GLOBALS["USER"]->GetID() == $arResult["User"]["ID"]; $arResult["CurrentUserRelation"] = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"]); $arResult["CurrentUserPerms"]["ViewProfile"] = $arResult["IsCurrentUser"] || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $arResult["CurrentUserPerms"]["InviteGroup"] = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin()); $user2groupRelation = CSocNetUserToGroup::GetUserRole($arResult["User"]["ID"], $arResult["Group"]["ID"]); if ($arResult["IsCurrentUser"]) { $arResult["FatalError"] = GetMessage("SONET_C11_ERR_SELF") . ". "; } elseif (!$arResult["CurrentUserPerms"]["InviteGroup"]) { $arResult["FatalError"] = GetMessage("SONET_C11_BAD_USER") . ". "; } elseif ($user2groupRelation) { $arResult["FatalError"] = GetMessage("SONET_C11_BAD_RELATION") . ". "; } else { $arResult["ShowForm"] = "Input"; if ($_SERVER["REQUEST_METHOD"] == "POST" && strlen($_POST["save"]) > 0 && check_bitrix_sessid()) { $errorMessage = ""; if (strlen($_POST["MESSAGE"]) <= 0) { $errorMessage .= GetMessage("SONET_C11_NO_MESSAGE") . ". "; } if (strlen($errorMessage) <= 0 && !CSocNetUserToGroup::SendRequestToJoinGroup($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], $arResult["Group"]["ID"], $_POST["MESSAGE"]) && ($e = $APPLICATION->GetException())) {
$arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures(); $arParams["LOG_DATE_DAYS"] = IntVal($arParams["LOG_DATE_DAYS"]); if ($arParams["LOG_DATE_DAYS"] <= 0) { $arParams["LOG_DATE_DAYS"] = 7; } $arParams["AUTH"] = StrToUpper($arParams["AUTH"]) == "Y" ? "Y" : "N"; $arParams["EVENT_ID"] = array_key_exists("EVENT_ID", $arParams) && strlen($arParams["EVENT_ID"]) > 0 ? $arParams["EVENT_ID"] : false; $arParams["LOG_CNT"] = array_key_exists("LOG_CNT", $arParams) && intval($arParams["LOG_CNT"]) > 0 ? $arParams["LOG_CNT"] : 0; if ($arParams["USER_ID"] <= 0) { ShowError(GetMessage("SONET_ACTIVITY_NO_USER")); return; } $bCurrentUserIsAdmin = CSocNetUser::IsCurrentUserModuleAdmin(); $dbUser = CUser::GetByID($arParams["USER_ID"]); if ($arUser = $dbUser->Fetch()) { $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUser["ID"], "viewprofile", $bCurrentUserIsAdmin); if ($canViewProfile) { $arResult["Features"] = array("all", "system", "system_groups"); if (CSocnetUser::IsFriendsAllowed()) { $arResult["Features"][] = "system_friends"; } if (IsModuleInstalled("forum")) { $arResult["Features"][] = "forum"; } if (IsModuleInstalled("blog")) { $arResult["Features"][] = "blog"; } if (IsModuleInstalled("photogallery")) { $arResult["Features"][] = "photo"; } if (IsModuleInstalled("intranet")) {
/********************* END ACTIONS *****************************/ if ($arParams["SET_TITLE"] == "Y") { $APPLICATION->SetTitle(GetMessage("SONET_C30_PAGE_TITLE")); } if ($arParams["SET_NAV_CHAIN"] != "N") { $APPLICATION->AddChainItem(GetMessage("SONET_C30_PAGE_TITLE")); } $arResult["Events"] = false; $dbMessages = CSocNetMessages::GetMessagesUsers($GLOBALS["USER"]->GetID(), $arNavParams); while ($arMessages = $dbMessages->GetNext()) { if ($arResult["Events"] == false) { $arResult["Events"] = array(); } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arMessages["ID"])); $canViewProfile = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $canAnsver = $arMessages["ACTIVE"] != "N" && (IsModuleInstalled("im") || CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arMessages["ID"], "message", CSocNetUser::IsCurrentUserModuleAdmin())); $relation = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arMessages["ID"]); if (intval($arMessages["PERSONAL_PHOTO"]) <= 0) { switch ($arMessages["PERSONAL_GENDER"]) { case "M": $suffix = "male"; break; case "F": $suffix = "female"; break; default: $suffix = "unknown"; } $arMessages["PERSONAL_PHOTO"] = COption::GetOptionInt("socialnetwork", "default_user_picture_" . $suffix, false, SITE_ID); } $arImage = CSocNetTools::InitImage($arMessages["PERSONAL_PHOTO"], 100, "/bitrix/images/socialnetwork/nopic_user_100.gif", 100, $pu, $canViewProfile);
public static function inviteGroupUsers($arFields) { global $USER; $groupID = $arFields['GROUP_ID']; $arUserID = $arFields['USER_ID']; $message = $arFields['MESSAGE']; if(intval($groupID) <= 0) throw new Exception('Wrong group ID'); if ( (is_array($arUserID) && count($arUserID) <= 0) || (!is_array($arUserID) && intval($arUserID) <= 0) ) throw new Exception('Wrong user IDs'); if (!is_array($arUserID)) $arUserID = array($arUserID); $arSuccessID = array(); $dbRes = CSocNetGroup::GetList(array(), array( "ID" => $groupID, "CHECK_PERMISSIONS" => $USER->GetID(), )); $arGroup = $dbRes->Fetch(); if(is_array($arGroup)) { foreach($arUserID as $user_id) { $isCurrentUserTmp = ($USER->GetID() == $user_id); $canInviteGroup = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $user_id, "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin(SITE_ID, false)); $user2groupRelation = CSocNetUserToGroup::GetUserRole($user_id, $arGroup["ID"]); if ( !$isCurrentUserTmp && $canInviteGroup && !$user2groupRelation && CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $user_id, $arGroup["ID"], $message, true) ) $arSuccessID[] = $user_id; } } else throw new Exception('Socialnetwork group not found'); return $arSuccessID; }
$arImage = CSocNetTools::InitImage($arUserRequests["FIRST_USER_PERSONAL_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfile); $arTmpUser = array("NAME" => $arUserRequests["FIRST_USER_NAME"], "LAST_NAME" => $arUserRequests["FIRST_USER_LAST_NAME"], "SECOND_NAME" => $arUserRequests["FIRST_USER_SECOND_NAME"], "LOGIN" => $arUserRequests["FIRST_USER_LOGIN"]); $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin); $arEventTmp["Event"] = array("ID" => $arUserRequests["ID"], "USER_ID" => $arUserRequests["FIRST_USER_ID"], "USER_NAME" => $arUserRequests["FIRST_USER_NAME"], "USER_LAST_NAME" => $arUserRequests["FIRST_USER_LAST_NAME"], "USER_SECOND_NAME" => $arUserRequests["FIRST_USER_SECOND_NAME"], "USER_LOGIN" => $arUserRequests["FIRST_USER_LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PERSONAL_PHOTO" => $arUserRequests["FIRST_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" => $arUserRequests["FIRST_USER_IS_ONLINE"] == "Y", "DATE_UPDATE" => $arUserRequests["DATE_UPDATE"], "MESSAGE" => $parser->convert($arUserRequests["~MESSAGE"], false, array(), array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LIST" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "SMILES" => "Y", "UPLOAD" => "N", "NL2BR" => "N"))); $arEventTmp["Urls"]["FriendAdd"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=FriendRequest&eventID=" . $arUserRequests["ID"] . "&action=add&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action"))))); $arEventTmp["Urls"]["FriendReject"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=FriendRequest&eventID=" . $arUserRequests["ID"] . "&action=reject&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action"))))); $arResult["Events"][] = $arEventTmp; } $dbUserRequests = CSocNetUserToGroup::GetList(array("DATE_CREATE" => "ASC"), array("USER_ID" => $GLOBALS["USER"]->GetID(), "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP), false, false, array("ID", "INITIATED_BY_USER_ID", "MESSAGE", "INITIATED_BY_USER_NAME", "DATE_CREATE", "INITIATED_BY_USER_LAST_NAME", "INITIATED_BY_USER_SECOND_NAME", "INITIATED_BY_USER_LOGIN", "INITIATED_BY_USER_PHOTO", "GROUP_ID", "GROUP_NAME", "GROUP_IMAGE_ID", "GROUP_VISIBLE")); while ($arUserRequests = $dbUserRequests->GetNext()) { if ($arResult["Events"] == false) { $arResult["Events"] = array(); } $arEventTmp["EventType"] = "GroupRequest"; $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUserRequests["INITIATED_BY_USER_ID"])); $canViewProfileU = CSocNetUserPerms::CanPerformOperation($GLOBALS["USER"]->GetID(), $arUserRequests["INITIATED_BY_USER_ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()); $arImage = CSocNetTools::InitImage($arUserRequests["INITIATED_BY_USER_PHOTO"], 150, "/bitrix/images/socialnetwork/nopic_user_150.gif", 150, $pu, $canViewProfileU); $pg = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arUserRequests["GROUP_ID"])); $canViewProfileG = CSocNetUser::IsCurrentUserModuleAdmin() || $arUserRequests["GROUP_VISIBLE"] == "Y"; if (intval($arUserRequests["GROUP_IMAGE_ID"]) <= 0) { $arUserRequests["GROUP_IMAGE_ID"] = COption::GetOptionInt("socialnetwork", "default_group_picture", false, SITE_ID); } $arImageG = CSocNetTools::InitImage($arUserRequests["GROUP_IMAGE_ID"], 150, "/bitrix/images/socialnetwork/nopic_group_150.gif", 150, $pg, $canViewProfileG); $arTmpUser = array("NAME" => $arUserRequests["INITIATED_BY_USER_NAME"], "LAST_NAME" => $arUserRequests["INITIATED_BY_USER_LAST_NAME"], "SECOND_NAME" => $arUserRequests["INITIATED_BY_USER_SECOND_NAME"], "LOGIN" => $arUserRequests["INITIATED_BY_USER_LOGIN"]); $strNameFormatted = CUser::FormatName($arParams['NAME_TEMPLATE'], $arTmpUser, $bUseLogin); $arEventTmp["Event"] = array("ID" => $arUserRequests["ID"], "USER_ID" => $arUserRequests["INITIATED_BY_USER_ID"], "USER_NAME" => $arUserRequests["INITIATED_BY_USER_NAME"], "USER_LAST_NAME" => $arUserRequests["INITIATED_BY_USER_LAST_NAME"], "USER_SECOND_NAME" => $arUserRequests["INITIATED_BY_USER_SECOND_NAME"], "USER_LOGIN" => $arUserRequests["INITIATED_BY_USER_LOGIN"], "USER_NAME_FORMATTED" => $strNameFormatted, "USER_PERSONAL_PHOTO" => $arUserRequests["INITIATED_BY_USER_PHOTO"], "USER_PERSONAL_PHOTO_FILE" => $arImage["FILE"], "USER_PERSONAL_PHOTO_IMG" => $arImage["IMG"], "USER_PROFILE_URL" => $pu, "SHOW_PROFILE_LINK" => $canViewProfileU, "DATE_CREATE" => $arUserRequests["DATE_CREATE"], "GROUP_NAME" => $arUserRequests["GROUP_NAME"], "GROUP_IMAGE_ID" => $arUserRequests["GROUP_IMAGE_ID"], "GROUP_IMAGE_ID_FILE" => $arImageG["FILE"], "GROUP_IMAGE_ID_IMG" => $arImageG["IMG"], "GROUP_PROFILE_URL" => $pg, "SHOW_GROUP_LINK" => $canViewProfileG, "MESSAGE" => $parser->convert($arUserRequests["~MESSAGE"], false, array(), array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "LIST" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "SMILES" => "Y", "UPLOAD" => "N", "NL2BR" => "N"))); $arEventTmp["Urls"]["FriendAdd"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=GroupRequest&eventID=" . $arUserRequests["ID"] . "&action=add&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action"))))); $arEventTmp["Urls"]["FriendReject"] = htmlspecialcharsbx($APPLICATION->GetCurUri("EventType=GroupRequest&eventID=" . $arUserRequests["ID"] . "&action=reject&" . bitrix_sessid_get() . "&backurl=" . urlencode($GLOBALS["APPLICATION"]->GetCurPageParam("", array("EventType", "eventID", "action"))))); $arResult["Events"][] = $arEventTmp; } $this->IncludeComponentTemplate();