/** * @param bool $returnSession - return data of deleted session if delete success, else - false; * @return bool|\CDBResult|array */ 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())); }