require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/prolog.php"); if (!$USER->CanDoOperation('fileman_upload_files')) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/include.php"); IncludeModuleLangFile(__FILE__); $addUrl = 'lang='.LANGUAGE_ID.($logical == "Y"?'&logical=Y':''); $strWarning = ""; $io = CBXVirtualIo::GetInstance(); $site = CFileMan::__CheckSite($site); $DOC_ROOT = CSite::GetSiteDocRoot($site); $path = $io->CombinePath("/", $path); $arPath = Array($site, $path); $arParsedPath = CFileMan::ParsePath($arPath, true, false, "", $logical == "Y"); $abs_path = $DOC_ROOT.$path; $bCan = false; // Check permissions if(!$USER->CanDoFileOperation('fm_upload_file',$arPath)) $strWarning = GetMessage("ACCESS_DENIED"); else { $bCan = true; if($REQUEST_METHOD=="POST" && $save <> '' && check_bitrix_sessid()) { $nums = intval($nums); if($nums > 0) { for($i = 1; $i <= $nums; $i++) { $arFile = $_FILES["file_".$i]; if($arFile["name"] == '' || $arFile["tmp_name"]=="none") continue; $arFile["name"] = CFileman::GetFileName($arFile["name"]); $filename = ${"filename_".$i}; if($filename == '') $filename = $arFile["name"]; $pathto = Rel2Abs($path, $filename); if(!$USER->CanDoFileOperation('fm_upload_file',Array($site, $pathto))) { $strWarning .= GetMessage("FILEMAN_FILEUPLOAD_ACCESS_DENIED")." \"".$pathto."\"\n"; } elseif($arFile["error"] == 1 || $arFile["error"] == 2) { $strWarning .= GetMessage("FILEMAN_FILEUPLOAD_SIZE_ERROR", Array('#FILE_NAME#' => $pathto))."\n"; } elseif(($mess = CFileMan::CheckFileName(str_replace('/', '', $pathto))) !== true) { $strWarning .= $mess.".\n"; } else if($io->FileExists($DOC_ROOT.$pathto)) { $strWarning .= GetMessage("FILEMAN_FILEUPLOAD_FILE_EXISTS1")." \"".$pathto."\" ".GetMessage("FILEMAN_FILEUPLOAD_FILE_EXISTS2").".\n"; } elseif(!$USER->IsAdmin() && (HasScriptExtension($pathto) || mb_substr(CFileman::GetFileName($pathto), 0, 1) == ".")) { $strWarning .= GetMessage("FILEMAN_FILEUPLOAD_PHPERROR")." \"".$pathto."\".\n"; } else { $bQuota = true; if (COption::GetOptionInt("main", "disk_space") > 0) { $f = $io->GetFile($arFile["tmp_name"]); $bQuota = false; $size = $f->GetFileSize(); $quota = new CDiskQuota(); if ($quota->checkDiskQuota(array("FILE_SIZE" => $size))) $bQuota = true; } if ($bQuota) { if(!$io->Copy($arFile["tmp_name"], $DOC_ROOT.$pathto)) $strWarning .= GetMessage("FILEMAN_FILEUPLOAD_FILE_CREATE_ERROR")." \"".$pathto."\"\n"; elseif(COption::GetOptionInt("main", "disk_space") > 0) CDiskQuota::updateDiskQuota("file", $size, "copy"); $f = $io->GetFile($DOC_ROOT.$pathto); $f->MarkWritable(); $module_id = 'fileman'; if(COption::GetOptionString($module_id, "log_page", "Y")=="Y") { $res_log['path'] = mb_substr($pathto, 1); CEventLog::Log( "content", "FILE_ADD", "main", "", serialize($res_log) ); } } else $strWarning .= $quota->LAST_ERROR."\n"; } } } if($strWarning == '') { if (!empty($_POST["apply"])) LocalRedirect("/bitrix/admin/fileman_file_upload.php?".$addUrl."&site=".$site."&path=".UrlEncode($path)); else LocalRedirect("/bitrix/admin/fileman_admin.php?".$addUrl."&site=".$site."&path=".UrlEncode($path)); } } } foreach ($arParsedPath["AR_PATH"] as $chainLevel) { $adminChain->AddItem( array( "TEXT" => htmlspecialcharsex($chainLevel["TITLE"]), "LINK" => (($chainLevel["LINK"] <> '') ? $chainLevel["LINK"] : ""), ) ); } $APPLICATION->SetTitle(GetMessage("FILEMAN_FILE_UPLOAD_TITLE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); ?>