- Модуль: 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;
}
}
}