Exemple #1
0
 function MakeDavRedirect($ob, $currentPageUrl, $baseURL, $path, $is_root = false)
 {
     global $APPLICATION, $USER;
     if ($ob->IsDavHeaders('check_all') || array_search($_SERVER['REQUEST_METHOD'], array('DELETE')) !== false) {
         if (!$USER->IsAuthorized()) {
             $APPLICATION->RestartBuffer();
             CHTTP::SetStatus('401 Unauthorized');
             header('WWW-Authenticate: Basic realm="BitrixWebDav"');
             header('Content-length: 0');
             die;
         }
         if (!$ob->CheckRights($_SERVER['REQUEST_METHOD'])) {
             $ob->SetStatus('403 Forbidden');
             ShowError(GetMessage("WD_DAV_INSUFFICIENT_RIGHTS"));
             die;
         } elseif (!$ob->IsMethodAllow($_SERVER['REQUEST_METHOD'])) {
             CHTTP::SetStatus('405 Method not allowed');
             header('Allow: ' . join(',', array_keys($ob->allow)));
             ShowError(GetMessage("WD_DAV_UNSUPORTED_METHOD"));
             die;
         } else {
             $APPLICATION->RestartBuffer();
             if (isset($_SERVER['HTTP_DESTINATION'])) {
                 $_SERVER['HTTP_DESTINATION'] = urldecode($_SERVER['HTTP_DESTINATION']);
                 $pu = parse_url($_SERVER['HTTP_DESTINATION']);
                 $ob->SetBaseURL($baseURL);
                 if (strpos($pu['path'], $baseURL) === false) {
                     CHTTP::SetStatus('405 Method not allowed');
                     header('Allow: ' . join(',', array_keys($ob->allow)));
                     ShowError(GetMessage("WD_DAV_UNSUPORTED_METHOD"));
                     die;
                 }
             } else {
                 $ob->SetBaseURL(_uencode($baseURL));
             }
             $ob->SetPath($path);
             $fn = 'base_' . $_SERVER['REQUEST_METHOD'];
             call_user_func(array(&$ob, $fn));
             die;
         }
     } else {
         $ob->SetBaseURL(_uencode($baseURL));
         $ob->SetPath(_uencode(rtrim($path, '/')));
         if ($is_root) {
             return;
         }
         $ob->IsDir();
         if ($ob->arParams['is_file']) {
             $APPLICATION->RestartBuffer();
             $ob->base_GET();
             die;
         } else {
             LocalRedirect($currentPageUrl);
         }
     }
 }
Exemple #2
0
             $folderTree[] = array('NAME' => _getName($name), 'PATH' => _getPath($path, $arParams['SEF_FOLDER']), 'DEPTH_LEVEL' => $depth, 'MODE' => 'remote', 'DOCCOUNT' => $USER->IsAdmin() ? _getIBlockItemsCount($id) : false, 'IB_MODE' => _getIBlockMode($id));
         }
     }
 }
 if (intval($mode) > 0) {
     // for copy/move methods
     if (isset($_SERVER['HTTP_DESTINATION'])) {
         $arDestPath = explode('/', trim($destPath, '/'));
         if (empty($arDestPath[0])) {
             unset($arDestPath[0]);
         }
         if (sizeof($arDestPath) > 0) {
             $destName = $arDestPath[0];
         }
     }
     $obOther = new CWebDavIblock($mode, _uencode($localPath), $arParams);
     if (!empty($obOther->arError)) {
         ShowError($obOther->arError['text']);
         return false;
     }
     $obDavEventHandler = CWebDavSocNetEvent::GetRuntime();
     $obDavEventHandler->SetParams(array('PATH_TO_USER' => $arResult["URL_TEMPLATES"]['user_view'], 'PATH_TO_FILES_ELEMENT' => CIBlock::GetArrayByID($mode, "DETAIL_PAGE_URL"), 'IBLOCK_ID' => $mode));
     MakeDavRedirect($obOther, str_replace('#PATH#', '', $arUrlTemplates['i' . $mode]), $rootPath, $localPath, false);
 }
 // PERSONAL DOCS
 // ****************************************************
 if ($mode == 'private' || $mode == 'root') {
     if (CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $currentUserID, "files")) {
         $path = $arParams['SEF_FOLDER'] . $modes['private'] . '';
         $folderTree[] = array('NAME' => _getName($path), 'PATH' => _getPath($path, $arParams['SEF_FOLDER']), 'DEPTH_LEVEL' => 0, 'MODE' => 'remote', 'DOCCOUNT' => $USER->IsAdmin() ? _getIBlockItemsCount($arParams["IBLOCK_USER_ID"], null, 'user', $currentUserID) : false, 'CLASS' => 'personal');
     }