• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/editdoccomponentbase.php
  • Класс: CWebDavEditDocComponentBase
  • Вызов: CWebDavEditDocComponentBase::deleteSession
protected function deleteSession($returnSession = false)
{
	if($this->isExclusiveEdit())
	{
		return $returnSession? array() : true;
	}
	//delete user session from document edit
	$webdav = $this->getWebdav();

	if($returnSession)
	{
		$onlineEditor = CWebDavLogOnlineEdit::getList(array(), array(
			'IBLOCK_ID' => $webdav->arParams['element_array']['IBLOCK_ID'],
			'SECTION_ID' => $webdav->arParams['element_array']['IBLOCK_SECTION_ID'],
			'ELEMENT_ID' => $webdav->arParams['element_array']['ID'],
			'SERVICE' => $this->getServiceName(),
			'SERVICE_FILE_ID' => $this->getFileId(),
			'USER_ID' => $this->getUser()->getId(),
		));

		if(($onlineEditor = $onlineEditor->fetch()) && empty($onlineEditor['ID']))
		{
			return false;
		}
		//todo delete session not by ID. This is mistake?
		return CWebDavLogOnlineEdit::delete(array(
			'IBLOCK_ID' => $webdav->arParams['element_array']['IBLOCK_ID'],
			'SECTION_ID' => $webdav->arParams['element_array']['IBLOCK_SECTION_ID'],
			'ELEMENT_ID' => $webdav->arParams['element_array']['ID'],
			'SERVICE' => $this->getServiceName(),
			'SERVICE_FILE_ID' => $this->getFileId(),
			'USER_ID' => $this->getUser()->getId(),
		))? $onlineEditor : false;
	}

	return CWebDavLogOnlineEdit::delete(array(
		'IBLOCK_ID' => $webdav->arParams['element_array']['IBLOCK_ID'],
		'SECTION_ID' => $webdav->arParams['element_array']['IBLOCK_SECTION_ID'],
		'ELEMENT_ID' => $webdav->arParams['element_array']['ID'],
		'SERVICE' => $this->getServiceName(),
		'SERVICE_FILE_ID' => $this->getFileId(),
		'USER_ID' => $this->getUser()->getId(),
	));
}