Exemplo n.º 1
0
 if ($USER->GetId() && check_bitrix_sessid()) {
     $data = CWebDavIblock::getRootSectionDataForUser($USER->GetID());
     if ($data) {
         $savedFolderId = CIBlockWebdavSocnet::createSavedFolder($data['IBLOCK_ID'], $data['SECTION_ID'], $USER->GetID());
         if ($savedFolderId) {
             $wdElement = $ob->GetObject(array('check_permissions' => false), false);
             //todo hack by load from url with historyget (example)
             if ($wdElement['not_found']) {
                 $partUri = explode('element/historyget/', $ob->uri);
                 if (!empty($partUri[1])) {
                     $elementId = (int) $partUri[1];
                     $wdElement = $ob->GetObject(array('check_permissions' => false, 'element_id' => $elementId), false);
                 }
             }
             if ($ob->CheckWebRights('', array('action' => 'read', 'arElement' => $wdElement), false)) {
                 $storage = new CWebDavStorageCore();
                 $storage->setStorageId(array('IBLOCK_ID' => $data['IBLOCK_ID'], 'IBLOCK_SECTION_ID' => $data['SECTION_ID']));
                 $filename = $storage->regenerateNameIfNonUnique($wdElement['element_name'], $savedFolderId);
                 $tmpFile = new CWebDavStubTmpFile();
                 if ($_REQUEST['v']) {
                     list($arFileH, $optionsH, $fullpath, $filenameH) = $ob->getHistoryFileData($wdElement['element_array']['ID'], (int) $_REQUEST['v'], $p);
                     $tmpFile->path = $fullpath;
                 } else {
                     $copyTmpFile = CFile::MakeFileArray($wdElement['element_array']['PROPERTY_FILE_VALUE']);
                     $tmpFile->path = $copyTmpFile['tmp_name'];
                 }
                 $response = array();
                 try {
                     $fileData = $storage->addFile($filename, $savedFolderId, $tmpFile);
                     $savedName = CWebDavIblock::getSavedMetaData();
                     $pathToUserLib = str_replace(array('#USER_ID#', '#user_id#'), array($USER->GetID(), $USER->GetID()), CWebDavIblock::LibOptions('lib_paths', true, $data['IBLOCK_ID']));
Exemplo n.º 2
0
 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;
 }