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