• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/symlinkhelper.php
  • Класс: CWebDavSymlinkHelper
  • Вызов: CWebDavSymlinkHelper::onBeforeConfirmNotify
static function onBeforeConfirmNotify($module, $tag, $value, $arNotify)
{
	global $USER;
	$userId = $USER->getId();
	if ($module == 'webdav' && $userId)
	{
		$tagData = explode('|', $tag);
		$folderInviteId = intval($tagData[2]);
		if ($tagData[0] == "WEBDAV" && $tagData[1] == "INVITE" && $folderInviteId > 0 && $userId == $tagData[3])
		{
			if (BitrixMainLoader::includeModule('im'))
			{
				CIMNotify::DeleteByTag(BitrixWebdavFolderInviteTable::getNotifyTag(array('ID' => $folderInviteId, 'INVITE_USER_ID' => $userId)));
			}
			//decline
			if($value === 'N')
			{
				BitrixWebdavFolderInviteTable::delete($folderInviteId);
				return false;
			}

			$targetSectionData = CWebDavIblock::getRootSectionDataForUser($userId);
			if(!$targetSectionData)
			{
				return false;
			}
			$folderInviteData = BitrixWebdavFolderInviteTable::getRowById($folderInviteId);
			if(!$folderInviteData)
			{
				return false;
			}

			$sectionToShare = CIBlockSection::getList(array(), array(
				'ID' => $folderInviteData['SECTION_ID'],
				'IBLOCK_ID' => $folderInviteData['IBLOCK_ID'],
				'CHECK_PERMISSIONS' => 'N',
			), false, array('NAME', 'SOCNET_GROUP_ID'))->fetch();
			if(empty($sectionToShare['NAME']) || empty($sectionToShare['SOCNET_GROUP_ID']))
			{
				return false;
			}

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

			$dispatcher = new BitrixWebdavInviteDispatcher;
			$attachObjectType = CWebDavSymlinkHelper::ENTITY_TYPE_GROUP;
			$attachObjectId = (int)$groupId;

			$inviteComponentParams = array(
				'attachObject' => array(
					'id' => $attachObjectId,
					'type' => $attachObjectType,
				),
				'attachToUserId' => $folderInviteData['INVITE_USER_ID'],
				'inviteFromUserId' => $folderInviteData['USER_ID'],
				'canEdit' => $folderInviteData['CAN_EDIT'],
			);
			$response = $dispatcher->processActionConnect($inviteComponentParams);
			if($response['status'] == $dispatcher::STATUS_SUCCESS)
			{
				BitrixWebdavFolderInviteTable::update($folderInviteId, array(
					'IS_APPROVED' => true,
					'LINK_SECTION_ID' => $response['sectionId'],
				));
			}

			return $response['status'] == $dispatcher::STATUS_SUCCESS;
		}
	}
}