Your IP : 3.135.201.139


Current Path : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/socialnetwork/
Upload File :
Current File : /home/bitrix/ext_www/dev.klimatlend.ua/bitrix/modules/socialnetwork/include.php

<?
use Bitrix\Main\ModuleManager;
use Bitrix\Socialnetwork\Integration;
use Bitrix\Socialnetwork\UserToGroupTable;
use Bitrix\Socialnetwork\ComponentHelper;
use Bitrix\Main\Config\Option;

global $DBType;

IncludeModuleLangFile(__FILE__);

require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/socialnetwork/tools.php");

define("SONET_RELATIONS_FRIEND", "F");
define("SONET_RELATIONS_REQUEST", "Z");
define("SONET_RELATIONS_BAN", "B");

define("SONET_ROLES_OWNER", "A");
define("SONET_ROLES_MODERATOR", "E");
define("SONET_ROLES_USER", "K");
define("SONET_ROLES_BAN", "T");
define("SONET_ROLES_REQUEST", "Z");
define("SONET_ROLES_ALL", "N");
define("SONET_ROLES_AUTHORIZED", "L");

define("SONET_RELATIONS_TYPE_ALL", "A");
define("SONET_RELATIONS_TYPE_AUTHORIZED", "C");
define("SONET_RELATIONS_TYPE_FRIENDS2", "E");
define("SONET_RELATIONS_TYPE_FRIENDS", "M");
define("SONET_RELATIONS_TYPE_NONE", "Z");

define("SONET_INITIATED_BY_USER", "U");
define("SONET_INITIATED_BY_GROUP", "G");

define("SONET_MESSAGE_SYSTEM", "S");
define("SONET_MESSAGE_PRIVATE", "P");

define("DisableSonetLogVisibleSubscr", true);

$arClasses = array(
	"CSocNetGroup" => "classes/".$DBType."/group.php",
	"CSocNetGroupSubject" => "classes/".$DBType."/group_subject.php",
	"CSocNetUserToGroup" => "classes/".$DBType."/user_group.php",
	"CSocNetFeatures" => "classes/".$DBType."/group_features.php",
	"CSocNetFeaturesPerms" => "classes/".$DBType."/group_features_perms.php",
	"CSocNetUserRelations" => "classes/".$DBType."/user_relations.php",
	"CSocNetSmile" => "classes/".$DBType."/smile.php",
	"CSocNetUser" => "classes/".$DBType."/user.php",
	"CSocNetUserPerms" => "classes/".$DBType."/user_perms.php",
	"CSocNetUserEvents" => "classes/".$DBType."/user_events.php",
	"CSocNetMessages" => "classes/".$DBType."/messages.php",
	"CSocNetEventUserView" => "classes/".$DBType."/event_user_view.php",
	"CSocNetLog" => "classes/".$DBType."/log.php",
	"CSocNetLogTools" => "classes/general/log_tools.php",
	"CSocNetLogToolsPhoto" => "classes/general/log_tools_photo.php",
	"CSocNetForumComments" => "classes/general/log_forum_comments.php",
	"CSocNetLogRights" => "classes/general/log_rights.php",
	"CSocNetLogPages" => "classes/general/log_pages.php",
	"CSocNetLogFollow" => "classes/general/log_follow.php",
	"CSocNetLogSmartFilter" => "classes/".$DBType."/log_smartfilter.php",
	"CSocNetLogRestService" => "classes/general/rest.php",
	"logTextParser" => "classes/general/log_tools.php",
	"CSocNetPhotoCommentEvent" => "classes/general/log_tools_photo.php",
	"CSocNetLogComments" => "classes/".$DBType."/log_comments.php",
	"CSocNetLogEvents" => "classes/".$DBType."/log_events.php",
	"CSocNetLogCounter" => "classes/".$DBType."/log_counter.php",
	"CSocNetLogFavorites" => "classes/".$DBType."/log_favorites.php",
	"CSocNetLogComponent" => "classes/general/log_tools.php",
	"CSocNetSubscription" => "classes/".$DBType."/subscription.php",
	"CSocNetSearch" => "classes/general/search.php",
	"CSocNetSearchReindex" => "classes/general/search_reindex.php",
	"CSocNetTextParser" => "classes/general/functions.php",
	"CSocNetTools" => "classes/general/functions.php",
	"CSocNetAllowed" => "classes/general/functions.php",
	"CSocNetGroupAuthProvider" => "classes/general/authproviders.php",
	"CSocNetUserAuthProvider" => "classes/general/authproviders.php",
	"CSocNetLogDestination" => "classes/general/log_destination.php",
	"CSocNetNotifySchema" => "classes/general/notify_schema.php",
	"CSocNetPullSchema" => "classes/general/notify_schema.php",
	"socialnetwork" => "install/index.php",
);
CModule::AddAutoloadClasses("socialnetwork", $arClasses);

global $arSocNetAllowedRolesForUserInGroup;
$arSocNetAllowedRolesForUserInGroup = array(SONET_ROLES_MODERATOR, SONET_ROLES_USER, SONET_ROLES_BAN, SONET_ROLES_REQUEST, SONET_ROLES_OWNER);

global $arSocNetAllowedRolesForFeaturesPerms;
$arSocNetAllowedRolesForFeaturesPerms = array(SONET_ROLES_MODERATOR, SONET_ROLES_USER, SONET_ROLES_ALL, SONET_ROLES_OWNER, SONET_ROLES_AUTHORIZED);

global $arSocNetAllowedInitiatePerms;
$arSocNetAllowedInitiatePerms = array(SONET_ROLES_MODERATOR, SONET_ROLES_USER, SONET_ROLES_OWNER);

global $arSocNetAllowedSpamPerms;
$arSocNetAllowedSpamPerms = array(SONET_ROLES_MODERATOR, SONET_ROLES_USER, SONET_ROLES_OWNER, SONET_ROLES_ALL);

global $arSocNetAllowedRelations;
$arSocNetAllowedRelations = array(SONET_RELATIONS_FRIEND, SONET_RELATIONS_REQUEST, SONET_RELATIONS_BAN);

global $arSocNetAllowedRelationsType;
$arSocNetAllowedRelationsType = array(SONET_RELATIONS_TYPE_ALL, SONET_RELATIONS_TYPE_FRIENDS2, SONET_RELATIONS_TYPE_FRIENDS, SONET_RELATIONS_TYPE_NONE, SONET_RELATIONS_TYPE_AUTHORIZED);

global $arSocNetAllowedInitiatedByType;
$arSocNetAllowedInitiatedByType = array(SONET_INITIATED_BY_USER, SONET_INITIATED_BY_GROUP);

define("SONET_ENTITY_GROUP", "G");
define("SONET_ENTITY_USER", "U");

define("SONET_SUBSCRIBE_ENTITY_GROUP", "G");
define("SONET_SUBSCRIBE_ENTITY_USER", "U");

global $arSocNetAllowedEntityTypes;
$arSocNetAllowedEntityTypes = array(SONET_ENTITY_GROUP, SONET_ENTITY_USER);

$arEntityTypesDescTmp = array(
	SONET_SUBSCRIBE_ENTITY_GROUP => array(
		"TITLE_LIST" => GetMessage("SOCNET_LOG_LIST_G_ALL"),
		"TITLE_LIST_MY" => GetMessage("SOCNET_LOG_LIST_G_ALL_MY"),
		"TITLE_ENTITY" => GetMessage("SOCNET_LOG_G"),
		"TITLE_ENTITY_XDI" => GetMessage("SOCNET_LOG_XDI_G"),
		"TITLE_SETTINGS_ALL" => GetMessage("SOCNET_LOG_GROUP_SETTINGS_ALL"),
		"TITLE_SETTINGS_ALL_1" => GetMessage("SOCNET_LOG_GROUP_SETTINGS_ALL_1"),
		"TITLE_SETTINGS_ALL_2" => GetMessage("SOCNET_LOG_GROUP_SETTINGS_ALL_2"),
		"USE_CB_FILTER" => "Y",
		"HAS_MY" => "Y",
		"CLASS_MY"	=> "CSocNetTools",
		"METHOD_MY"	=> "GetMyGroups",
		"CLASS_OF" => "CSocNetTools",
		"METHOD_OF"	=> "GetGroupUsers",
		"CLASS_MY_BY_ID" => "CSocNetTools",
		"METHOD_MY_BY_ID" => "IsMyGroup",
		"CLASS_DESC_GET" => "CSocNetGroup",
		"METHOD_DESC_GET" => "GetByID",
		"CLASS_DESC_SHOW" => "CSocNetLogTools",
		"METHOD_DESC_SHOW" => "ShowGroup",
		"URL_PARAM_KEY" => "PATH_TO_GROUP",
		"URL_PATTERN" => "group_id",
		"HAS_SITE_ID" => "Y",
		"XDIMPORT_ALLOWED" => "Y"
	),
	SONET_SUBSCRIBE_ENTITY_USER	=> array(
		"TITLE_LIST" => GetMessage("SOCNET_LOG_LIST_U_ALL"),
		"TITLE_LIST_MY" => GetMessage("SOCNET_LOG_LIST_U_ALL_MY"),
		"TITLE_ENTITY" => GetMessage("SOCNET_LOG_U"),
		"TITLE_ENTITY_XDI" => GetMessage("SOCNET_LOG_XDI_U"),
		"TITLE_SETTINGS_ALL" => GetMessage("SOCNET_LOG_USER_SETTINGS_ALL"),
		"TITLE_SETTINGS_ALL_1" => GetMessage("SOCNET_LOG_USER_SETTINGS_ALL_1"),
		"TITLE_SETTINGS_ALL_2" => GetMessage("SOCNET_LOG_USER_SETTINGS_ALL_2"),
		"USE_CB_FILTER" => "Y",
		"HAS_CB" => "Y",
		"HAS_MY" => "Y",
		"CLASS_MY" => "CSocNetTools",
		"METHOD_MY"	=> "GetMyUsers",
		"CLASS_OF" => "CSocNetTools",
		"METHOD_OF" => "GetMyUsers",
		"CLASS_MY_BY_ID" => "CSocNetTools",
		"METHOD_MY_BY_ID" => "IsMyUser",
		"CLASS_DESC_GET" => "CSocNetUser",
		"METHOD_DESC_GET" => "GetByID",
		"CLASS_DESC_SHOW" => "CSocNetLogTools",
		"METHOD_DESC_SHOW" => "ShowUser",
		"URL_PARAM_KEY" => "PATH_TO_USER",
		"URL_PATTERN" => "user_id",
		"XDIMPORT_ALLOWED" => "Y"
	)
);

if (
	!CSocNetUser::IsFriendsAllowed()
	|| !CBXFeatures::IsFeatureEnabled("Friends")
)
{
	$arEntityTypesDescTmp[SONET_SUBSCRIBE_ENTITY_USER]["HAS_MY"] = "N";
}

$arEntityTypeTmp = array(
	SONET_SUBSCRIBE_ENTITY_USER,
	SONET_SUBSCRIBE_ENTITY_GROUP
);

CSocNetAllowed::AddAllowedEntityType($arEntityTypeTmp);

foreach ($arEntityTypesDescTmp as $entityTypeDescCode => $arEntityTypeDesc)
{
	CSocNetAllowed::AddAllowedEntityTypeDesc($entityTypeDescCode, $arEntityTypeDesc);
}

if (
	!defined("BX_MOBILE_LOG")
	|| BX_MOBILE_LOG != true
)
{
	CModule::IncludeModule('intranet');
	IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/socialnetwork/install/js/log_destination.php');

	CJSCore::RegisterExt('socnetlogdest', array(
		'js' => '/bitrix/js/socialnetwork/log-destination.js',
		'css' => '/bitrix/js/main/core/css/core_finder.css',
		'lang_additional' => array(
			'LM_POPUP_TITLE' => GetMessage("LM_POPUP_TITLE"),
			'LM_POPUP_TAB_LAST' => GetMessage("LM_POPUP_TAB_LAST"),
			'LM_POPUP_TAB_SG' => GetMessage("LM_POPUP_TAB_SG"),
			'LM_POPUP_TAB_SG_PROJECT' => GetMessage("LM_POPUP_TAB_SG_PROJECT"),
			'LM_POPUP_TAB_STRUCTURE' => GetMessage("LM_POPUP_TAB_STRUCTURE"),
			'LM_POPUP_TAB_EMAIL' => GetMessage("LM_POPUP_TAB_EMAIL"),
			'LM_POPUP_TAB_CRMEMAIL' => GetMessage("LM_POPUP_TAB_CRMEMAIL"),
			'LM_POPUP_TAB_STRUCTURE_EXTRANET' => GetMessage("LM_POPUP_TAB_STRUCTURE_EXTRANET"),
			'LM_POPUP_CHECK_STRUCTURE' => GetMessage("LM_POPUP_CHECK_STRUCTURE"),
			'LM_POPUP_TAB_LAST_USERS' => GetMessage("LM_POPUP_TAB_LAST_USERS"),
			'LM_POPUP_TAB_LAST_NETWORK' => GetMessage("LM_POPUP_TAB_LAST_NETWORK"),
			'LM_POPUP_TAB_LAST_CRMEMAILS' => GetMessage("LM_POPUP_TAB_LAST_CRMEMAILS"),
			'LM_POPUP_TAB_LAST_CONTACTS' => GetMessage("LM_POPUP_TAB_LAST_CONTACTS"),
			'LM_POPUP_TAB_LAST_COMPANIES' => GetMessage("LM_POPUP_TAB_LAST_COMPANIES"),
			'LM_POPUP_TAB_LAST_LEADS' => GetMessage("LM_POPUP_TAB_LAST_LEADS"),
			'LM_POPUP_TAB_LAST_DEALS' => GetMessage("LM_POPUP_TAB_LAST_DEALS"),
			'LM_POPUP_TAB_LAST_SG' => GetMessage("LM_POPUP_TAB_LAST_SG"),
			'LM_POPUP_TAB_LAST_SG_PROJECT' => GetMessage("LM_POPUP_TAB_LAST_SG_PROJECT"),
			'LM_POPUP_TAB_LAST_STRUCTURE' => GetMessage("LM_POPUP_TAB_LAST_STRUCTURE"),
			'LM_POPUP_TAB_SEARCH' => GetMessage("LM_POPUP_TAB_SEARCH"),
			'LM_SEARCH_PLEASE_WAIT' => GetMessage("LM_SEARCH_PLEASE_WAIT"),
			'LM_EMPTY_LIST' => GetMessage("LM_EMPTY_LIST"),
			'LM_PLEASE_WAIT' => GetMessage("LM_PLEASE_WAIT"),
			'LM_CREATE_SONETGROUP_TITLE' => GetMessage("LM_CREATE_SONETGROUP_TITLE"),
			'LM_CREATE_SONETGROUP_BUTTON_CREATE' => GetMessage("LM_CREATE_SONETGROUP_BUTTON_CREATE"),
			'LM_CREATE_SONETGROUP_BUTTON_CANCEL' => GetMessage("LM_CREATE_SONETGROUP_BUTTON_CANCEL"),
			'LM_INVITE_EMAIL_USER_BUTTON_OK' => GetMessage("LM_INVITE_EMAIL_USER_BUTTON_OK"),
			'LM_INVITE_EMAIL_USER_TITLE' => GetMessage("LM_INVITE_EMAIL_USER_TITLE"),
			'LM_INVITE_EMAIL_USER_PLACEHOLDER_NAME' => GetMessage("LM_INVITE_EMAIL_USER_PLACEHOLDER_NAME"),
			'LM_INVITE_EMAIL_USER_PLACEHOLDER_LAST_NAME' => GetMessage("LM_INVITE_EMAIL_USER_PLACEHOLDER_LAST_NAME"),
			'LM_INVITE_EMAIL_CRM_CREATE_CONTACT' => GetMessage("LM_INVITE_EMAIL_CRM_CREATE_CONTACT"),
			'LM_POPUP_WAITER_TEXT' => GetMessage("LM_POPUP_WAITER_TEXT"),
			'LM_POPUP_SEARCH_NETWORK' => GetMessage("LM_POPUP_SEARCH_NETWORK"),
		),
		'rel' => array('core', 'popup', 'json', 'finder')
	));
}

$transformationLimit = 0;
if(
	ModuleManager::isModuleInstalled('disk') &&
	ModuleManager::isModuleInstalled('transformer') &&
	Option::get('disk', 'disk_allow_video_transformation', 'N') == 'Y'
)
{
	$transformationLimit = Option::get('disk', 'disk_max_size_for_video_transformation', 300) * 1024 * 1024;
}
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/socialnetwork/install/js/video_recorder.php');
CJSCore::RegisterExt('videorecorder', array(
	'js' => '/bitrix/js/socialnetwork/video_recorder.js',
	'css' => '/bitrix/js/socialnetwork/css/video_recorder.css',
	'lang_additional' => array(
		'BLOG_VIDEO_RECORD_BUTTON' => GetMessage('BLOG_VIDEO_RECORD_BUTTON'),
		'BLOG_VIDEO_RECORD_CANCEL_BUTTON' => GetMessage('BLOG_VIDEO_RECORD_CANCEL_BUTTON'),
		'BLOG_VIDEO_RECORD_LOGO' => GetMessage('BLOG_VIDEO_RECORD_LOGO'),
		'BLOG_VIDEO_RECORD_STOP_BUTTON' => GetMessage('BLOG_VIDEO_RECORD_STOP_BUTTON'),
		'BLOG_VIDEO_RECORD_USE_BUTTON' => GetMessage('BLOG_VIDEO_RECORD_USE_BUTTON'),
		'BLOG_VIDEO_RECORD_IN_PROGRESS_LABEL' => GetMessage('BLOG_VIDEO_RECORD_IN_PROGRESS_LABEL'),
		'BLOG_VIDEO_RECORD_AGREE' => GetMessage('BLOG_VIDEO_RECORD_AGREE'),
		'BLOG_VIDEO_RECORD_CLOSE' => GetMessage('BLOG_VIDEO_RECORD_CLOSE'),
		'BLOG_VIDEO_RECORD_ASK_PERMISSIONS' => GetMessage('BLOG_VIDEO_RECORD_ASK_PERMISSIONS'),
		'BLOG_VIDEO_RECORD_REQUIREMENTS' => GetMessage('BLOG_VIDEO_RECORD_REQUIREMENTS'),
		'BLOG_VIDEO_RECORD_REQUIREMENTS_TITLE' => GetMessage('BLOG_VIDEO_RECORD_REQUIREMENTS_TITLE'),
		'BLOG_VIDEO_RECORD_PERMISSIONS_ERROR' => GetMessage('BLOG_VIDEO_RECORD_PERMISSIONS_ERROR'),
		'BLOG_VIDEO_RECORD_PERMISSIONS_TITLE' => GetMessage('BLOG_VIDEO_RECORD_PERMISSIONS_TITLE'),
		'BLOG_VIDEO_RECORD_SPOTLIGHT_MESSAGE' => GetMessage('BLOG_VIDEO_RECORD_SPOTLIGHT_MESSAGE'),
		'DISK_VIDEO_TRANSFORMATION_LIMIT' => $transformationLimit,
		'BLOG_VIDEO_RECORD_TRANFORM_LIMIT_TEXT' => GetMessage('BLOG_VIDEO_RECORD_TRANFORM_LIMIT_TEXT'),
		'BLOG_VIDEO_RECORD_RESTART_BUTTON' => GetMessage('BLOG_VIDEO_RECORD_RESTART_BUTTON'),
		'BLOG_VIDEO_RECORD_PERMISSIONS_ERROR_TITLE' => GetMessage('BLOG_VIDEO_RECORD_PERMISSIONS_ERROR_TITLE'),
		'BLOG_VIDEO_RECORD_ERROR_CHROME_HTTPS' => GetMessage('BLOG_VIDEO_RECORD_ERROR_CHROME_HTTPS'),
	),
	'rel' => array('core', 'popup'),
));

CJSCore::RegisterExt('comment_aux', array(
	'lang_additional' => array(),
	'rel' => array('socialnetwork.commentaux')
));

IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/socialnetwork/install/js/render_parts.php');
CJSCore::RegisterExt('render_parts', array(
	'js' => '/bitrix/js/socialnetwork/render_parts.js',
	'lang_additional' => array(
		'SONET_RENDERPARTS_JS_DESTINATION_ALL' => GetMessage(IsModuleInstalled('intranet') ? "SONET_RENDERPARTS_JS_DESTINATION_ALL" : GetMessage("SONET_RENDERPARTS_JS_DESTINATION_ALL_BUS")),
		'SONET_RENDERPARTS_JS_HIDDEN' => GetMessage("SONET_RENDERPARTS_JS_HIDDEN")
	),
	'rel' => array()
));

IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/socialnetwork/install/js/content_view.php');
CJSCore::RegisterExt('content_view', array(
	'js' => '/bitrix/js/socialnetwork/content_view.js',
	'css' => '/bitrix/js/socialnetwork/css/content_view.css',
	'lang_additional' => array(
		'SONET_CONTENTVIEW_JS_HIDDEN_COUNT' => GetMessage("SONET_CONTENTVIEW_JS_HIDDEN_COUNT"),
	),
	'rel' => array('ajax', 'popup')
));

// forum
$arFeatureTmp = array(
	"allowed" => array(),
	"operations" => array(
		"full" => array(),
		"newtopic" => array(),
		"answer" => array(),
		"view" => array(),
	),
	"minoperation" => array("view"),
	"subscribe_events" => array(
		"forum" =>  array(
			"ENTITIES" => array(),
			"OPERATION" => "view",
			"CLASS_FORMAT" => "CSocNetLogTools",
			"METHOD_FORMAT" => "FormatEvent_Forum",
			"HAS_CB" => "Y",
			"COMMENT_EVENT"	=> array(
				"EVENT_ID" => "forum",
				"OPERATION" => "view",
				"OPERATION_ADD" => "answer",
				"ADD_CALLBACK" => array("CSocNetLogTools", "AddComment_Forum"),
				"UPDATE_CALLBACK" => array("CSocNetLogTools", "UpdateComment_Forum"),
				"DELETE_CALLBACK" => array("CSocNetLogTools", "DeleteComment_Forum"),
				"CLASS_FORMAT" => "CSocNetLogTools",
				"METHOD_FORMAT" => "FormatComment_Forum",
				"RATING_TYPE_ID" => "FORUM_POST"
			)
		)
	)
);

if (COption::GetOptionString("socialnetwork", "allow_forum_user", "Y") == "Y")
{
	$arFeatureTmp["subscribe_events"]["forum"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_USER] = array(
			"TITLE" => GetMessage("SOCNET_LOG_FORUM_USER"),
			"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_FORUM_USER_SETTINGS"),
			"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_FORUM_USER_SETTINGS_1"),
			"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_FORUM_USER_SETTINGS_2"),
		);

	$arFeatureTmp["allowed"][] = SONET_ENTITY_USER;
	$arFeatureTmp["operations"]["full"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_forum_operation_full_user", SONET_RELATIONS_TYPE_NONE);
	$arFeatureTmp["operations"]["newtopic"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_forum_operation_newtopic_user", SONET_RELATIONS_TYPE_NONE);
	$arFeatureTmp["operations"]["answer"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_forum_operation_answer_user", (CSocNetUser::IsFriendsAllowed() ? SONET_RELATIONS_TYPE_FRIENDS : SONET_RELATIONS_TYPE_AUTHORIZED));
	$arFeatureTmp["operations"]["view"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_forum_operation_view_user", SONET_RELATIONS_TYPE_ALL);
}

if (COption::GetOptionString("socialnetwork", "allow_forum_group", "Y") == "Y")
{
	$arFeatureTmp["subscribe_events"]["forum"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_GROUP] = array(
		"TITLE" => GetMessage("SOCNET_LOG_FORUM_GROUP"),
		"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_FORUM_GROUP_SETTINGS"),
		"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_FORUM_GROUP_SETTINGS_1"),
		"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_FORUM_GROUP_SETTINGS_2"),
	);

	$arFeatureTmp["allowed"][] = SONET_ENTITY_GROUP;
	$arFeatureTmp["operations"]["full"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_forum_operation_full_group", SONET_ROLES_MODERATOR);
	$arFeatureTmp["operations"]["newtopic"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_forum_operation_newtopic_group", SONET_ROLES_USER);
	$arFeatureTmp["operations"]["answer"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_forum_operation_answer_group", SONET_ROLES_USER);
	$arFeatureTmp["operations"]["view"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_forum_operation_view_group", SONET_ROLES_USER);
}

CSocNetAllowed::AddAllowedFeature("forum", $arFeatureTmp);

// photo
$arFeatureTmp = array(
	"allowed" => array(),
	"operations" => array(
		"write" => array(),
		"view" => array(),
	),
	"minoperation" => array("view"),
	"subscribe_events" => array(
		"photo" =>  array(
			"ENTITIES" => array(),
			"OPERATION" => "view",
			"CLASS_FORMAT" => "CSocNetLogTools",
			"METHOD_FORMAT"	=> "FormatEvent_Photo",
			"HAS_CB" => "Y",
			"FULL_SET" => array("photo", "photo_photo", "photo_comment"),
			"COMMENT_EVENT"	=> array(
				"EVENT_ID" => "photoalbum_comment",
				"OPERATION" => "view",
				"OPERATION_ADD"	=> "view",
				"ADD_CALLBACK" => array("CSocNetPhotoCommentEvent", "AddComment_PhotoAlbum"),
				"UPDATE_CALLBACK" => "NO_SOURCE",
				"DELETE_CALLBACK" => "NO_SOURCE",
				"CLASS_FORMAT" => "CSocNetLogTools",
				"METHOD_FORMAT"	=> "FormatComment_PhotoAlbum",
				"RATING_TYPE_ID" => "LOG_COMMENT"
			)
		),
		"photo_photo" =>  array(
			"OPERATION" => "view",
			"CLASS_FORMAT" => "CSocNetLogTools",
			"METHOD_FORMAT"	=> "FormatEvent_PhotoPhoto",
			"HIDDEN" => true,
			"HAS_CB" => "Y",
			"ENTITIES" => array(
				SONET_SUBSCRIBE_ENTITY_USER => array(),
				SONET_SUBSCRIBE_ENTITY_GROUP => array()
			),
			"COMMENT_EVENT"	=> array(
				"EVENT_ID" => "photo_comment",
				"OPERATION" => "view",
				"OPERATION_ADD"	=> "view",
				"ADD_CALLBACK" => array("CSocNetPhotoCommentEvent", "AddComment_Photo"),
				"UPDATE_CALLBACK" => array("CSocNetPhotoCommentEvent", "UpdateComment_Photo"),
				"DELETE_CALLBACK" => array("CSocNetPhotoCommentEvent", "DeleteComment_Photo"),
				"CLASS_FORMAT" => "CSocNetLogTools",
				"METHOD_FORMAT"	=> "FormatComment_Photo"
			)
		)
	)
);

if (COption::GetOptionString("socialnetwork", "allow_photo_user", "Y") == "Y")
{
	$arFeatureTmp["subscribe_events"]["photo"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_USER] = array(
		"TITLE" => GetMessage("SOCNET_LOG_PHOTO_USER"),
		"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_PHOTO_USER_SETTINGS"),
		"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_PHOTO_USER_SETTINGS_1"),
		"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_PHOTO_USER_SETTINGS_2"),
	);

	$arFeatureTmp["allowed"][] = SONET_ENTITY_USER;
	$arFeatureTmp["operations"]["write"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_photo_operation_write_user", SONET_RELATIONS_TYPE_NONE);
	$arFeatureTmp["operations"]["view"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_photo_operation_view_user", SONET_RELATIONS_TYPE_ALL);
}

if (COption::GetOptionString("socialnetwork", "allow_photo_group", "Y") == "Y")
{
	$arFeatureTmp["subscribe_events"]["photo"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_GROUP] = array(
			"TITLE" 			=> GetMessage("SOCNET_LOG_PHOTO_GROUP"),
			"TITLE_SETTINGS"	=> GetMessage("SOCNET_LOG_PHOTO_GROUP_SETTINGS"),
			"TITLE_SETTINGS_1"	=> GetMessage("SOCNET_LOG_PHOTO_GROUP_SETTINGS_1"),
			"TITLE_SETTINGS_2"	=> GetMessage("SOCNET_LOG_PHOTO_GROUP_SETTINGS_2"),
		);

	$arFeatureTmp["allowed"][] = SONET_ENTITY_GROUP;
	$arFeatureTmp["operations"]["write"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_photo_operation_write_group", SONET_ROLES_MODERATOR);
	$arFeatureTmp["operations"]["view"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_photo_operation_view_group", SONET_ROLES_USER);
}

CSocNetAllowed::AddAllowedFeature("photo", $arFeatureTmp);

$bIntranet = IsModuleInstalled('intranet');
$bCalendar = ($bIntranet && CBXFeatures::IsFeatureEditable("calendar"));

// calendar
if ($bCalendar)
{
	$arFeatureTmp = array(
		"allowed" => array(),
		"operations" => array(
			"write" => array(),
			"view" => array(),
		),
		"minoperation" => array("view"),
	);

	if (COption::GetOptionString("socialnetwork", "allow_calendar_user", "Y") == "Y")
	{
		$arFeatureTmp["allowed"][] = SONET_ENTITY_USER;
		$arFeatureTmp["operations"]["write"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_calendar_operation_write_user", SONET_RELATIONS_TYPE_NONE);
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_calendar_operation_view_user", SONET_RELATIONS_TYPE_ALL);
	}

	if (COption::GetOptionString("socialnetwork", "allow_calendar_group", "Y") == "Y")
	{
		$arFeatureTmp["allowed"][] = SONET_ENTITY_GROUP;
		$arFeatureTmp["operations"]["write"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_calendar_operation_write_group", SONET_ROLES_MODERATOR);
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_calendar_operation_view_group", SONET_ROLES_USER);
	}

	CSocNetAllowed::AddAllowedFeature("calendar", $arFeatureTmp);
}

// tasks
if ($bIntranet)
{
	$arFeatureTmp = array(
		"allowed" => array(),
		"operations" => array(
			"view" => array(),
			"view_all" => array(),
			"sort" => array(),
			"create_tasks" => array(),
			"edit_tasks" => array(),
			"delete_tasks" => array(),
			"modify_folders" => array(),
			"modify_common_views" => array(),
		),
		"minoperation" => array("view_all", "view")
	);

	if (IsModuleInstalled('tasks'))
	{
		$arFeatureTmp["subscribe_events"] = array(
			"tasks" =>  array(
				"ENTITIES" => array(),
				"OPERATION" => "view",
				"CLASS_FORMAT" => "CSocNetLogTools",
				"METHOD_FORMAT" => "FormatEvent_Task2",
				"HAS_CB" => "Y",
				"FULL_SET" => array("tasks", "tasks_comment", "crm_activity_add"),
				"COMMENT_EVENT" => array(
					"EVENT_ID" => "tasks_comment",
					"OPERATION" => "view",
					"OPERATION_ADD"	=> "log_rights",
					"ADD_CALLBACK" => array("CSocNetLogTools", "AddComment_Tasks"),
					"UPDATE_CALLBACK" => array("CSocNetLogTools", "UpdateComment_Task"),
					"DELETE_CALLBACK" => array("CSocNetLogTools", "DeleteComment_Task"),
					"CLASS_FORMAT" => "CSocNetLogTools",
					"METHOD_FORMAT"	=> "FormatComment_Forum",
					"METHOD_CANEDIT" => array("CSocNetLogTools", "CanEditComment_Task"),
					"METHOD_CANEDITOWN" => array("CSocNetLogTools", "CanEditOwnComment_Task"),
					"METHOD_GET_URL" => array("CSocNetLogTools", "GetCommentUrl_Task"),
					"RATING_TYPE_ID" => "FORUM_POST"
				)
			)
		);
	}

	if (COption::GetOptionString("socialnetwork", "allow_tasks_user", "Y") == "Y")
	{
		$arFeatureTmp["subscribe_events"]["tasks"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_USER] = array(
			"TITLE" => GetMessage("SOCNET_LOG_TASKS_USER"),
			"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_TASKS_USER_SETTINGS"),
			"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_TASKS_USER_SETTINGS_1"),
			"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_TASKS_USER_SETTINGS_2"),
		);

		$arFeatureTmp["allowed"][] = SONET_ENTITY_USER;
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_tasks_operation_view_user", SONET_RELATIONS_TYPE_ALL);
		$arFeatureTmp["operations"]["view_all"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_tasks_operation_view_all_user", SONET_RELATIONS_TYPE_NONE);
		$arFeatureTmp["operations"]["create_tasks"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_tasks_operation_create_tasks_user", SONET_RELATIONS_TYPE_AUTHORIZED);
		$arFeatureTmp["operations"]["edit_tasks"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_tasks_operation_edit_tasks_user", SONET_RELATIONS_TYPE_NONE);
		$arFeatureTmp["operations"]["delete_tasks"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_tasks_operation_delete_tasks_user", SONET_RELATIONS_TYPE_NONE);
		$arFeatureTmp["operations"]["modify_folders"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_tasks_operation_modify_folders_user", SONET_RELATIONS_TYPE_NONE);
		$arFeatureTmp["operations"]["modify_common_views"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_tasks_operation_modify_common_views_user", SONET_RELATIONS_TYPE_NONE);
	}

	if (COption::GetOptionString("socialnetwork", "allow_tasks_group", "Y") == "Y")
	{
		$arFeatureTmp["subscribe_events"]["tasks"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_GROUP] = array(
			"TITLE" => GetMessage("SOCNET_LOG_TASKS_GROUP"),
			"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_TASKS_GROUP_SETTINGS"),
			"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_TASKS_GROUP_SETTINGS_1"),
			"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_TASKS_GROUP_SETTINGS_2"),
		);

		$arFeatureTmp["allowed"][] = SONET_ENTITY_GROUP;
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_view_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["view_all"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_view_all_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["sort"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_sort_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["create_tasks"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_create_tasks_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["edit_tasks"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_edit_tasks_group", SONET_ROLES_MODERATOR);
		$arFeatureTmp["operations"]["delete_tasks"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_delete_tasks_group", SONET_ROLES_MODERATOR);
		$arFeatureTmp["operations"]["modify_folders"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_modify_folders_group", SONET_ROLES_MODERATOR);
		$arFeatureTmp["operations"]["modify_common_views"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_tasks_operation_modify_common_views_group", SONET_ROLES_MODERATOR);
	}

	CSocNetAllowed::AddAllowedFeature("tasks", $arFeatureTmp);
}

// files
if (
	$bIntranet
	&& (
		COption::GetOptionString("socialnetwork", "allow_files_user", "Y") == "Y"
		|| COption::GetOptionString("socialnetwork", "allow_files_group", "Y") == "Y"
	)
)
{
	$arFeatureTmp = array(
		"allowed" => array(),
		"operations" => array(
			"view" => array(),
			"write_limited" => array(),
		),
		"minoperation" => array("view"),
		"subscribe_events" => array(
			"files" => array(
				"ENTITIES" => array(),
				"OPERATION" => "view",
				"CLASS_FORMAT" => "CSocNetLogTools",
				"METHOD_FORMAT" => "FormatEvent_Files",
				"HAS_CB" => "Y",
				"FULL_SET" => array("files", "files_comment"),
				"COMMENT_EVENT" => array(
					"EVENT_ID" => "files_comment",
					"OPERATION" => "view",
					"OPERATION_ADD" => "",
					"ADD_CALLBACK" => array("CSocNetLogTools", "AddComment_Files"),
					"CLASS_FORMAT" => "CSocNetLogTools",
					"METHOD_FORMAT" => "FormatComment_Files"
				)
			)
		)
	);

	if (IsModuleInstalled("bizproc"))
	{
		$arFeatureTmp["operations"]["bizproc"] = array();
	}

	$arFeatureTmp["operations"]["write"] = array();

	if (COption::GetOptionString("socialnetwork", "allow_files_user", "Y") == "Y")
	{
		$arFeatureTmp["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"),
			);

		$arFeatureTmp["allowed"][] = SONET_ENTITY_USER;
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_files_operation_view_user", (CSocNetUser::IsFriendsAllowed() ? SONET_RELATIONS_TYPE_FRIENDS : SONET_RELATIONS_TYPE_ALL));
		$arFeatureTmp["operations"]["write_limited"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_files_operation_write_limited_user", SONET_RELATIONS_TYPE_NONE);
		$arFeatureTmp["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")
	{
		$arFeatureTmp["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"),
			);

		$arFeatureTmp["allowed"][] = SONET_ENTITY_GROUP;
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_files_operation_view_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["write_limited"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_files_operation_write_limited_group", SONET_ROLES_MODERATOR);
		$arFeatureTmp["operations"]["write"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_files_operation_write_group", SONET_ROLES_MODERATOR);
	}

	CSocNetAllowed::AddAllowedFeature("files", $arFeatureTmp);
}

if (
	COption::GetOptionString("socialnetwork", "allow_blog_user", "Y") == "Y"
	|| COption::GetOptionString("socialnetwork", "allow_blog_group", "Y") == "Y"
)
{
	$livefeedProvider = new \Bitrix\Socialnetwork\Livefeed\BlogPost;

	$arFeatureTmp = array(
		"allowed" => array(),
		"operations" => array(
			"view_post" => array(),
			"premoderate_post" => array(),
			"write_post" => array(),
			"moderate_post" => array(),
			"full_post" => array(),
			"view_comment" => array(),
			"premoderate_comment" => array(),
			"write_comment" => array(),
			"moderate_comment" => array(),
			"full_comment" => array(),
		),
		"minoperation" => array("view_comment", "view_post"),
		"subscribe_events" => array(
			"blog" =>  array(
				"ENTITIES" => array(),
				"OPERATION" => "",
				"NO_SET" => true,
				"REAL_EVENT_ID" => "blog_post",
				"FULL_SET" => array_unique(array_merge($livefeedProvider->getEventId(), array("blog", "blog_comment")))
			),
			"blog_post" => array(
				"ENTITIES" => array(),
				"OPERATION" => "view_post",
				"HIDDEN" => true,
				"CLASS_FORMAT"	=> "CSocNetLogTools",
				"METHOD_FORMAT" => "FormatEvent_Blog",
				"HAS_CB" => "Y",
				"COMMENT_EVENT" => array(
					"EVENT_ID"	=> "blog_comment",
					"OPERATION" => "view_comment",
					"OPERATION_ADD" => "premoderate_comment",
					"ADD_CALLBACK"	=> array("CSocNetLogTools", "AddComment_Blog"),
					"CLASS_FORMAT"	=> "CSocNetLogTools",
					"METHOD_FORMAT" => "FormatComment_Blog"
				)
			),
			"blog_comment" => array(
				"ENTITIES" => array(),
				"OPERATION" => "view_comment",
				"HIDDEN" => true,
				"CLASS_FORMAT"	=> "CSocNetLogTools",
				"METHOD_FORMAT"	=> "FormatEvent_Blog",
				"HAS_CB" => "Y"
			)
		)
	);

	if (COption::GetOptionString("socialnetwork", "allow_blog_user", "Y") == "Y")
	{
		$arFeatureTmp["subscribe_events"]["blog"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_USER] = array(
				"TITLE" 			=> GetMessage("SOCNET_LOG_BLOG_USER"),
				"TITLE_SETTINGS"	=> GetMessage("SOCNET_LOG_BLOG_USER_SETTINGS"),
				"TITLE_SETTINGS_1"	=> GetMessage("SOCNET_LOG_BLOG_USER_SETTINGS_1"),
				"TITLE_SETTINGS_2"	=> GetMessage("SOCNET_LOG_BLOG_USER_SETTINGS_2"),
			);

		$arFeatureTmp["subscribe_events"]["blog_post"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_USER] = array(
				"TITLE" => GetMessage("SOCNET_LOG_BLOG_POST_USER")
			);

		$arFeatureTmp["allowed"][] = SONET_ENTITY_USER;
		$arFeatureTmp["operations"]["view_post"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_blog_operation_view_post_user", SONET_RELATIONS_TYPE_ALL);
		$arFeatureTmp["operations"]["view_comment"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_blog_operation_view_comment_user", SONET_RELATIONS_TYPE_ALL);
		$arFeatureTmp["operations"]["premoderate_comment"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_blog_operation_premoderate_comment_user", SONET_RELATIONS_TYPE_AUTHORIZED);
		$arFeatureTmp["operations"]["write_comment"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_blog_operation_write_comment_user", SONET_RELATIONS_TYPE_AUTHORIZED);
	}

	if (COption::GetOptionString("socialnetwork", "allow_blog_group", "Y") == "Y")
	{
		$arFeatureTmp["subscribe_events"]["blog"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_GROUP] = array(
				"TITLE" 			=> GetMessage("SOCNET_LOG_BLOG_GROUP"),
				"TITLE_SETTINGS"	=> GetMessage("SOCNET_LOG_BLOG_GROUP_SETTINGS"),
				"TITLE_SETTINGS_1"	=> GetMessage("SOCNET_LOG_BLOG_GROUP_SETTINGS_1"),
				"TITLE_SETTINGS_2"	=> GetMessage("SOCNET_LOG_BLOG_GROUP_SETTINGS_2"),
			);

		$arFeatureTmp["subscribe_events"]["blog_post"]["ENTITIES"][SONET_SUBSCRIBE_ENTITY_GROUP] = array(
				"TITLE" => GetMessage("SOCNET_LOG_BLOG_POST_GROUP")
			);

		$arFeatureTmp["allowed"][] = SONET_ENTITY_GROUP;
		$arFeatureTmp["operations"]["view_post"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_view_post_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["premoderate_post"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_premoderate_post_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["write_post"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_write_post_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["moderate_post"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_moderate_post_group", SONET_ROLES_MODERATOR);
		$arFeatureTmp["operations"]["full_post"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_full_post_group", SONET_ROLES_OWNER);
		$arFeatureTmp["operations"]["view_comment"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_view_comment_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["premoderate_comment"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_premoderate_comment_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["write_comment"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_write_comment_group", SONET_ROLES_USER);
		$arFeatureTmp["operations"]["moderate_comment"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_moderate_comment_group", SONET_ROLES_MODERATOR);
		$arFeatureTmp["operations"]["full_comment"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_blog_operation_full_comment_group", SONET_ROLES_MODERATOR);

		$arFeatureTmp["operations"]["write_post"]["restricted"][SONET_ENTITY_GROUP] = array(SONET_ROLES_ALL);
		$arFeatureTmp["operations"]["premoderate_post"]["restricted"][SONET_ENTITY_GROUP] = array(SONET_ROLES_ALL);
		$arFeatureTmp["operations"]["moderate_post"]["restricted"][SONET_ENTITY_GROUP] = array(SONET_ROLES_ALL);
		$arFeatureTmp["operations"]["full_post"]["restricted"][SONET_ENTITY_GROUP] = array(SONET_ROLES_ALL);
		$arFeatureTmp["operations"]["moderate_comment"]["restricted"][SONET_ENTITY_GROUP] = array(SONET_ROLES_ALL);
		$arFeatureTmp["operations"]["full_comment"]["restricted"][SONET_ENTITY_GROUP] = array(SONET_ROLES_ALL);
	}
	$arFeatureTmp["subscribe_events"]["blog_post_important"] = $arFeatureTmp["subscribe_events"]["blog_post"];
	if (ModuleManager::isModuleInstalled('vote'))
	{
		$arFeatureTmp["subscribe_events"]["blog_post_vote"] = $arFeatureTmp["subscribe_events"]["blog_post"];
	}
	if (ModuleManager::isModuleInstalled('intranet'))
	{
		$arFeatureTmp["subscribe_events"]["blog_post_grat"] = $arFeatureTmp["subscribe_events"]["blog_post"];
	}
	CSocNetAllowed::AddAllowedFeature("blog", $arFeatureTmp);
}

if (
	IsModuleInstalled('search')
	&& (
		COption::GetOptionString("socialnetwork", "allow_search_user", "N") == "Y"
		|| COption::GetOptionString("socialnetwork", "allow_search_group", "Y") == "Y"
	)
)
{
	$arFeatureTmp = array(
		"allowed" => array(),
		"operations" => array(),
		"minoperation" => array(),
	);

	if (COption::GetOptionString("socialnetwork", "allow_search_user", "N") == "Y")
	{
		$arFeatureTmp["allowed"][] = SONET_ENTITY_USER;
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_USER] = COption::GetOptionString("socialnetwork", "default_search_operation_view_user", SONET_RELATIONS_TYPE_ALL);
	}

	if (COption::GetOptionString("socialnetwork", "allow_search_group", "Y") == "Y")
	{
		$arFeatureTmp["allowed"][] = SONET_ENTITY_GROUP;
		$arFeatureTmp["operations"]["view"][SONET_ENTITY_GROUP] = COption::GetOptionString("socialnetwork", "default_search_operation_view_group", SONET_ROLES_USER);
	}

	CSocNetAllowed::addAllowedFeature("search", $arFeatureTmp);
}

if (
	ModuleManager::isModuleInstalled('im')
	&& (COption::GetOptionString('socialnetwork', 'use_workgroup_chat', "Y") == "Y")
)
{
	$arFeatureTmp = array(
		"allowed" => array(SONET_ENTITY_GROUP),
		"operations" => array(),
		"minoperation" => array(),
	);

	CSocNetAllowed::addAllowedFeature("chat", $arFeatureTmp);
}

$arLogEvents = array(
	"system" =>  array(
		"ENTITIES"	=> array(
			SONET_SUBSCRIBE_ENTITY_GROUP => array(
				"TITLE" => GetMessage("SOCNET_LOG_SYSTEM_GROUP"),
				"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_SYSTEM_GROUP_SETTINGS"),
				"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_SYSTEM_GROUP_SETTINGS_1"),
				"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_SYSTEM_GROUP_SETTINGS_2"),
				"OPERATION" => "viewsystemevents",
			),
			SONET_SUBSCRIBE_ENTITY_USER => array(
				"TITLE" => GetMessage("SOCNET_LOG_SYSTEM_USER"),
				"TITLE_SETTINGS" => GetMessage("SOCNET_LOG_SYSTEM_USER_SETTINGS"),
				"TITLE_SETTINGS_1" => GetMessage("SOCNET_LOG_SYSTEM_USER_SETTINGS_1"),
				"TITLE_SETTINGS_2" => GetMessage("SOCNET_LOG_SYSTEM_USER_SETTINGS_2"),
				"OPERATION" => "viewprofile"
			)
		),
		"FULL_SET" => array("system", "system_friends", "system_groups"),
		"CLASS_FORMAT"	=> "CSocNetLogTools",
		"METHOD_FORMAT" => "FormatEvent_System"
	),
	"system_groups" => array(
		"ENTITIES" => array(
			SONET_SUBSCRIBE_ENTITY_USER => array(
				"TITLE" => GetMessage("SOCNET_LOG_SYSTEM_GROUPS_USER"),
				"OPERATION" => "viewgroups"
			)
		),
		"HIDDEN" => true,
		"CLASS_FORMAT" => "CSocNetLogTools",
		"METHOD_FORMAT" => "FormatEvent_SystemGroups"
	),
	"system_friends" =>  array(
		"ENTITIES" => array(
			SONET_SUBSCRIBE_ENTITY_USER => array(
				"TITLE" => GetMessage("SOCNET_LOG_SYSTEM_FRIENDS_USER"),
				"OPERATION" => "viewfriends"
			)
		),
		"HIDDEN" => true,
		"CLASS_FORMAT" => "CSocNetLogTools",
		"METHOD_FORMAT" => "FormatEvent_SystemFriends"
	)
);

foreach ($arLogEvents as $eventCode => $arLogEventTmp)
{
	CSocNetAllowed::AddAllowedLogEvent($eventCode, $arLogEventTmp);
}

global $arSocNetUserOperations;
$arSocNetUserOperations = array(
	"invitegroup" => SONET_RELATIONS_TYPE_AUTHORIZED,
	"message" => SONET_RELATIONS_TYPE_AUTHORIZED,
	"videocall" => SONET_RELATIONS_TYPE_AUTHORIZED,
	"viewfriends" => COption::GetOptionString("socialnetwork", "default_user_viewfriends", SONET_RELATIONS_TYPE_ALL),
	"viewgroups" => COption::GetOptionString("socialnetwork", "default_user_viewgroups", SONET_RELATIONS_TYPE_ALL),
	"viewprofile" => COption::GetOptionString("socialnetwork", "default_user_viewprofile", SONET_RELATIONS_TYPE_ALL),
);

global $arSocNetUserEvents;
$arSocNetUserEvents = array(
	"SONET_NEW_MESSAGE",
	"SONET_VIDEO_CALL",
	"SONET_INVITE_FRIEND",
	"SONET_INVITE_GROUP",
	"SONET_AGREE_FRIEND",
	"SONET_BAN_FRIEND"
);

if(
	!IsModuleInstalled("video")
	|| !CBXFeatures::IsFeatureEnabled("VideoConference")
)
{
	unset($arSocNetUserOperations["videocall"]);
	unset($arSocNetUserEvents[1]);
}

if (!CBXFeatures::IsFeatureEnabled("WebMessenger"))
{
	unset($arSocNetUserOperations["message"]);
	unset($arSocNetUserEvents[0]);
}

if (!CBXFeatures::IsFeatureEnabled("Workgroups"))
{
	unset($arSocNetUserOperations["invitegroup"]);
	unset($arSocNetUserOperations["viewgroups"]);
	unset($arSocNetUserEvents[3]);
}

if (!defined("CACHED_b_sonet_group_subjects"))
{
	define("CACHED_b_sonet_group_subjects", 3600);
}

class CSocNetUpdater
{
	function Run($version)
	{
		include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/socialnetwork/updtr".$version.".php");
	}
}

?>