• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/sharing.php
  • Класс: BitrixDiskSharing
  • Вызов: Sharing::processConnectAndNotify
static function processConnectAndNotify(array $successSharingByEntity, BaseObject $objectToSharing)
{
	$isFolder = $objectToSharing instanceof Folder;
	if(Configuration::canAutoconnectSharedObjects())
	{
		$urlManager = Driver::getInstance()->getUrlManager();
		foreach($successSharingByEntity as $entity => $sharingModel)
		{
			/** @var BitrixDiskSharing $sharingModel */
			if(!$sharingModel->approve())
			{
				unset($successSharingByEntity[$entity]);
			}
			else
			{
				if(!$sharingModel->isToUser())
				{
					continue;
				}

				$linkToViewDocument = self::generateLinkToViewDocument($sharingModel, $objectToSharing);
				$pathInListing = $urlManager::getUrlFocusController('showObjectInGrid', array(
					'objectId' => $sharingModel->getLinkObjectId(),
					'type' => $isFolder ? 'folder' : 'file',
				));
				$uriToDisconnect = $urlManager::getUrlFocusController('showObjectInGrid', array(
					'objectId' => $sharingModel->getLinkObjectId(),
					'type' => $isFolder ? 'folder' : 'file',
					'cmd' => 'detach',
				));
				[$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' => Loc::getMessage($isFolder? 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY' : 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY_FILE', array(
						'#NAME#' => ''.$objectToSharing->getName().'',
						'#DESCRIPTION#' => $sharingModel->getDescription(),
						'#DISCONNECT_LINK#' => ''.Loc::getMessage('DISK_SHARING_MODEL_TEXT_DISCONNECT_LINK').'',
					)),
					'NOTIFY_MESSAGE_OUT' => strip_tags(Loc::getMessage($isFolder? 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY' : 'DISK_SHARING_MODEL_AUTOCONNECT_NOTIFY_FILE', array(
						'#NAME#' => ''.$objectToSharing->getName().'',
						'#DESCRIPTION#' => $sharingModel->getDescription(),
						'#DISCONNECT_LINK#' => '',
					))),
				))
				;
			}
		}
	}
	else
	{
		$buttons = array(
			array(
				'TITLE' => Loc::getMessage($isFolder ? 'DISK_SHARING_MODEL_APPROVE_Y' : 'DISK_SHARING_MODEL_APPROVE_Y_FILE'),
				'VALUE' => 'Y',
				'TYPE' => 'accept'
			),
			array(
				'TITLE' => Loc::getMessage('DISK_SHARING_MODEL_APPROVE_N_2_DECLINE'),
				'VALUE' => 'N',
				'TYPE' => 'cancel'
			)
		);
		$message = Loc::getMessage($isFolder ? 'DISK_SHARING_MODEL_TEXT_APPROVE_CONFIRM' : 'DISK_SHARING_MODEL_TEXT_APPROVE_CONFIRM_FILE', array(
			'#NAME#' => $objectToSharing->getName(),
		));

		foreach($successSharingByEntity as $entity => $sharingModel)
		{
			if(!$sharingModel->isToUser())
			{
				continue;
			}
			[$subTag, $tag] = $sharingModel->getNotifyTags();
			Driver::getInstance()->sendNotify(mb_substr($sharingModel->getToEntity(), 1), array(
				'NOTIFY_BUTTONS' => $buttons,
				'NOTIFY_TYPE' => 'IM_NOTIFY_CONFIRM',
				'FROM_USER_ID' => $sharingModel->getCreatedBy(),
				'NOTIFY_EVENT' => 'sharing',
				'NOTIFY_TAG' => $tag,
				'NOTIFY_SUB_TAG' => $subTag,
				'NOTIFY_MESSAGE' => $message,
				'NOTIFY_MESSAGE_OUT' => strip_tags($message),
			));
		}
	}
}