- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/editdoccomponentbase.php
- Класс: CWebDavEditDocComponentBase
- Вызов: CWebDavEditDocComponentBase::saveNewFile
protected function saveNewFile(array $fileData)
{
$filename = CTempFile::GetFileName(uniqid('_wd'));
CheckDirPath($filename);
$doc = $this
->getDocHandler()
->downloadFile(array(
'id' => $this->getFileId(),
'mimeType' => $this
->getWebdav()
->get_mime_type('1.' . $fileData['createType'])
))
;
file_put_contents($filename, $doc['content']);
global $USER;
$dataUserSection = CWebDavIblock::getRootSectionDataForUser($USER->GetID());
if(!$dataUserSection)
{
return array('status' => 'error');
}
$createdDocFolderId = CIBlockWebdavSocnet::createCreatedDocFolder($dataUserSection['IBLOCK_ID'], $dataUserSection['SECTION_ID'], $USER->GetID());
if(!$createdDocFolderId)
{
return array('status' => 'error');
}
$storage = new CWebDavStorageCore();
$storage->setStorageId(array(
'IBLOCK_ID' => $dataUserSection['IBLOCK_ID'],
'IBLOCK_SECTION_ID' => $dataUserSection['SECTION_ID'],
));
$nameToSavedFile = $storage->regenerateNameIfNonUnique($doc['name'], $createdDocFolderId);
$tmpFile = new CWebDavStubTmpFile;
$tmpFile->path = $filename;
try
{
$fileData = $storage->addFile($nameToSavedFile, $createdDocFolderId, $tmpFile);
$response = array(
'status' => 'success',
'elementId' => $fileData['extra']['id'],
'sectionId' => $fileData['extra']['sectionId'],
'name' => $nameToSavedFile,
'sizeInt' => $fileData['size'],
'type' => CWebDavBase::get_mime_type($nameToSavedFile),
'link' => str_replace('#element_id#', $fileData['extra']['id'], CWebDavSocNetEvent::getRuntime()->arPath['ELEMENT_EDIT_INLINE_URL']),
'nameWithoutExtension' => GetFileNameWithoutExtension($nameToSavedFile),
);
}
catch(Exception $e)
{
$response = array('status' => 'error');
}
return $response;
}