• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/sharing.php
  • Класс: BitrixDiskSharing
  • Вызов: Sharing::onBeforeConfirmNotify
static function onBeforeConfirmNotify($module, $tag, $value, $notify)
{
	global $USER;
	if (!$USER instanceof CUser)
	{
		return;
	}

	$userId = $USER->getId();
	if ( !($module === Driver::INTERNAL_MODULE_ID && $userId) )
	{
		return;
	}
	$sharingModel = static::loadByNotifyTag($tag);

	if(!$sharingModel || !$sharingModel->getRealObject())
	{
		return;
	}

	if(!$sharingModel->isToUser())
	{
		return;
	}

	if($sharingModel->getToEntity() !== self::CODE_USER . $userId)
	{
		return;
	}

	[, $tag] = $sharingModel->getNotifyTags();
	CIMNotify::deleteByTag($tag);

	if($value === 'N')
	{
		$sharingModel->decline($userId);
		return;
	}

	if($sharingModel->approve())
	{
		$isFolder = $sharingModel->getLinkObject() instanceof Folder;

		$linkToViewDocument = self::generateLinkToViewDocument($sharingModel, $sharingModel->getLinkObject());
		$pathInListing = Driver::getInstance()->getUrlManager()->getUrlFocusController('showObjectInGrid', array(
			'objectId' => $sharingModel->getLinkObjectId(),
			'type' => $isFolder ? 'folder' : 'file',
		));
		$message = Loc::getMessage(
			$isFolder ? 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY' : 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY_FILE',
			array(
				'#NAME#' => '' . $sharingModel->getLinkObject()->getName() . '',
				'#DESCRIPTION#' => '',
				'#DISCONNECT_LINK#' => '',
			)
		);
		[$subTag, $tag] = $sharingModel->getNotifyTags();
		Driver::getInstance()->sendNotify(mb_substr($sharingModel->getToEntity(), 1), array(
			'FROM_USER_ID' => $sharingModel->getCreatedBy(),
			'NOTIFY_EVENT' => 'sharing',
			'NOTIFY_TAG' => $tag,
			'NOTIFY_SUB_TAG' => $subTag,
			'NOTIFY_MESSAGE' => $message,
			'NOTIFY_MESSAGE_OUT' => strip_tags($message),
		));
	}
}