CanDoOperation('fileman_admin_files') || $USER->CanDoOperation('fileman_edit_existent_files'))) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/include.php"); IncludeModuleLangFile(__FILE__); $io = CBXVirtualIo::GetInstance(); $addUrl = 'lang='.LANGUAGE_ID.($logical == "Y"?'&logical=Y':'') + '&' + bitrix_sessid_get(); $strWarning = ""; // если новый файл и задано новое имя if(strlen($new)>0 && strlen($filename)>0) $path = $io->CombinePath($path, $filename); // присвоим нашему пути это новое имя $path = $io->CombinePath("/", $path); $site = CFileMan::__CheckSite($site); if(!$site) $site = CSite::GetSiteByFullPath($_SERVER["DOCUMENT_ROOT"].$path); $template = false; $db_t = CSite::GetTemplateList($site); while($ar_t = $db_t->Fetch()) { if(strlen($ar_t["CONDITION"])<=0) { $template = $ar_t["TEMPLATE"]; break; } } $DOC_ROOT = CSite::GetSiteDocRoot($site); $abs_path = $DOC_ROOT.$path; $arPath = Array($site, $path); if((strlen($new)<=0 || strlen($filename)<=0) && !$io->FileExists($abs_path)) { $p = strrpos($path, "/"); if($p!==false) { $new = "Y"; $filename = substr($path, $p+1); $path = substr($path, 0, $p); } } $bFullPHP = ($full_src=="Y") && $USER->CanDoOperation('edit_php'); $NEW_ROW_CNT = 1; $arParsedPath = CFileMan::ParsePath(Array($site, $path), true, false, "", $logical == "Y"); $bVarsFromForm = false; // флаг, указывающий, откуда брать контент из файла или из запостченой формы $bCheckExecFile = !$USER->CanDoOperation('edit_php') && (strlen($new)>0 || in_array(CFileman::GetFileExtension($path), CFileMan::GetScriptFileExt())); //Check access to file if((strlen($new) > 0 && !($USER->CanDoOperation('fileman_admin_files') && $USER->CanDoFileOperation('fm_create_new_file',$arPath))) || (strlen($new) < 0 && !$USER->CanDoOperation('fileman_edit_existent_files') || !$USER->CanDoFileOperation('fm_edit_existent_file',$arPath))) { $strWarning = GetMessage("ACCESS_DENIED"); } else { if(strlen($new)>0 && strlen($filename)>0 && $io->FileExists($abs_path))// если мы хотим создать новый файл, но уже такой есть - ругаемся { $strWarning = GetMessage("FILEMAN_FILEEDIT_FILE_EXISTS")." "; $bEdit = false; $bVarsFromForm = true; $path = $io->CombinePath("/", $arParsedPath["PREV"]); $arParsedPath = CFileMan::ParsePath($path, true, false, "", $logical == "Y"); $abs_path = $DOC_ROOT.$path; } elseif(!$USER->IsAdmin() && substr(CFileman::GetFileName($abs_path), 0, 1)==".") { $strWarning = GetMessage("FILEMAN_FILEEDIT_BAD_FNAME")." "; $bEdit = false; $bVarsFromForm = true; $path = $io->CombinePath("/", $arParsedPath["PREV"]); $arParsedPath = CFileMan::ParsePath($path, true, false, "", $logical == "Y"); $abs_path = $DOC_ROOT.$path; } elseif(strlen($new)>0) { $bEdit = false; } else { if($io->DirectoryExists($abs_path)) $strWarning = GetMessage("FILEMAN_FILEEDIT_FOLDER_EXISTS")." "; else $bEdit = true; } } if(strlen($strWarning)<=0) { if($bEdit) $filesrc_tmp = $APPLICATION->GetFileContent($abs_path); else { $arTemplates = CFileman::GetFileTemplates(); $filesrc_tmp = CFileman::GetTemplateContent($arTemplates[0]["file"]); if(strlen($template)>0) { if (substr($template, 0, 1)=="/") { $filesrc_tmp = $APPLICATION->GetFileContent($_SERVER["DOCUMENT_ROOT"].$template); } else { for ($i=0; $i0 && strlen($propeditmore)<=0 && check_bitrix_sessid()) { if(!$bFullPHP) { if(CFileman::IsPHP($filesrc) && $bCheckExecFile) { $strWarning = GetMessage("FILEMAN_FILEEDIT_CHANGE")." "; $bVarsFromForm = true; if(strlen($new)>0 && strlen($filename)>0) { $bEdit = false; $path = $io->CombinePath("/", $arParsedPath["PREV"]); $arParsedPath = CFileMan::ParsePath($path, true, false, "", $logical == "Y"); $abs_path = $DOC_ROOT.$path; } } else { $res = CFileman::ParseFileContent($filesrc_tmp); $prolog = CFileman::SetTitle($res["PROLOG"], $title); for ($i = 0; $i<$numpropsvals; $i++) { if(strlen(Trim($_POST["CODE_".$i]))>0) { $prolog = CFileman::SetProperty($prolog, Trim($_POST["CODE_".$i]), Trim($_POST["VALUE_".$i])); } else { $prolog = CFileman::SetProperty($prolog, Trim($_POST["CODE_".$i]), ""); } } $epilog = $res["EPILOG"]; $filesrc_for_save = $prolog.$filesrc.$epilog; } } else { $filesrc_for_save = $filesrc; } if(strlen($strWarning) <= 0) { if (!CFileMan::CheckOnAllowedComponents($filesrc_for_save)) { $str_err = $APPLICATION->GetException(); if($str_err && ($err = $str_err ->GetString())) $strWarning .= $err; $bVarsFromForm = true; } } if(strlen($strWarning)<=0) { if(!$APPLICATION->SaveFileContent($abs_path, $filesrc_for_save)) { if($APPLICATION->GetException()) { $str_err = $APPLICATION->GetException(); if ($str_err && ($err = $str_err ->GetString())) { $strWarning = $err; } $bVarsFromForm = true; $path = $io->CombinePath("/", $arParsedPath["PREV"]); $arParsedPath = CFileMan::ParsePath($path, true, false, "", $logical == "Y"); $abs_path = $DOC_ROOT.$path; } if (empty($strWarning)) { $strWarning = GetMessage("FILEMAN_FILE_SAVE_ERROR")." "; } } else $bEdit = true; if(strlen($strWarning)<=0 && strlen($apply)<=0) { if(strlen($back_url)>0 && strpos($back_url, "/bitrix/admin/fileman_fck_edit.php")!==0) LocalRedirect("/".ltrim($back_url, "/")); LocalRedirect("/bitrix/admin/fileman_admin.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($arParsedPath["PREV"])); } else LocalRedirect("/bitrix/admin/fileman_fck_edit.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($path).($full_src=="Y"?"&full_src=Y":"")); $filesrc_tmp = $filesrc_for_save; $path = $io->CombinePath("/", $path); $arParsedPath = CFileMan::ParsePath($path, true, false, "", $logical == "Y"); $abs_path = $DOC_ROOT.$path; } } } if(strlen($propeditmore)>0) $bVarsFromForm = True; $bEditProps = false; if(!$bVarsFromForm) { if(!$bEdit && strlen($filename)<=0) $filename = "untitled.php"; $filesrc = $filesrc_tmp; if(!$bFullPHP) { $res = CFileman::ParseFileContent($filesrc); $filesrc = $res["CONTENT"]; $bEditProps = (strpos($res["PROLOG"], "prolog_before")>0); if($bCheckExecFile && CFileman::IsPHP($filesrc)) $strWarning=GetMessage("FILEMAN_FILEEDIT_CHANGE_ACCESS"); $title = $res["TITLE"]; $pprops = $res["PROPERTIES"]; } } elseif($prop_edit=="Y") $bEditProps = true; if($bEdit) $APPLICATION->SetTitle(GetMessage("FILEMAN_FILEEDIT_PAGE_TITLE")." \"".htmlspecialchars($arParsedPath["LAST"])."\""); else $APPLICATION->SetTitle(GetMessage("FILEMAN_NEWFILEEDIT_TITLE")); foreach ($arParsedPath["AR_PATH"] as $chainLevel) { $adminChain->AddItem( array( "TEXT" => htmlspecialcharsex($chainLevel["TITLE"]), "LINK" => ((strlen($chainLevel["LINK"]) > 0) ? $chainLevel["LINK"] : ""), ) ); } require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); ?> GetMessage("FILEMAN_FILE_VIEW"), "LINK"=>"fileman_file_view.php?".$addUrl."&site=".urlencode($site)."&path=".urlencode($path) ); if($bFullPHP) { $aMenu[] = array( "TEXT"=>GetMessage("FILEMAN_FILEEDIT_AS_TXT"), "LINK"=>"fileman_file_edit.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($path).(strlen($new)>0? "&new=Y":"").(strlen($back_url)>0? "&back_url=".urlencode($back_url):"") ); } elseif($USER->CanDoOperation('edit_php')) { $aMenu[] = array( "TEXT"=>GetMessage("FILEMAN_FILEEDIT_AS_PHP"), "LINK"=>"fileman_file_edit.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($path)."&full_src=Y".(strlen($new)>0? "&new=Y":"").(strlen($back_url)>0? "&back_url=".urlencode($back_url):"") ); } if(preg_match('/^\.(.*)?\.menu\.(php|html|php3|php4|php5|phtml)$/', $arParsedPath["LAST"], $regs)) { $aMenu[] = array( "TEXT"=>GetMessage("FILEMAN_FILEEDIT_AS_MENU"), "LINK"=>"fileman_menu_edit.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($arParsedPath["PREV"])."&name=".UrlEncode($regs[1]).(strlen($new)>0? "&new=Y":"").(strlen($back_url)>0? "&back_url=".urlencode($back_url):"") ); } else { $aMenu[] = array( "TEXT"=>GetMessage("FILEMAN_FILEEDIT_AS_TXT"), "LINK"=>"fileman_file_edit.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($path).(strlen($new)>0? "&new=Y":"").(strlen($back_url)>0? "&back_url=".urlencode($back_url):"") ); } if($bEdit) { $aMenu[] = array("SEPARATOR"=>"Y"); if($USER->CanDoFileOperation('fm_rename_file',$arPath)) { $aMenu[] = array( "TEXT"=>GetMessage("FILEMAN_FILEEDIT_RENAME"), "LINK"=>"fileman_rename.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($arParsedPath["PREV"])."&files[]=".UrlEncode($arParsedPath["LAST"]) ); } if($USER->CanDoOperation('fm_download_file') && !in_array(CFileman::GetFileExtension($path), CFileMan::GetScriptFileExt())) { $aMenu[] = array( "TEXT"=>GetMessage("FILEMAN_FILEEDIT_DOWNLOAD"), "LINK"=>"fileman_file_download.php?".$addUrl."&site=".Urlencode($site)."&path=".UrlEncode($path) ); } } $context = new CAdminContextMenu($aMenu); $context->Show(); ?>