本文整理汇总了PHP中CSocNetUser::IsFriendsAllowed方法的典型用法代码示例。如果您正苦于以下问题:PHP CSocNetUser::IsFriendsAllowed方法的具体用法?PHP CSocNetUser::IsFriendsAllowed怎么用?PHP CSocNetUser::IsFriendsAllowed使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSocNetUser
的用法示例。
在下文中一共展示了CSocNetUser::IsFriendsAllowed方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: OnGetNotifySchema
public static function OnGetNotifySchema()
{
$arResult = array("socialnetwork" => array("invite_group" => array("NAME" => GetMessage("SONET_NS_INVITE_GROUP")), "inout_group" => array("NAME" => GetMessage("SONET_NS_INOUT_GROUP")), "moderators_group" => array("NAME" => GetMessage("SONET_NS_MODERATORS_GROUP")), "owner_group" => array("NAME" => GetMessage("SONET_NS_OWNER_GROUP")), "sonet_group_event" => array("NAME" => GetMessage("SONET_NS_SONET_GROUP_EVENT"))));
if (CSocNetUser::IsFriendsAllowed()) {
/*
$arResult["socialnetwork"]["invite_user"] = Array(
"NAME" => GetMessage("SONET_NS_INVITE_USER")
);
*/
$arResult["socialnetwork"]["inout_user"] = array("NAME" => GetMessage("SONET_NS_FRIEND"));
}
return $arResult;
}
示例2: Invite
public static function Invite($arParams)
{
$arConfig['CHAT_ID'] = intval($arParams['CHAT_ID']);
if ($arConfig['CHAT_ID'] <= 0)
return false;
global $DB, $USER;
$arConfig['RECIPIENT_ID'] = intval($arParams['RECIPIENT_ID']);
$arConfig['USER_ID'] = intval($arParams['USER_ID']) > 0? intval($arParams['USER_ID']): IntVal($USER->GetID());
$arConfig['VIDEO'] = isset($arParams['VIDEO']) && $arParams['VIDEO'] == 'N'? 'N': 'Y';
$arChat = CIMChat::GetChatData(Array('ID' => $arConfig['CHAT_ID']));
if (empty($arChat['chat']))
return false;
$arConfig['CALL_TO_GROUP'] = $arChat['chat'][$arConfig['CHAT_ID']]['type'] == IM_MESSAGE_GROUP;
$arConfig['STATUS_TYPE'] = intval($arChat['chat'][$arConfig['CHAT_ID']]['call']);
if (!$arConfig['CALL_TO_GROUP'] && !IsModuleInstalled('intranet') && CIMSettings::GetPrivacy(CIMSettings::PRIVACY_CALL, $arConfig['RECIPIENT_ID']) == CIMSettings::PRIVACY_RESULT_CONTACT
&& CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arConfig['USER_ID'], $arConfig['RECIPIENT_ID']))
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_CALL_PRIVACY'), "ERROR_FROM_PRIVACY");
return false;
}
if ($arConfig['STATUS_TYPE'] != IM_CALL_NONE)
{
if ($arConfig['CALL_TO_GROUP'])
self::MessageToChat($arConfig['CHAT_ID'], "IM_CALL_CHAT_START_", $arConfig['USER_ID'], true);
$strSql = "UPDATE b_im_relation SET CALL_STATUS = ".IM_CALL_STATUS_ANSWER." WHERE CHAT_ID = ".$arConfig['CHAT_ID']." AND USER_ID = ".$arConfig['USER_ID'];
$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
$arUserData = CIMContactList::GetUserData(Array('ID' => $arChat['userInChat'][$arConfig['CHAT_ID']], 'DEPARTMENT' => 'N', 'HR_PHOTO' => 'Y'));
$arConfig['USER_DATA']['USERS'] = $arUserData['users'];
$arConfig['USER_DATA']['HR_PHOTO'] = $arUserData['hrphoto'];
foreach ($arChat['userCallStatus'][$arConfig['CHAT_ID']] as $userId => $callStatus)
{
if ($userId != $arConfig['USER_ID'] && in_array($callStatus, Array(IM_CALL_STATUS_WAIT, IM_CALL_STATUS_ANSWER)))
$arUserToConnect[$userId] = $callStatus;
}
$arConfig['USERS_CONNECT'] = $arUserToConnect;
$arSend['users'] = $arUserData['users'];
$arSend['hrphoto'] = $arUserData['hrphoto'];
$arSend['video'] = $arConfig['VIDEO'] == 'Y'? true: false;
$arSend['callToGroup'] = $arConfig['CALL_TO_GROUP'];
$arSend['chat'] = $arChat['chat'];
$arSend['userInChat'] = $arChat['userInChat'];
foreach ($arChat['userCallStatus'][$arConfig['CHAT_ID']] as $userId => $callStatus)
if ($userId != $arConfig['USER_ID'] && !in_array($callStatus, Array(IM_CALL_STATUS_DECLINE)))
self::Command($arConfig['CHAT_ID'], $userId, 'invite_join', $arSend);
}
else
{
if ($arConfig['CALL_TO_GROUP'])
self::MessageToChat($arConfig['CHAT_ID'], "IM_CALL_CHAT_INIT_", $arConfig['USER_ID'], true);
$strSql = "UPDATE b_im_chat SET CALL_TYPE = ".($arConfig['VIDEO'] == 'Y'? IM_CALL_VIDEO: IM_CALL_AUDIO)." WHERE ID = ".$arConfig['CHAT_ID'];
$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
$strSql = "UPDATE b_im_relation SET CALL_STATUS = ".IM_CALL_STATUS_ANSWER." WHERE CHAT_ID = ".$arConfig['CHAT_ID']." AND USER_ID = ".$arConfig['USER_ID'];
$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
$arUserToConnect = Array();
foreach ($arChat['userCallStatus'][$arConfig['CHAT_ID']] as $userId => $callStatus)
{
if ($userId != $arConfig['USER_ID'])
$arUserToConnect[$userId] = $callStatus;
}
$arUserData = CIMContactList::GetUserData(Array('ID' => $arChat['userInChat'][$arConfig['CHAT_ID']], 'DEPARTMENT' => 'N', 'HR_PHOTO' => 'Y'));
$arSend['users'] = $arUserData['users'];
$arSend['hrphoto'] = $arUserData['hrphoto'];
$arSend['video'] = $arConfig['VIDEO'] == 'Y'? true: false;
$arSend['callToGroup'] = $arConfig['CALL_TO_GROUP'];
$arSend['chat'] = $arChat['chat'];
$arSend['userInChat'] = $arChat['userInChat'];
foreach ($arUserToConnect as $userId => $callStatus)
self::Command($arConfig['CHAT_ID'], $userId, 'invite', $arSend);
$arConfig['USER_DATA']['USERS'] = $arUserData['users'];
$arConfig['USER_DATA']['HR_PHOTO'] = $arUserData['hrphoto'];
}
foreach(GetModuleEvents("im", "OnCallStart", true) as $arEvent)
ExecuteModuleEventEx($arEvent, array($arConfig));
return $arConfig;
}
示例3: AddUser
public function AddUser($chatId, $userId)
{
global $DB;
$chatId = intval($chatId);
if ($chatId <= 0) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_EMPTY_CHAT_ID"), "EMPTY_CHAT_ID");
return false;
}
$arUserId = array();
if (is_array($userId)) {
foreach ($userId as $value) {
$arUserId[] = intval($value);
}
} else {
$arUserId[] = intval($userId);
}
if (count($arUserId) <= 0) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_EMPTY_USER_ID"), "EMPTY_USER_ID");
return false;
}
if (!IsModuleInstalled('intranet') && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) {
global $USER;
$arFriendUsers = array();
$dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $USER->GetID(), "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID", "DATE_CREATE", "DATE_UPDATE", "INITIATED_BY"));
while ($arFriends = $dbFriends->Fetch()) {
$friendId = $USER->GetID() == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
$arFriendUsers[$friendId] = $friendId;
}
foreach ($arUserId as $id => $userId) {
if ($userId == $USER->GetID()) {
continue;
}
if (!isset($arFriendUsers[$userId]) && CIMSettings::GetPrivacy(CIMSettings::PRIVACY_CHAT, $userId) == CIMSettings::PRIVACY_RESULT_CONTACT) {
unset($arUserId[$id]);
}
}
if (count($arUserId) <= 0) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_EMPTY_USER_ID_BY_PRIVACY"), "EMPTY_USER_ID_BY_PRIVACY");
return false;
}
}
$strSql = "\n\t\t\tSELECT R.CHAT_ID, C.TITLE CHAT_TITLE, C.AUTHOR_ID CHAT_AUTHOR_ID\n\t\t\tFROM b_im_relation R LEFT JOIN b_im_chat C ON R.CHAT_ID = C.ID\n\t\t\tWHERE R.USER_ID = " . $this->user_id . " AND R.MESSAGE_TYPE = '" . IM_MESSAGE_GROUP . "' AND R.CHAT_ID = " . $chatId;
$dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
if ($arRes = $dbRes->Fetch()) {
$chatTitle = $arRes['CHAT_TITLE'];
$chatAuthorId = intval($arRes['CHAT_AUTHOR_ID']);
$arRelation = self::GetRelationById($chatId);
$arExistUser = array();
foreach ($arRelation as $relation) {
$arExistUser[] = $relation['USER_ID'];
}
if (count($arRelation) + count($arUserId) > 100) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_MAX_USER", array('#COUNT#' => 100)), "MAX_USER");
return false;
}
$arUserId = array_diff($arUserId, $arExistUser);
if (empty($arUserId)) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_NOTHING_TO_ADD"), "NOTHING_TO_ADD");
return false;
}
$arUserSelect = $arUserId;
$arUserSelect[] = $this->user_id;
$arUsers = CIMContactList::GetUserData(array('ID' => array_values($arUserSelect), 'DEPARTMENT' => 'N', 'USE_CACHE' => 'N'));
$arUsers = $arUsers['users'];
$maxId = 0;
$strSql = "SELECT MAX(ID) ID FROM b_im_message WHERE CHAT_ID = " . $chatId . " GROUP BY CHAT_ID";
$dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
if ($arRes = $dbRes->Fetch()) {
$maxId = $arRes['ID'];
}
$fileMaxId = CIMDisk::GetMaxFileId($chatId);
$arUsersName = array();
foreach ($arUserId as $userId) {
$arUsersName[] = htmlspecialcharsback($arUsers[$userId]['name']);
CIMContactList::SetRecent($chatId, $maxId, true, $userId);
$strSql = "INSERT INTO b_im_relation (CHAT_ID, MESSAGE_TYPE, USER_ID, START_ID, LAST_ID, LAST_SEND_ID, LAST_FILE_ID) VALUES (" . $chatId . ",'" . IM_MESSAGE_GROUP . "'," . $userId . "," . ($maxId + 1) . "," . $maxId . "," . $maxId . ", " . $fileMaxId . ")";
$DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
CIMContactList::CleanChatCache($userId);
}
CIMDisk::ChangeFolderMembers($chatId, $arUserId);
$message = GetMessage("IM_CHAT_JOIN_" . $arUsers[$this->user_id]['gender'], array('#USER_1_NAME#' => htmlspecialcharsback($arUsers[$this->user_id]['name']), '#USER_2_NAME#' => implode(', ', $arUsersName)));
if (CModule::IncludeModule("pull")) {
foreach ($arRelation as $ar) {
CPullStack::AddByUser($ar['USER_ID'], array('module_id' => 'im', 'command' => 'chatUserAdd', 'params' => array('chatId' => $chatId, 'chatTitle' => $chatTitle, 'chatOwner' => $chatAuthorId, 'users' => $arUsers, 'newUsers' => $arUserId)));
}
}
self::AddMessage(array("TO_CHAT_ID" => $chatId, "MESSAGE" => $message, "FROM_USER_ID" => $this->user_id, "SYSTEM" => 'Y'));
return true;
}
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_AUTHORIZE_ERROR"), "AUTHORIZE_ERROR");
return false;
}
示例4: UpdateCodes
public function UpdateCodes($USER_ID)
{
global $DB;
if(CSocNetUser::IsFriendsAllowed())
{
$USER_ID = intval($USER_ID);
$dbFriends = CSocNetUserRelations::GetRelatedUsers($USER_ID, SONET_RELATIONS_FRIEND);
while ($arFriends = $dbFriends->Fetch())
{
$friendID = (($USER_ID == $arFriends["FIRST_USER_ID"]) ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"]);
$DB->Query("INSERT INTO b_user_access (USER_ID, PROVIDER_ID, ACCESS_CODE) VALUES
(".$friendID.", '".$DB->ForSQL($this->id)."', 'SU".$USER_ID."_".SONET_RELATIONS_TYPE_FRIENDS."')");
$arFriends2Exist = array();
$dbRes = $DB->Query("SELECT USER_ID FROM b_user_access WHERE PROVIDER_ID = '".$DB->ForSQL($this->id)."' AND ACCESS_CODE = 'SU".$USER_ID."_".SONET_RELATIONS_TYPE_FRIENDS2."'");
while ($arRes = $dbRes->Fetch())
$arFriends2Exist[] = $arRes["USER_ID"];
$dbFriends2 = CSocNetUserRelations::GetRelatedUsers($friendID, SONET_RELATIONS_FRIEND);
while ($arFriends2 = $dbFriends2->Fetch())
{
$friendID2 = (($friendID == $arFriends2["FIRST_USER_ID"]) ? $arFriends2["SECOND_USER_ID"] : $arFriends2["FIRST_USER_ID"]);
if ($friendID2 != $USER_ID && !in_array($friendID2, $arFriends2Exist))
$DB->Query("INSERT INTO b_user_access (USER_ID, PROVIDER_ID, ACCESS_CODE) VALUES
(".$friendID2.", '".$DB->ForSQL($this->id)."', 'SU".$USER_ID."_".SONET_RELATIONS_TYPE_FRIENDS2."')");
}
}
}
}
示例5: AddUser
public function AddUser($chatId, $userId)
{
global $DB;
$chatId = intval($chatId);
if ($chatId <= 0) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_EMPTY_CHAT_ID"), "EMPTY_CHAT_ID");
return false;
}
$arUserId = array();
if (is_array($userId)) {
$arUserId = \CIMContactList::PrepareUserIds($userId);
} else {
if (intval($userId) > 0) {
$arUserId[intval($userId)] = intval($userId);
}
}
if ($this->user_id > 0) {
$arUserId[$this->user_id] = $this->user_id;
}
if (count($arUserId) <= 0) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_EMPTY_USER_ID"), "EMPTY_USER_ID");
return false;
}
if ($this->user_id > 0 && !IsModuleInstalled('intranet') && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) {
$arFriendUsers = array();
$dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $this->user_id, "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID", "DATE_CREATE", "DATE_UPDATE", "INITIATED_BY"));
while ($arFriends = $dbFriends->Fetch()) {
$friendId = $this->user_id == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
$arFriendUsers[$friendId] = $friendId;
}
foreach ($arUserId as $id => $userId) {
if ($userId == $this->user_id) {
continue;
}
if (!isset($arFriendUsers[$userId]) && CIMSettings::GetPrivacy(CIMSettings::PRIVACY_CHAT, $userId) == CIMSettings::PRIVACY_RESULT_CONTACT) {
unset($arUserId[$id]);
}
}
if (count($arUserId) <= 0) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_EMPTY_USER_ID_BY_PRIVACY"), "EMPTY_USER_ID_BY_PRIVACY");
return false;
}
}
$strSql = "\n\t\t\tSELECT\n\t\t\t\tR.CHAT_ID, C.TITLE CHAT_TITLE, C.AUTHOR_ID CHAT_AUTHOR_ID, C.EXTRANET CHAT_EXTRANET, C.TYPE CHAT_TYPE\n\t\t\tFROM b_im_relation R\n\t\t\tLEFT JOIN b_im_chat C ON R.CHAT_ID = C.ID\n\t\t\tWHERE\n\t\t\t\t" . ($this->user_id > 0 ? "R.USER_ID = " . $this->user_id . " AND " : "") . "\n\t\t\t\tR.MESSAGE_TYPE IN ('" . IM_MESSAGE_OPEN . "','" . IM_MESSAGE_CHAT . "')\n\t\t\t\tAND R.CHAT_ID = " . $chatId . "\n\t\t";
$dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
if ($arRes = $dbRes->Fetch()) {
$extranetFlag = $arRes["CHAT_EXTRANET"] == "" ? "" : ($arRes["CHAT_EXTRANET"] == "Y" ? true : false);
$chatTitle = $arRes['CHAT_TITLE'];
$chatAuthorId = intval($arRes['CHAT_AUTHOR_ID']);
$chatType = intval($arRes['CHAT_TYPE']);
$arRelation = self::GetRelationById($chatId);
$arExistUser = array();
foreach ($arRelation as $relation) {
$arExistUser[] = $relation['USER_ID'];
}
if (count($arRelation) + count($arUserId) > 500) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_MAX_USER", array('#COUNT#' => 500)), "MAX_USER");
return false;
}
$arUserId = array_diff($arUserId, $arExistUser);
if (empty($arUserId)) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage("IM_ERROR_NOTHING_TO_ADD"), "NOTHING_TO_ADD");
return false;
}
$arUserSelect = $arUserId;
if ($this->user_id > 0) {
$arUserSelect[] = $this->user_id;
}
$arUsers = CIMContactList::GetUserData(array('ID' => array_values($arUserSelect), 'DEPARTMENT' => 'N', 'USE_CACHE' => 'N'));
$arUsers = $arUsers['users'];
if ($extranetFlag !== true) {
$isExtranet = false;
foreach ($arUsers as $userData) {
if ($userData['extranet']) {
$isExtranet = true;
break;
}
}
if ($isExtranet || $extranetFlag === "") {
IM\ChatTable::update($chatId, array('EXTRANET' => $isExtranet ? "Y" : "N"));
}
$extranetFlag = $isExtranet;
}
$arUsersName = array();
foreach ($arUserId as $userId) {
$arUsersName[] = htmlspecialcharsback($arUsers[$userId]['name']);
}
if ($this->user_id > 0) {
$message = GetMessage("IM_CHAT_JOIN_" . $arUsers[$this->user_id]['gender'], array('#USER_1_NAME#' => htmlspecialcharsback($arUsers[$this->user_id]['name']), '#USER_2_NAME#' => implode(', ', $arUsersName)));
} else {
if (count($arUsersName) > 1) {
$message = GetMessage("IM_CHAT_SELF_JOIN", array('#USERS_NAME#' => implode(', ', $arUsersName)));
} else {
$arUserList = array_values($arUserId);
$message = GetMessage("IM_CHAT_SELF_JOIN_" . $arUsers[$arUserList[0]]['gender'], array('#USER_NAME#' => implode(', ', $arUsersName)));
}
}
$fileMaxId = CIMDisk::GetMaxFileId($chatId);
$maxId = 0;
$strSql = "SELECT MAX(ID) ID FROM b_im_message WHERE CHAT_ID = " . $chatId . " GROUP BY CHAT_ID";
//.........这里部分代码省略.........
示例6: array
}
}
if (count($arResult["UserPropertiesMain"]["DATA"]) > 0) {
$arResult["UserPropertiesMain"]["SHOW"] = "Y";
}
if (count($arResult["UserPropertiesContact"]["DATA"]) > 0) {
$arResult["UserPropertiesContact"]["SHOW"] = "Y";
}
if (count($arResult["UserPropertiesPersonal"]["DATA"]) > 0) {
$arResult["UserPropertiesPersonal"]["SHOW"] = "Y";
}
}
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"]) {
示例7: Add
public static function Add($arFields)
{
global $DB;
if (isset($arFields['TITLE']) && !isset($arFields['NOTIFY_TITLE']))
$arFields['NOTIFY_TITLE'] = $arFields['TITLE'];
if (isset($arFields['NOTIFY_MESSAGE']) && !isset($arFields['MESSAGE']))
$arFields['MESSAGE'] = $arFields['NOTIFY_MESSAGE'];
if (isset($arFields['NOTIFY_MESSAGE_OUT']) && !isset($arFields['MESSAGE_OUT']))
$arFields['MESSAGE_OUT'] = $arFields['NOTIFY_MESSAGE_OUT'];
$bConvert = false;
if (isset($arFields['CONVERT']) && $arFields['CONVERT'] == 'Y')
$bConvert = true;
if (!isset($arFields['MESSAGE_OUT']))
$arFields['MESSAGE_OUT'] = "";
if (!isset($arFields['MESSAGE_TYPE']))
$arFields['MESSAGE_TYPE'] = "";
if (!isset($arFields['NOTIFY_MODULE']))
$arFields['NOTIFY_MODULE'] = 'im';
if (!isset($arFields['NOTIFY_EVENT']))
$arFields['NOTIFY_EVENT'] = 'default';
if (!isset($arFields['PARAMS']))
$arFields['PARAMS'] = Array();
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_SYSTEM)
{
if (!isset($arFields['NOTIFY_TYPE']) && intval($arFields['FROM_USER_ID']) > 0)
$arFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
else if (!isset($arFields['NOTIFY_TYPE']))
$arFields['NOTIFY_TYPE'] = IM_NOTIFY_SYSTEM;
}
if (isset($arFields['NOTIFY_EMAIL_TEMPLATE']) && !isset($arFields['EMAIL_TEMPLATE']))
$arFields['EMAIL_TEMPLATE'] = $arFields['NOTIFY_EMAIL_TEMPLATE'];
if (isset($arFields['EMAIL_TEMPLATE']) && strlen(trim($arFields['EMAIL_TEMPLATE']))>0)
$arParams['EMAIL_TEMPLATE'] = trim($arFields['EMAIL_TEMPLATE']);
if (!isset($arFields['AUTHOR_ID']))
$arFields['AUTHOR_ID'] = intval($arFields['FROM_USER_ID']);
foreach(GetModuleEvents("im", "OnBeforeMessageNotifyAdd", true) as $arEvent)
{
$result = ExecuteModuleEventEx($arEvent, array(&$arFields));
if($result===false || isset($result['result']) && $result['result'] === false)
{
if (isset($result['reason']))
{
$CBXSanitizer = new CBXSanitizer;
$CBXSanitizer->AddTags(array(
'a' => array('href','style', 'target'),
'b' => array(), 'u' => array(),
'i' => array(), 'br' => array(),
'span' => array('style'),
));
$reason = $CBXSanitizer->SanitizeHtml($result['reason']);
}
else
{
$reason = $arFields['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE? GetMessage("IM_ERROR_MESSAGE_CANCELED"): ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_GROUP? GetMessage("IM_ERROR_GROUP_CANCELED"): GetMessage("IM_ERROR_NOTIFY_CANCELED"));
}
$GLOBALS["APPLICATION"]->ThrowException($reason, "ERROR_FROM_OTHER_MODULE");
return false;
}
}
if (!self::CheckFields($arFields))
return false;
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE)
{
if (isset($arFields['TO_CHAT_ID']))
{
$chatId = $arFields['TO_CHAT_ID'];
$arRel = CIMChat::GetRelationById($chatId);
foreach ($arRel as $rel)
{
if ($rel['USER_ID'] == $arFields['FROM_USER_ID'])
continue;
$arFields['TO_USER_ID'] = $rel['USER_ID'];
}
if (!IsModuleInstalled('intranet'))
{
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID']))
{
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_MESSAGE_PRIVACY_SELF'), "ERROR_FROM_PRIVACY_SELF");
return false;
}
//.........这里部分代码省略.........
示例8: trim
$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";
}
$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#");
}
if (strlen($arParams["NAME_TEMPLATE"]) <= 0) {
$arParams["NAME_TEMPLATE"] = CSite::GetNameFormat();
}
$bUseLogin = $arParams['SHOW_LOGIN'] != "N" ? true : false;
if (!CSocNetUser::IsFriendsAllowed()) {
$arResult["FatalError"] = GetMessage("SONET_C35_NO_FR_FUNC") . ". ";
} else {
if (!$GLOBALS["USER"]->IsAuthorized()) {
$arResult["NEED_AUTH"] = "Y";
} else {
$dbUser = CUser::GetByID($arParams["ID"]);
$arResult["User"] = $dbUser->GetNext();
if (!is_array($arResult["User"])) {
$arResult["FatalError"] = GetMessage("SONET_P_USER_NO_USER") . ". ";
} else {
$arResult["CurrentUserPerms"] = CSocNetUserPerms::InitUserPerms($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"], CSocNetUser::IsCurrentUserModuleAdmin());
if (!$arResult["CurrentUserPerms"]["IsCurrentUser"]) {
$arResult["CurrentUserRelation"] = CSocNetUserRelations::GetRelation($GLOBALS["USER"]->GetID(), $arResult["User"]["ID"]);
}
$arResult["Urls"]["User"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["User"]["ID"]));
示例9: GetList
public static function GetList($arParams = array())
{
if (!is_array($arParams)) {
$arParams = array();
}
$arID = array();
if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) {
foreach ($arParams['ID'] as $key => $value) {
$arID[] = intval($value);
}
} else {
if (isset($arParams['ID']) && intval($arParams['ID']) > 0) {
$arID[] = intval($arParams['ID']);
}
}
global $USER;
if (!isset($arParams['ID']) && !IsModuleInstalled('intranet') && is_object($USER)) {
$arID[] = $USER->GetID();
if (CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) {
$dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $USER->GetID(), "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID"));
if ($dbFriends) {
while ($arFriends = $dbFriends->GetNext(true, false)) {
$friendId = $pref = IntVal($USER->GetID()) == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
$arID[] = $friendId;
}
}
}
}
$enable = self::Enable();
$arUsers = array();
$query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity());
if ($enable) {
$query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID')));
}
$query->addSelect('ID');
if ($enable) {
$query->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE');
}
$query->addFilter('>LAST_ACTIVITY_DATE', new \Bitrix\Main\DB\SqlExpression(Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180')));
$result = $query->exec();
while ($arUser = $result->fetch()) {
if (!empty($arID) && !in_array($arUser["ID"], $arID)) {
continue;
}
$arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'status' => $enable && in_array($arUser['STATUS'], self::$AVAILABLE_STATUSES) ? $arUser['STATUS'] : 'online', 'idle' => $enable && is_object($arUser['IDLE']) ? $arUser['IDLE']->getTimestamp() : 0);
}
return array('users' => $arUsers);
}
示例10: IsMyUser
function IsMyUser($entity_id)
{
$is_my = false;
if (CSocNetUser::IsFriendsAllowed() && CSocNetUserRelations::IsFriends($GLOBALS["USER"]->GetID(), $entity_id)) {
$is_my = true;
}
return $is_my;
}
示例11: Add
public static function Add($arFields)
{
global $DB;
if (isset($arFields['TITLE']) && !isset($arFields['NOTIFY_TITLE'])) {
$arFields['NOTIFY_TITLE'] = $arFields['TITLE'];
}
if (isset($arFields['NOTIFY_MESSAGE']) && !isset($arFields['MESSAGE'])) {
$arFields['MESSAGE'] = $arFields['NOTIFY_MESSAGE'];
}
if (isset($arFields['NOTIFY_MESSAGE_OUT']) && !isset($arFields['MESSAGE_OUT'])) {
$arFields['MESSAGE_OUT'] = $arFields['NOTIFY_MESSAGE_OUT'];
}
$bConvert = false;
if (isset($arFields['CONVERT']) && $arFields['CONVERT'] == 'Y') {
$bConvert = true;
}
if (!isset($arFields['MESSAGE_OUT'])) {
$arFields['MESSAGE_OUT'] = "";
}
if (!isset($arFields['MESSAGE_TYPE'])) {
$arFields['MESSAGE_TYPE'] = "";
}
if (!isset($arFields['NOTIFY_MODULE'])) {
$arFields['NOTIFY_MODULE'] = 'im';
}
if (!isset($arFields['NOTIFY_EVENT'])) {
$arFields['NOTIFY_EVENT'] = 'default';
}
if (!isset($arFields['PARAMS'])) {
$arFields['PARAMS'] = array();
}
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_SYSTEM) {
if (!isset($arFields['NOTIFY_TYPE']) && intval($arFields['FROM_USER_ID']) > 0) {
$arFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
} else {
if (!isset($arFields['NOTIFY_TYPE'])) {
$arFields['NOTIFY_TYPE'] = IM_NOTIFY_SYSTEM;
}
}
}
if (isset($arFields['NOTIFY_EMAIL_TEMPLATE']) && !isset($arFields['EMAIL_TEMPLATE'])) {
$arFields['EMAIL_TEMPLATE'] = $arFields['NOTIFY_EMAIL_TEMPLATE'];
}
if (isset($arFields['EMAIL_TEMPLATE']) && strlen(trim($arFields['EMAIL_TEMPLATE'])) > 0) {
$arParams['EMAIL_TEMPLATE'] = trim($arFields['EMAIL_TEMPLATE']);
}
if (!isset($arFields['AUTHOR_ID'])) {
$arFields['AUTHOR_ID'] = intval($arFields['FROM_USER_ID']);
}
foreach (GetModuleEvents("im", "OnBeforeMessageNotifyAdd", true) as $arEvent) {
$result = ExecuteModuleEventEx($arEvent, array(&$arFields));
if ($result === false || isset($result['result']) && $result['result'] === false) {
if (isset($result['reason'])) {
$CBXSanitizer = new CBXSanitizer();
$CBXSanitizer->AddTags(array('a' => array('href', 'style', 'target'), 'b' => array(), 'u' => array(), 'i' => array(), 'br' => array(), 'span' => array('style')));
$reason = $CBXSanitizer->SanitizeHtml($result['reason']);
} else {
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE) {
$reason = GetMessage("IM_ERROR_MESSAGE_CANCELED");
} else {
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_SYSTEM) {
$reason = GetMessage("IM_ERROR_NOTIFY_CANCELED");
} else {
$reason = GetMessage("IM_ERROR_GROUP_CANCELED");
}
}
}
$GLOBALS["APPLICATION"]->ThrowException($reason, "ERROR_FROM_OTHER_MODULE");
return false;
}
}
if (!self::CheckFields($arFields)) {
return false;
}
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE) {
if (isset($arFields['TO_CHAT_ID'])) {
$chatId = $arFields['TO_CHAT_ID'];
$arRel = CIMChat::GetRelationById($chatId);
foreach ($arRel as $rel) {
if ($rel['USER_ID'] == $arFields['FROM_USER_ID']) {
continue;
}
$arFields['TO_USER_ID'] = $rel['USER_ID'];
}
if (!IsModuleInstalled('intranet')) {
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_MESSAGE_PRIVACY_SELF'), "ERROR_FROM_PRIVACY_SELF");
return false;
} else {
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE, $arFields['TO_USER_ID']) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_MESSAGE_PRIVACY'), "ERROR_FROM_PRIVACY");
return false;
}
}
}
} else {
$arFields['FROM_USER_ID'] = intval($arFields['FROM_USER_ID']);
$arFields['TO_USER_ID'] = intval($arFields['TO_USER_ID']);
if (!IsModuleInstalled('intranet')) {
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) {
//.........这里部分代码省略.........
示例12: GetList
public static function GetList($arParams = array())
{
if (!is_array($arParams)) {
$arParams = array();
}
$arID = array();
if (isset($arParams['ID']) && is_array($arParams['ID']) && !empty($arParams['ID'])) {
foreach ($arParams['ID'] as $key => $value) {
$arID[] = intval($value);
}
} else {
if (isset($arParams['ID']) && intval($arParams['ID']) > 0) {
$arID[] = intval($arParams['ID']);
}
}
$arParams['GET_OFFLINE'] = !empty($arID) && isset($arParams['GET_OFFLINE']) && $arParams['GET_OFFLINE'] == 'Y' ? 'Y' : 'N';
global $USER;
$userId = is_object($USER) ? intval($USER->GetID()) : 0;
$bBusShowAll = !IsModuleInstalled('intranet') && COption::GetOptionInt('im', 'contact_list_show_all_bus');
if (!$bBusShowAll && !isset($arParams['ID']) && $userId > 0 && !isset($arParams['SKIP_CHECK'])) {
if (isset(self::$FRIENDS_USERS[$userId])) {
$arID = self::$FRIENDS_USERS[$userId];
} else {
if (CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed()) {
$arID = array($userId);
$dbFriends = CSocNetUserRelations::GetList(array(), array("USER_ID" => $userId, "RELATION" => SONET_RELATIONS_FRIEND), false, false, array("ID", "FIRST_USER_ID", "SECOND_USER_ID"));
if ($dbFriends) {
while ($arFriends = $dbFriends->Fetch()) {
$arID[] = $userId == $arFriends["FIRST_USER_ID"] ? $arFriends["SECOND_USER_ID"] : $arFriends["FIRST_USER_ID"];
}
}
self::$FRIENDS_USERS[$userId] = $arID;
}
}
}
$arUsers = array();
if (self::$ONLINE_USERS && $arParams['GET_OFFLINE'] == 'N') {
$arUsers = self::$ONLINE_USERS;
} else {
if (!self::$ONLINE_USERS || $arParams['GET_OFFLINE'] == 'Y') {
$enable = self::Enable();
$arUsers = array();
$query = new \Bitrix\Main\Entity\Query(\Bitrix\Main\UserTable::getEntity());
$query->registerRuntimeField('', new \Bitrix\Main\Entity\ReferenceField('ref', 'Bitrix\\Im\\StatusTable', array('=this.ID' => 'ref.USER_ID')));
$query->addSelect('ID')->addSelect('ref.COLOR', 'COLOR')->addSelect('PERSONAL_GENDER');
if ($enable) {
$query->addSelect('ref.STATUS', 'STATUS')->addSelect('ref.IDLE', 'IDLE')->addSelect('ref.MOBILE_LAST_DATE', 'MOBILE_LAST_DATE');
}
if ($arParams['GET_OFFLINE'] == 'N') {
$query->addFilter('>LAST_ACTIVITY_DATE', new \Bitrix\Main\DB\SqlExpression(Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180')));
} else {
$sago = Bitrix\Main\Application::getConnection()->getSqlHelper()->addSecondsToDateTime('-180');
$query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN LAST_ACTIVITY_DATE > ' . $sago . ' THEN \'Y\' ELSE \'N\' END'));
$query->addSelect('IS_ONLINE_CUSTOM');
$query->addFilter('=ID', $arID);
}
$result = $query->exec();
while ($arUser = $result->fetch()) {
$color = null;
if (isset($arUser['COLOR']) && strlen($arUser['COLOR']) > 0) {
$color = IM\Color::getColor($arUser['COLOR']);
}
if (!$color) {
$color = \CIMContactList::GetUserColor($arUser["ID"], $arUser['PERSONAL_GENDER'] == 'M' ? 'M' : 'F');
}
$arUsers[$arUser["ID"]] = array('id' => $arUser["ID"], 'status' => $enable && in_array($arUser['STATUS'], self::$AVAILABLE_STATUSES) ? $arUser['STATUS'] : 'online', 'color' => $color, 'idle' => $enable && is_object($arUser['IDLE']) ? $arUser['IDLE']->getTimestamp() : 0, 'mobileLastDate' => $enable && is_object($arUser['MOBILE_LAST_DATE']) ? $arUser['MOBILE_LAST_DATE']->getTimestamp() : 0);
if ($arParams['GET_OFFLINE'] == 'Y' && $arUser['IS_ONLINE_CUSTOM'] == 'N') {
$arUsers[$arUser["ID"]]['status'] = 'offline';
$arUsers[$arUser["ID"]]['idle'] = 0;
$arUsers[$arUser["ID"]]['mobileLastDate'] = 0;
}
}
if ($arParams['GET_OFFLINE'] == 'N') {
self::$ONLINE_USERS = $arUsers;
}
}
}
$arResult = array();
if (empty($arID)) {
$arResult = $arUsers;
} else {
foreach ($arID as $userId) {
if (isset($arUsers[$userId])) {
$arResult[$userId] = $arUsers[$userId];
}
}
}
return array('users' => $arResult);
}
示例13: array
if (IsModuleInstalled("bizproc"))
$arSocNetFeaturesSettings["files"]["operations"]["bizproc"] = array();
$arSocNetFeaturesSettings["files"]["operations"]["write"] = array();
if (COption::GetOptionString("socialnetwork", "allow_files_user", "Y") == "Y")
{
$arSocNetFeaturesSettings["files"]["subscribe_events"]["files"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_USER] = array(
"TITLE" => GetMessage("SOCNET_LOG_FILES_USER"),
"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_FILES_USER_SETTINGS"),
"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_FILES_USER_SETTINGS_1"),
"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_FILES_USER_SETTINGS_2"),
);
$arSocNetFeaturesSettings["files"]["allowed"][] = SONET_ENTITY_USER;
$arSocNetFeaturesSettings["files"]["operations"]["view"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_files_operation_view_user", (CSocNetUser::IsFriendsAllowed() ? SONET_RELATIONS_TYPE_FRIENDS : SONET_RELATIONS_TYPE_ALL));
$arSocNetFeaturesSettings["files"]["operations"]["write_limited"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_files_operation_write_limited_user", SONET_RELATIONS_TYPE_NONE);
$arSocNetFeaturesSettings["files"]["operations"]["write"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_files_operation_write_user", SONET_RELATIONS_TYPE_NONE);
}
if (COption::GetOptionString("socialnetwork", "allow_files_group", "Y") == "Y")
{
$arSocNetFeaturesSettings["files"]["subscribe_events"]["files"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_GROUP] = array(
"TITLE" => GetMessage("SOCNET_LOG_FILES_GROUP"),
"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_FILES_GROUP_SETTINGS"),
"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_FILES_GROUP_SETTINGS_1"),
"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_FILES_GROUP_SETTINGS_2"),
);
$arSocNetFeaturesSettings["files"]["allowed"][] = SONET_ENTITY_GROUP;
$arSocNetFeaturesSettings["files"]["operations"]["view"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_files_operation_view_group", SONET_ROLES_USER);
示例14: Add
//.........这里部分代码省略.........
if (isset($result['reason'])) {
$CBXSanitizer = new CBXSanitizer();
$CBXSanitizer->AddTags(array('a' => array('href', 'style', 'target'), 'b' => array(), 'u' => array(), 'i' => array(), 'br' => array(), 'span' => array('style')));
$reason = $CBXSanitizer->SanitizeHtml($result['reason']);
} else {
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE) {
$reason = GetMessage("IM_ERROR_MESSAGE_CANCELED");
} else {
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_SYSTEM) {
$reason = GetMessage("IM_ERROR_NOTIFY_CANCELED");
} else {
$reason = GetMessage("IM_ERROR_GROUP_CANCELED");
}
}
}
$GLOBALS["APPLICATION"]->ThrowException($reason, "ERROR_FROM_OTHER_MODULE");
return false;
}
}
if (!self::CheckFields($arFields)) {
return false;
}
if ($arFields['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE) {
if (isset($arFields['TO_CHAT_ID'])) {
$chatId = $arFields['TO_CHAT_ID'];
$arRel = CIMChat::GetRelationById($chatId);
foreach ($arRel as $rel) {
if ($rel['USER_ID'] == $arFields['FROM_USER_ID']) {
continue;
}
$arFields['TO_USER_ID'] = $rel['USER_ID'];
}
if (!IsModuleInstalled('intranet')) {
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_MESSAGE_PRIVACY_SELF'), "ERROR_FROM_PRIVACY_SELF");
return false;
} else {
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE, $arFields['TO_USER_ID']) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_MESSAGE_PRIVACY'), "ERROR_FROM_PRIVACY");
return false;
}
}
}
} else {
$arFields['FROM_USER_ID'] = intval($arFields['FROM_USER_ID']);
$arFields['TO_USER_ID'] = intval($arFields['TO_USER_ID']);
if (!IsModuleInstalled('intranet')) {
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_MESSAGE_PRIVACY_SELF'), "ERROR_FROM_PRIVACY_SELF");
return false;
} else {
if (CIMSettings::GetPrivacy(CIMSettings::PRIVACY_MESSAGE, $arFields['TO_USER_ID']) == CIMSettings::PRIVACY_RESULT_CONTACT && CModule::IncludeModule('socialnetwork') && CSocNetUser::IsFriendsAllowed() && !CSocNetUserRelations::IsFriends($arFields['FROM_USER_ID'], $arFields['TO_USER_ID'])) {
$GLOBALS["APPLICATION"]->ThrowException(GetMessage('IM_ERROR_MESSAGE_PRIVACY'), "ERROR_FROM_PRIVACY");
return false;
}
}
}
$chatId = CIMMessage::GetChatId($arFields['FROM_USER_ID'], $arFields['TO_USER_ID']);
}
if ($chatId > 0) {
$arParams = array();
$arParams['CHAT_ID'] = $chatId;
$arParams['AUTHOR_ID'] = intval($arFields['AUTHOR_ID']);
$arParams['MESSAGE'] = $arFields['MESSAGE'];
$arParams['MESSAGE_OUT'] = $arFields['MESSAGE_OUT'];
$arParams['NOTIFY_MODULE'] = $arFields['NOTIFY_MODULE'];
示例15: InitUserPerms
/**
* <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;
}