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