- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/lib/invitedispatcher.php
- Класс: BitrixWebdavInviteDispatcher
- Вызов: InviteDispatcher::processActionShare
public function processActionShare(array $params)
{
$this->params = $params;
$attachSectionData = $this->getSectionDataByAttachObject($params['attachObject']);
CWebDavSymlinkHelper::setPathPattern('user', $params['pathToUser']);
CWebDavSymlinkHelper::setPathPattern('group', $params['pathToGroup']);
$result = array();
foreach ($params['attachToUserIds'] as $userIdToShare)
{
if($userIdToShare == $params['inviteFromUserId'])
{
//to owner we don't create really symlink. Already there section.
$result[] = array(
'userId' => $attachSectionData['SECTION_ID'],
);
continue;
}
$targetSectionData = $this->getSectionDataByUserId($userIdToShare);
$targetSectionData['IBLOCK_SECTION_ID'] = $targetSectionData['SECTION_ID'];
$linkData = array(
'ID' => $attachSectionData['SECTION_ID'],
'IBLOCK_ID' => $attachSectionData['IBLOCK_ID'],
'NAME' => $this->generateNameForSymLinkSection($targetSectionData, $params['attachObject']),
'CREATED_BY' => $params['inviteFromUserId'],
'INVITE_USER_ID' => $userIdToShare,
'CAN_EDIT' => $params['canEdit'],
'CAN_FORWARD' => 0,
);
$symlinkSectionId = CWebDavSymlinkHelper::createSymLinkSection($targetSectionData, $linkData, $params['attachObject']['type']);
if($symlinkSectionId)
{
$result[] = array(
'userId' => $symlinkSectionId,
);
}
}
if($result)
{
CWebDavDiskDispatcher::sendChangeStatus($params['inviteFromUserId'], 'share_section');
global $DB;
//update timestamp_x for incremental snapshot from disk.
$section = new CIBlockSection;
$section->update($attachSectionData['SECTION_ID'], array('~TIMESTAMP_X' => $DB->getNowFunction()), false, false);
return $this->sendJsonResponse(array(
'status' => self::STATUS_SUCCESS,
'sections' => $result,
));
}
return $this->sendJsonResponse(array(
'status' => self::STATUS_ERROR,
));
}