function UserConfirmRequestToBeMember($targetUserID, $relationID, $bAutoSubscribe = true) { global $APPLICATION; $targetUserID = IntVal($targetUserID); if ($targetUserID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_USERID"), "ERROR_SENDER_USER_ID"); return false; } $relationID = IntVal($relationID); if ($relationID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_RELATIONID"), "ERROR_RELATION_ID"); return false; } $dbResult = CSocNetUserToGroup::GetList(array(), array("ID" => $relationID, "USER_ID" => $targetUserID, "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP), false, false, array("ID", "USER_ID", "INITIATED_BY_USER_ID", "GROUP_ID", "GROUP_VISIBLE", "GROUP_SITE_ID", "GROUP_NAME")); if ($arResult = $dbResult->Fetch()) { $arFields = array("ROLE" => SONET_ROLES_USER, "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction()); if (CSocNetUserToGroup::Update($arResult["ID"], $arFields)) { $events = GetModuleEvents("socialnetwork", "OnSocNetUserConfirmRequestToBeMember"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($arResult["ID"], $arResult)); } if ($bAutoSubscribe) { CSocNetLogEvents::AutoSubscribe($targetUserID, SONET_ENTITY_GROUP, $arResult["GROUP_ID"]); } if (CModule::IncludeModule("im")) { $groupSiteId = CSocNetGroup::GetDefaultSiteId($arResult["GROUP_ID"], $arResult["GROUP_SITE_ID"]); CIMNotify::DeleteByTag("SOCNET|INVITE_GROUP|" . intval($targetUserID) . "|" . intval($relationID)); $workgroupsPage = COption::GetOptionString("socialnetwork", "workgroups_page", "/workgroups/", $groupSiteId); $groupUrlTemplate = COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/", $groupSiteId); $groupUrlTemplate = "#GROUPS_PATH#" . substr($groupUrlTemplate, strlen($workgroupsPage), strlen($groupUrlTemplate) - strlen($workgroupsPage)); $groupUrl = str_replace(array("#group_id#", "#GROUP_ID#"), $arResult["GROUP_ID"], $groupUrlTemplate); $arTmp = CSocNetLogTools::ProcessPath(array("GROUP_URL" => $groupUrl), $arResult["INITIATED_BY_USER_ID"], $groupSiteId); $url = $arTmp["URLS"]["GROUP_URL"]; $serverName = strpos($url, "http://") === 0 || strpos($url, "https://") === 0 ? "" : $arTmp["SERVER_NAME"]; $domainName = strpos($url, "http://") === 0 || strpos($url, "https://") === 0 ? "" : (isset($arTmp["DOMAIN"]) && !empty($arTmp["DOMAIN"]) ? "//" . $arTmp["DOMAIN"] : ""); $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arResult["INITIATED_BY_USER_ID"], "FROM_USER_ID" => $arResult['USER_ID'], "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "invite_group", "NOTIFY_TAG" => "SOCNET|INVITE_GROUP_SUCCESS|" . intval($arResult["GROUP_ID"]), "NOTIFY_MESSAGE" => str_replace("#NAME#", "<a href=\"" . $domainName . $url . "\" class=\"bx-notifier-item-action\">" . $arResult["GROUP_NAME"] . "</a>", GetMessage("SONET_UG_CONFIRM_MEMBER_MESSAGE")), "NOTIFY_MESSAGE_OUT" => str_replace("#NAME#", $arResult["GROUP_NAME"], GetMessage("SONET_UG_CONFIRM_MEMBER_MESSAGE") . " (" . $serverName . $url . ")")); CIMNotify::Add($arMessageFields); $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arResult['USER_ID'], "NOTIFY_TYPE" => IM_NOTIFY_SYSTEM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "invite_group", "NOTIFY_TAG" => "SOCNET|INVITE_GROUP|" . intval($arResult['USER_ID']) . "|" . $relationID, "NOTIFY_MESSAGE" => str_replace("#NAME#", "<a href=\"" . $domainName . $url . "\" class=\"bx-notifier-item-action\">" . $arResult["GROUP_NAME"] . "</a>", GetMessage("SONET_UG_CONFIRM_MEMBER_MESSAGE_G")), "NOTIFY_MESSAGE_OUT" => str_replace("#NAME#", $arResult["GROUP_NAME"], GetMessage("SONET_UG_CONFIRM_MEMBER_MESSAGE_G") . " (" . $serverName . $url . ")")); CIMNotify::Add($arMessageFields); $arNotifyParams = array("TYPE" => "join", "RELATION_ID" => $arResult["ID"], "USER_ID" => $arResult["USER_ID"], "GROUP_ID" => $arResult["GROUP_ID"], "GROUP_NAME" => htmlspecialcharsbx($arResult["GROUP_NAME"]), "EXCLUDE_USERS" => array($arResult["INITIATED_BY_USER_ID"])); CSocNetUserToGroup::NotifyImToModerators($arNotifyParams); } } else { $errorMessage = ""; if ($e = $APPLICATION->GetException()) { $errorMessage = $e->GetString(); } if (StrLen($errorMessage) <= 0) { $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_USER2GROUP"); } $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION"); return false; } } else { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_NO_USER2GROUP"), "ERROR_NO_GROUP_REQUEST"); return false; } CSocNetUserToGroup::__SpeedFileCheckMessages($targetUserID); return true; }
function CreateGroup($ownerID, $arFields, $bAutoSubscribe = true) { global $APPLICATION, $DB; $ownerID = IntVal($ownerID); if ($ownerID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_OWNERID") . ". ", "ERROR_OWNERID"); return false; } if (!isset($arFields) || !is_array($arFields)) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_FIELDS") . ". ", "ERROR_FIELDS"); return false; } $DB->StartTransaction(); $arFields["=DATE_CREATE"] = $GLOBALS["DB"]->CurrentTimeFunction(); $arFields["=DATE_UPDATE"] = $GLOBALS["DB"]->CurrentTimeFunction(); $arFields["=DATE_ACTIVITY"] = $GLOBALS["DB"]->CurrentTimeFunction(); $arFields["ACTIVE"] = "Y"; $arFields["OWNER_ID"] = $ownerID; if (!is_set($arFields, "SPAM_PERMS") || strlen($arFields["SPAM_PERMS"]) <= 0) { $arFields["SPAM_PERMS"] = SONET_ROLES_OWNER; } $groupID = CSocNetGroup::Add($arFields); if (!$groupID || IntVal($groupID) <= 0) { $errorMessage = ""; if ($e = $APPLICATION->GetException()) { $errorMessage = $e->GetString(); $errorID = $e->GetID(); if (StrLen($errorID) <= 0 && isset($e->messages) && is_array($e->messages) && is_array($e->messages[0]) && array_key_exists("id", $e->messages[0])) { $errorID = $e->messages[0]["id"]; } } if (StrLen($errorMessage) <= 0) { $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_GROUP") . ". "; } if (StrLen($errorID) <= 0) { $errorID = "ERROR_CREATE_GROUP"; } $GLOBALS["APPLICATION"]->ThrowException($errorMessage, $errorID); $DB->Rollback(); return false; } $arFields1 = array("USER_ID" => $ownerID, "GROUP_ID" => $groupID, "ROLE" => SONET_ROLES_OWNER, "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER, "INITIATED_BY_USER_ID" => $ownerID, "MESSAGE" => false); if (!CSocNetUserToGroup::Add($arFields1)) { $errorMessage = ""; if ($e = $APPLICATION->GetException()) { $errorMessage = $e->GetString(); } if (StrLen($errorMessage) <= 0) { $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_U_GROUP") . ". "; } $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_GROUP"); $DB->Rollback(); return false; } if ($bAutoSubscribe) { CSocNetLogEvents::AutoSubscribe($ownerID, SONET_ENTITY_GROUP, $groupID); } CSocNetSubscription::Set($ownerID, "SG" . $groupID, "Y"); $DB->Commit(); return $groupID; }
function ConfirmRequestToBeFriend($senderUserID, $relationID, $bAutoSubscribe = true) { global $APPLICATION; $senderUserID = IntVal($senderUserID); if ($senderUserID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID"); return false; } $relationID = IntVal($relationID); if ($relationID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_RELATION_ID"); return false; } $dbResult = CSocNetUserRelations::GetList(array(), array("ID" => $relationID, "SECOND_USER_ID" => $senderUserID, "RELATION" => SONET_RELATIONS_REQUEST), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID")); if ($arResult = $dbResult->Fetch()) { $rsUser = CUser::GetByID(intval($arResult["FIRST_USER_ID"])); $arUser = $rsUser->Fetch(); if (!is_array($arUser) || $arUser["ACTIVE"] != "Y") { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_INVALID_TARGET_USER_ID"), "ERROR_INVALID_TARGET_USER_ID"); return false; } $arFields = array("RELATION" => SONET_RELATIONS_FRIEND, "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "INITIATED_BY" => "S"); if (CSocNetUserRelations::Update($arResult["ID"], $arFields)) { if ($bAutoSubscribe) { CSocNetLogEvents::AutoSubscribe($senderUserID, SONET_ENTITY_USER, $arResult["FIRST_USER_ID"]); CSocNetLogEvents::AutoSubscribe($arResult["FIRST_USER_ID"], SONET_ENTITY_USER, $senderUserID); } if (CModule::IncludeModule("im")) { CIMNotify::DeleteByTag("SOCNET|INVITE_USER|" . intval($senderUserID) . "|" . intval($arResult["ID"])); $arMessageFields = array("MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arResult["FIRST_USER_ID"], "FROM_USER_ID" => $senderUserID, "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "inout_user", "NOTIFY_TAG" => "SOCNET|INVITE_USER_CONFIRM", "NOTIFY_MESSAGE" => GetMessage("SONET_UR_AGREE_FRIEND_MESSAGE")); CIMNotify::Add($arMessageFields); } } else { $errorMessage = ""; if ($e = $APPLICATION->GetException()) { $errorMessage = $e->GetString(); } if (StrLen($errorMessage) <= 0) { $errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_RELATION"); } $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION"); return false; } } else { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_NO_FRIEND_REQUEST"), "ERROR_NO_FRIEND_REQUEST"); return false; } $arUserID = array($arResult["FIRST_USER_ID"], $arResult["SECOND_USER_ID"]); $dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["FIRST_USER_ID"], SONET_RELATIONS_FRIEND); while ($arFriends = $dbFriends->Fetch()) { $pref = $arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"] ? "SECOND" : "FIRST"; $arUserID[] = $arResult[$pref . "_USER_ID"]; } $dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["SECOND_USER_ID"], SONET_RELATIONS_FRIEND); while ($arFriends = $dbFriends->Fetch()) { $pref = $arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"] ? "SECOND" : "FIRST"; $arUserID[] = $arResult[$pref . "_USER_ID"]; } $arUserID = array_unique($arUserID); CSocNetUserRelations::__SpeedFileCheckMessages($senderUserID); return true; }
function ConfirmRequestToBeFriend($senderUserID, $relationID, $bAutoSubscribe = true) { global $APPLICATION; $senderUserID = IntVal($senderUserID); if ($senderUserID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_SENDER_USER_ID"), "ERROR_SENDER_USER_ID"); return false; } $relationID = IntVal($relationID); if ($relationID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_TARGET_USER_ID"), "ERROR_RELATION_ID"); return false; } $dbResult = CSocNetUserRelations::GetList( array(), array( "ID" => $relationID, "SECOND_USER_ID" => $senderUserID, "RELATION" => SONET_RELATIONS_REQUEST ), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID") ); if ($arResult = $dbResult->Fetch()) { $rsUser = CUser::GetByID(intval($arResult["FIRST_USER_ID"])); $arUser = $rsUser->Fetch(); if (!is_array($arUser) || $arUser["ACTIVE"] != "Y") { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_INVALID_TARGET_USER_ID"), "ERROR_INVALID_TARGET_USER_ID"); return false; } $arFields = array( "RELATION" => SONET_RELATIONS_FRIEND, "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "INITIATED_BY" => "S", ); if (CSocNetUserRelations::Update($arResult["ID"], $arFields)) { if ($bAutoSubscribe) { CSocNetLogEvents::AutoSubscribe($senderUserID, SONET_ENTITY_USER, $arResult["FIRST_USER_ID"]); CSocNetLogEvents::AutoSubscribe($arResult["FIRST_USER_ID"], SONET_ENTITY_USER, $senderUserID); } if (CModule::IncludeModule("im")) { CIMNotify::DeleteByTag("SOCNET|INVITE_USER|".intval($senderUserID)."|".intval($arResult["ID"])); $arMessageFields = array( "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arResult["FIRST_USER_ID"], "FROM_USER_ID" => $senderUserID, "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "invite_user", "NOTIFY_TAG" => "SOCNET|INVITE_USER_CONFIRM", "NOTIFY_MESSAGE" => GetMessage("SONET_UR_AGREE_FRIEND_MESSAGE"), ); CIMNotify::Add($arMessageFields); } else { $arMessageFields = array( "FROM_USER_ID" => $senderUserID, "TO_USER_ID" => $arResult["FIRST_USER_ID"], "MESSAGE" => GetMessage("SONET_UR_AGREE_FRIEND_MESSAGE"), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM ); CSocNetMessages::Add($arMessageFields); } $logID = CSocNetLog::Add( array( "ENTITY_TYPE" => SONET_ENTITY_USER, "ENTITY_ID" => $senderUserID, "EVENT_ID" => "system_friends", "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "TITLE_TEMPLATE" => false, "TITLE" => "friend", "MESSAGE" => $arResult["FIRST_USER_ID"], "URL" => false, "MODULE_ID" => false, "CALLBACK_FUNC" => false, "USER_ID" => $arResult["FIRST_USER_ID"] ), false ); if (intval($logID) > 0) { CSocNetLog::Update($logID, array("TMP_ID" => $logID)); $perm = CSocNetUserPerms::GetOperationPerms($senderUserID, "viewfriends"); if (in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS))) CSocNetLogRights::Add($logID, array("SA", "U".$senderUserID, "S".SONET_ENTITY_USER.$senderUserID."_".$perm)); elseif ($perm == SONET_RELATIONS_TYPE_NONE) CSocNetLogRights::Add($logID, array("SA", "U".$senderUserID)); elseif ($perm == SONET_RELATIONS_TYPE_AUTHORIZED) CSocNetLogRights::Add($logID, array("SA", "AU")); elseif ($perm == SONET_RELATIONS_TYPE_ALL) CSocNetLogRights::Add($logID, array("SA", "G2")); $tmpID = $logID; } $logID = CSocNetLog::Add( array( "ENTITY_TYPE" => SONET_ENTITY_USER, "ENTITY_ID" => $arResult["FIRST_USER_ID"], "EVENT_ID" => "system_friends", "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "TITLE_TEMPLATE" => false, "TITLE" => "friend", "MESSAGE" => $senderUserID, "URL" => false, "MODULE_ID" => false, "CALLBACK_FUNC" => false, "USER_ID" => $senderUserID, "TMP_ID" => (intval($tmpID) > 0 ? $tmpID : false), ), false ); if (intval($logID) > 0) { $perm = CSocNetUserPerms::GetOperationPerms($arResult["FIRST_USER_ID"], "viewfriends"); if (in_array($perm, array(SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS))) CSocNetLogRights::Add($logID, array("SA", "U".$arResult["FIRST_USER_ID"], "S".SONET_ENTITY_USER.$arResult["FIRST_USER_ID"]."_".$perm)); elseif ($perm == SONET_RELATIONS_TYPE_NONE) CSocNetLogRights::Add($logID, array("SA", "U".$arResult["FIRST_USER_ID"])); elseif ($perm == SONET_RELATIONS_TYPE_AUTHORIZED) CSocNetLogRights::Add($logID, array("SA", "AU")); elseif ($perm == SONET_RELATIONS_TYPE_ALL) CSocNetLogRights::Add($logID, array("SA", "G2")); CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT", $tmpID); } } else { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UR_ERROR_UPDATE_RELATION"); $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION"); return false; } } else { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_NO_FRIEND_REQUEST"), "ERROR_NO_FRIEND_REQUEST"); return false; } $arUserID = array( $arResult["FIRST_USER_ID"], $arResult["SECOND_USER_ID"] ); $dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["FIRST_USER_ID"], SONET_RELATIONS_FRIEND); while ($arFriends = $dbFriends->Fetch()) { $pref = (($arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST"); $arUserID[] = $arResult[$pref."_USER_ID"]; } $dbFriends = CSocNetUserRelations::GetRelatedUsers($arResult["SECOND_USER_ID"], SONET_RELATIONS_FRIEND); while ($arFriends = $dbFriends->Fetch()) { $pref = (($arResult["FIRST_USER_ID"] == $arFriends["FIRST_USER_ID"]) ? "SECOND" : "FIRST"); $arUserID[] = $arResult[$pref."_USER_ID"]; } $arUserID = array_unique($arUserID); CSocNetUserRelations::__SpeedFileCheckMessages($senderUserID); return true; }
function UserConfirmRequestToBeMember($targetUserID, $relationID, $bAutoSubscribe = true) { global $APPLICATION; $targetUserID = IntVal($targetUserID); if ($targetUserID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_USERID"), "ERROR_SENDER_USER_ID"); return false; } $relationID = IntVal($relationID); if ($relationID <= 0) { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_UR_EMPTY_RELATIONID"), "ERROR_RELATION_ID"); return false; } if (CModule::IncludeModule("extranet")) $extranet_site_id = CExtranet::GetExtranetSiteID(); $dbResult = CSocNetUserToGroup::GetList( array(), array( "ID" => $relationID, "USER_ID" => $targetUserID, "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_GROUP ), false, false, array("ID", "USER_ID", "INITIATED_BY_USER_ID", "GROUP_ID", "GROUP_VISIBLE", "GROUP_SITE_ID", "GROUP_NAME") ); if ($arResult = $dbResult->Fetch()) { $rsGroupSite = CSocNetGroup::GetSite($arResult["GROUP_ID"]); while ($arGroupSite = $rsGroupSite->Fetch()) { $arGroupSites[] = $arGroupSite["LID"]; //get server name $rsSites = CSite::GetByID($arGroupSite["LID"]); $arSite = $rsSites->Fetch(); $serverName = $arSite["SERVER_NAME"]; if (strlen($serverName) <= 0) { if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0) $serverName = SITE_SERVER_NAME; else $serverName = COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]); } if (strlen($serverName) > 0) { $protocol = (CMain::IsHTTPS() ? "https" : "http"); $serverName = $protocol."://".$serverName; } } if (!$arGroupSites) $arGroupSites = array(SITE_ID); $arFields = array( "ROLE" => SONET_ROLES_USER, "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(), ); if (CSocNetUserToGroup::Update($arResult["ID"], $arFields)) { $events = GetModuleEvents("socialnetwork", "OnSocNetUserConfirmRequestToBeMember"); while ($arEvent = $events->Fetch()) ExecuteModuleEventEx($arEvent, array($arResult["ID"], $arResult)); if ($bAutoSubscribe) CSocNetLogEvents::AutoSubscribe($targetUserID, SONET_ENTITY_GROUP, $arResult["GROUP_ID"]); if (CModule::IncludeModule("im")) { CIMNotify::DeleteByTag("SOCNET|INVITE_GROUP|".intval($targetUserID)."|".intval($relationID)); $arMessageFields = array( "MESSAGE_TYPE" => IM_MESSAGE_SYSTEM, "TO_USER_ID" => $arResult["INITIATED_BY_USER_ID"], "FROM_USER_ID" => $arResult['USER_ID'], "NOTIFY_TYPE" => IM_NOTIFY_FROM, "NOTIFY_MODULE" => "socialnetwork", "NOTIFY_EVENT" => "invite_group", "NOTIFY_TAG" => "SOCNET|INVITE_GROUP_SUCCESS|".intval($arResult["GROUP_ID"]), "NOTIFY_MESSAGE" => str_replace("#NAME#", $arResult["GROUP_NAME"], GetMessage("SONET_UG_CONFIRM_MEMBER_MESSAGE")), ); CIMNotify::Add($arMessageFields); } else { $arMessageFields = array( "FROM_USER_ID" => $targetUserID, "TO_USER_ID" => $arResult["INITIATED_BY_USER_ID"], "MESSAGE" => str_replace("#NAME#", $arResult["GROUP_NAME"], GetMessage("SONET_UG_CONFIRM_MEMBER_MESSAGE")), "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM ); CSocNetMessages::Add($arMessageFields); } $site = (in_array($extranet_site_id, $arGroupSites)) ? $extranet_site_id : $arGroupSites["0"]; $groupUrl = $serverName.str_replace("#group_id#", $arResult["GROUP_ID"], COption::GetOptionString("socialnetwork", "group_path_template", "/workgroups/group/#group_id#/", $site)); $logID = CSocNetLog::Add( array( "ENTITY_TYPE" => SONET_ENTITY_GROUP, "ENTITY_ID" => $arResult["GROUP_ID"], "EVENT_ID" => "system", "=LOG_DATE" => $GLOBALS["DB"]->CurrentTimeFunction(), "TITLE_TEMPLATE" => false, "TITLE" => "join", "MESSAGE" => $targetUserID, "URL" => $groupUrl, "MODULE_ID" => false, "CALLBACK_FUNC" => false, "SITE_ID" => $arGroupSites, "USER_ID" => $targetUserID ), false ); if (intval($logID) > 0) { $tmpID = $logID; CSocNetLog::Update($logID, array("TMP_ID" => $tmpID)); CSocNetLogRights::Add($logID, array("SA", "U".$targetUserID, "S".SONET_ENTITY_GROUP.$arResult["GROUP_ID"], "S".SONET_ENTITY_GROUP.$arResult["GROUP_ID"]."_".SONET_ROLES_OWNER, "S".SONET_ENTITY_GROUP.$arResult["GROUP_ID"]."_".SONET_ROLES_MODERATOR, "S".SONET_ENTITY_GROUP.$arResult["GROUP_ID"]."_".SONET_ROLES_USER)); CSocNetLog::SendEvent($logID, "SONET_NEW_EVENT", $tmpID); } } else { $errorMessage = ""; if ($e = $APPLICATION->GetException()) $errorMessage = $e->GetString(); if (StrLen($errorMessage) <= 0) $errorMessage = GetMessage("SONET_UR_ERROR_CREATE_USER2GROUP"); $GLOBALS["APPLICATION"]->ThrowException($errorMessage, "ERROR_CREATE_RELATION"); return false; } } else { $GLOBALS["APPLICATION"]->ThrowException(GetMessage("SONET_NO_USER2GROUP"), "ERROR_NO_GROUP_REQUEST"); return false; } CSocNetUserToGroup::__SpeedFileCheckMessages($targetUserID); return true; }