• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/symlinkhelper.php
  • Класс: CWebDavSymlinkHelper
  • Вызов: CWebDavSymlinkHelper::sendNotify
static function sendNotify(array $folderInvite)
{
	$serverName = (CMain::IsHTTPS() ? "https" : "http")."://".((defined("SITE_SERVER_NAME") && SITE_SERVER_NAME <> '') ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", ""));
	if(empty($folderInvite['IS_DELETED']) && !empty($folderInvite['IS_APPROVED']) && $folderInvite['USER_ID'] != $folderInvite['INVITE_USER_ID'] && BitrixMainLoader::includeModule('im'))
	{
		$sectionToShare = CIBlockSection::getList(array(), array(
			'ID' => $folderInvite['SECTION_ID'],
			'IBLOCK_ID' => $folderInvite['IBLOCK_ID'],
			'CHECK_PERMISSIONS' => 'N',
		), false, array('NAME'))->fetch();
		if(empty($sectionToShare['NAME']))
		{
			return;
		}
		$notifyFields = array();
		$notifyFields['NOTIFY_MODULE'] = 'webdav';
		$notifyFields['NOTIFY_EVENT'] = "invite";
		$notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
		$notifyFields['FROM_USER_ID'] = $folderInvite['USER_ID'];
		$notifyFields['TO_USER_ID'] = $folderInvite['INVITE_USER_ID'];
		$notifyFields['NOTIFY_TAG'] = BitrixWebdavFolderInviteTable::getNotifyTag($folderInvite);
		$notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}";

		$uriShow = CComponentEngine::makePathFromTemplate(
			CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'),
			array('user_id' => $folderInvite['INVITE_USER_ID']
		)) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'];
		$uriDisconnect = CComponentEngine::makePathFromTemplate(
			CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'),
			array('user_id' => $folderInvite['INVITE_USER_ID']
		)) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'] . '#disconnect';
		$notifyFields['NOTIFY_MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_APPROVE_N1',
			array(
				'#FOLDERNAME#' => '' . $sectionToShare['NAME'] . '',
				'#DISCONNECT_LINK#' => '' . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . '',
				'#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '',
			)
		);
		$notifyFields['NOTIFY_MESSAGE_OUT'] = GetMessage('WD_SYMLINK_INVITE_TEXT_APPROVE_N1',
			array(
				'#FOLDERNAME#' => $sectionToShare['NAME'] . " ({$uriShow})",
				'#DISCONNECT_LINK#' => "nn". GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . ': ' . $serverName . $uriDisconnect,
				'#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '',
			)
		);

		CIMNotify::Add($notifyFields);
	}
	//self invite. It's connect group disk.
	elseif(empty($folderInvite['IS_DELETED']) && $folderInvite['USER_ID'] == $folderInvite['INVITE_USER_ID'] && BitrixMainLoader::includeModule('im'))
	{
		$sectionToShare = CIBlockSection::getList(array(), array(
			'ID' => $folderInvite['SECTION_ID'],
			'IBLOCK_ID' => $folderInvite['IBLOCK_ID'],
			'CHECK_PERMISSIONS' => 'N',
		), false, array('NAME', 'SOCNET_GROUP_ID'))->fetch();
		if(empty($sectionToShare['NAME']) || empty($sectionToShare['SOCNET_GROUP_ID']))
		{
			return;
		}

		if(BitrixMainLoader::includeModule('socialnetwork'))
		{
			$group = CSocNetGroup::GetList(array(), array('ID' => $sectionToShare['SOCNET_GROUP_ID']), false, false, array('NAME'))->fetch();
		}

		$notifyFields = array();
		$notifyFields['NOTIFY_MODULE'] = 'webdav';
		$notifyFields['NOTIFY_EVENT'] = "invite";
		$notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
		$notifyFields['FROM_USER_ID'] = $folderInvite['USER_ID'];
		$notifyFields['TO_USER_ID'] = $folderInvite['INVITE_USER_ID'];
		$notifyFields['NOTIFY_TAG'] = BitrixWebdavFolderInviteTable::getNotifyTag($folderInvite);
		$notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}";

		$uriShow = CComponentEngine::makePathFromTemplate(
			CWebDavSymlinkHelper::getPathPattern('group', '/company/personal/user/#user_id#/'),
			array('user_id' => $folderInvite['INVITE_USER_ID']
		)) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'];
		$uriDisconnect = CComponentEngine::makePathFromTemplate(
			CWebDavSymlinkHelper::getPathPattern('user', '/company/personal/user/#user_id#/'),
			array('user_id' => $folderInvite['INVITE_USER_ID']
		)) . 'files/lib/?result=sec' . $folderInvite['LINK_SECTION_ID'] . '#disconnect';

		if(CWebDavTools::allowAutoconnectShareGroupFolder())
		{
			$notifyFields['NOTIFY_MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_N1',
				array(
					'#FOLDERNAME#' => $sectionToShare['NAME'],
					'#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '',
					'#GROUPNAME#' => '' . Emoji::decode($group['NAME']) . '',
					'#DISCONNECT_LINK#' => '' . GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . '',
				)
			);
			$notifyFields['NOTIFY_MESSAGE_OUT'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_N1',
				array(
					'#FOLDERNAME#' => $sectionToShare['NAME'],
					'#INVITETEXT#' => $folderInvite['DESCRIPTION'] ?: '',
					'#GROUPNAME#' => Emoji::decode($group['NAME']),
					'#DISCONNECT_LINK#' => "nn". GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_LINK') . ': ' . $serverName . $uriDisconnect,
				)
			);
		}
		elseif(empty($folderInvite['IS_APPROVED']))
		{
			$notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_CONFIRM;
			$notifyFields['NOTIFY_BUTTONS'] = Array(
				Array('TITLE' => GetMessage('WD_SYMLINK_INVITE_APPROVE_Y'), 'VALUE' => 'Y', 'TYPE' => 'accept'),
				Array('TITLE' => GetMessage('WD_SYMLINK_INVITE_APPROVE_N'), 'VALUE' => 'N', 'TYPE' => 'cancel')
			);

			$notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_GROUP_TEXT_APPROVE_CONFIRM_N1',
				array(
					'#FOLDERNAME#' => $sectionToShare['NAME'],
					'#GROUPNAME#' => $group['NAME'],
				)
			);
		}

		CIMNotify::Add($notifyFields);
	}
	elseif(!empty($folderInvite['IS_DELETED']) && BitrixMainLoader::includeModule('im'))
	{
		$sectionToShare = CIBlockSection::getList(array(), array(
			'ID' => $folderInvite['SECTION_ID'],
			'IBLOCK_ID' => $folderInvite['IBLOCK_ID'],
			'CHECK_PERMISSIONS' => 'N',
		), false, array('NAME'))->fetch();
		if(empty($sectionToShare['NAME']))
		{
			return;
		}
		$inviteUser = CUser::getById($folderInvite['INVITE_USER_ID']);
		if($inviteUser)
		{
			$inviteUser = $inviteUser->fetch();
		}
		$notifyFields = array();
		$notifyFields['NOTIFY_MODULE'] = 'webdav';
		$notifyFields['NOTIFY_EVENT'] = "invite";
		$notifyFields['NOTIFY_TYPE'] = IM_NOTIFY_FROM;
		$notifyFields['FROM_USER_ID'] = $folderInvite['INVITE_USER_ID'];
		$notifyFields['TO_USER_ID'] = $folderInvite['USER_ID'];
		$notifyFields['NOTIFY_TAG'] = BitrixWebdavFolderInviteTable::getNotifyTag($folderInvite);
		$notifyFields['NOTIFY_SUB_TAG'] = "WEBDAV|INVITE|{$folderInvite['ID']}";
		if(CWebDavTools::getUserGender($inviteUser['PERSONAL_GENDER']) == 'F')
		{
			$notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_F',
				array(
					'#FOLDERNAME#' => $sectionToShare['NAME'],
					'#USERNAME#' => CWebDavTools::getUserName($inviteUser)
				)
			);
		}
		else
		{
			$notifyFields['MESSAGE'] = GetMessage('WD_SYMLINK_INVITE_TEXT_DISCONNECT_M',
				array(
					'#FOLDERNAME#' => $sectionToShare['NAME'],
					'#USERNAME#' => CWebDavTools::getUserName($inviteUser)
				)
			);
		}

		CIMNotify::Add($notifyFields);
	}
}