%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/fileman/admin/ |
Current File : //home/bitrix/www/bitrix/modules/fileman/admin/fileman_server_access.php |
<? 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_admin_folders')) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/include.php"); include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/classes/general/fileman_utils.php"); IncludeModuleLangFile(__FILE__); $site = CFileMan::__CheckSite($site); $documentRoot = CSite::GetSiteDocRoot($site); $io = CBXVirtualIo::GetInstance(); $path = $io->CombinePath("/", $path); $addUrl = 'lang='.LANGUAGE_ID.($logical == "Y"?'&logical=Y':''); $arPath = Array($site, $path); $strNotice = ""; $strWarning = ""; $abs_path = $documentRoot.$path; $arFiles = Array(); $bSearch = isset($_REQUEST['search']) && $_REQUEST['search'] == 'Y'; $searchSess = preg_replace("/[^a-z0-9]/i", "", $_REQUEST['ssess']); if (CFileMan::IsWindows()) $strWarning .= GetMessage("FILEMAN_SA_WINDOWS_WARN")."\n"; if (count($files) > 0) { for($i = 0; $i < count($files); $i++) { if(!$USER->CanDoFileOperation('fm_edit_permission', Array($site, $path."/".$files[$i]))) $strWarning .= GetMessage("FILEMAN_ACCESS_TO_DENIED")." \"".$files[$i]."\".\n"; elseif($files[$i] != '.') $arFiles[] = $files[$i]; } } else { if ($bSearch) { $searchRes = CFilemanSearch::GetSearchResult($searchSess); for($i = 0, $l = count($searchRes); $i < $l; $i++) $arFiles[] = $searchRes[$i]['path']; } else { $arD = array(); $arF = array(); CFileMan::GetDirList(Array($site, $path), $arD, $arF, array("MIN_PERMISSION" => "X"), array(), "DF"); foreach ($arD as $dir) if($USER->CanDoFileOperation('fm_edit_permission',Array($site, $dir['ABS_PATH']))) $arFiles[] = $dir["NAME"]; foreach ($arF as $file) if($USER->CanDoFileOperation('fm_edit_permission',Array($site, $file['ABS_PATH']))) $arFiles[] = $file["NAME"]; } } $filesCount = count($arFiles); $arFilesEx = array(); $bFolderInList = false; $currentValue = false; $bCurrentValueDiff = false; for($i = 0; $i < $filesCount; $i++) { $arFile = array("NAME" => $arFiles[$i]); $arFile["PATH"] = $bSearch ? $arFiles[$i] : $path."/".$arFiles[$i]; $arFile["ABS_PATH"] = $documentRoot.$arFile["PATH"]; if (!$bFolderInList && $io->DirectoryExists($arFile["ABS_PATH"])) $bFolderInList = true; $arFile["PERM"] = CFileMan::GetUnixFilePermissions($arFile["ABS_PATH"]); if ($currentValue === false) $currentValue = $arFile["PERM"][0]; if (!$bCurrentValueDiff && $currentValue != $arFile["PERM"][0]) $bCurrentValueDiff = true; $arFilesEx[] = $arFile; } if ($REQUEST_METHOD == "POST" && $USER->CanDoOperation('fileman_admin_folders') && $_GET["fu_action"] == 'change_perms' && check_bitrix_sessid()) { CUtil::JSPostUnescape(); $APPLICATION->RestartBuffer(); if (CFileMan::IsWindows()) $result_value = $_POST['readonly'] == "Y" ? '0' : '666'; else $result_value = intVal($_POST['res_value']); $result_value = (int) "0".$result_value; $oChmod = new CFilemanChmod; $oChmod->Init(array( 'value' => $result_value, 'lastPath' => isset($_POST['last_path']) ? $_POST['last_path'] : false )); $bStoped = true; for($i = 0; $i < $filesCount; $i++) { $arFile = $arFilesEx[$i]; if ($io->DirectoryExists($arFile['ABS_PATH']) && $_POST['recurcive'] == "Y") { $oDir = new CFilemanUtilDir($arFile['ABS_PATH'], array( 'obj' => $oChmod, 'site' => $Params['site'], 'callBack' => "Chmod", 'checkBreak' => "CheckBreak", 'checkSubdirs' => true )); $bSuccess = $oDir->Start(); $bBreak = $oDir->bBreak; $nextPath = $oDir->nextPath; $bStoped = $oDir->bStoped; } else { $bBreak = $oChmod->CheckBreak(); $bStoped = $i == $filesCount - 1; // Last iterration if ($bBreak && !$bStoped) $nextPath = $arFilesEx[$i]['ABS_PATH']; } if ($bStoped) $bBreak = false; if ($bBreak) break; $oChmod->Chmod($arFile['ABS_PATH']); } clearstatcache(); ?> <script> <?if ($bBreak): // Execution breaks on timeout?> window.spBtimeout = true; window.spLastPath = '<?= CUtil::JSEscape(CFilemanUtils::TrimPath($nextPath))?>'; <? else: ?> window.spBtimeout = false; <? endif; ?> window.spBstoped = <?= $bStoped ? 'true' : 'false'?>; window.spResult = <?= CUtil::PhpToJSObject($oChmod->Result)?>; </script> <? die(); } $backToFolderUrl = "fileman_admin.php?".$addUrl."&site=".$site."&path=".UrlEncode($path).($bSearch ? "&search=Y&ssess=".$searchSess : ""); if ($bSearch) { $adminChain->AddItem(array("TEXT" => GetMessage("FM_SA_SEARCH_RESULT"), "LINK" => $backToFolderUrl)); } else { $arParsedPath = CFileMan::ParsePath(Array($site, $path), true, false, "", $logical == "Y"); foreach ($arParsedPath["AR_PATH"] as $chainLevel) { $adminChain->AddItem( array( "TEXT" => htmlspecialcharsex($chainLevel["TITLE"]), "LINK" => ((strlen($chainLevel["LINK"]) > 0) ? $chainLevel["LINK"] : ""), ) ); } } $adminChain->AddItem(array("TEXT" => GetMessage("FILEMAN_SERV_ACCESS_TITLE"), "LINK" => "")); $APPLICATION->SetTitle(GetMessage("FILEMAN_SERV_ACCESS_TITLE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); CFilemanUtils::InitScript(array( 'initServerAccess' => true, 'site' => $site )); $aMenu = array( array( "TEXT" => $bSearch ? GetMessage("FILEMAN_SA_BACK_2_SEARCH_RES") : GetMessage("FILEMAN_SA_BACK_2_FOLDER"), "LINK" => $backToFolderUrl ) ); $context = new CAdminContextMenu($aMenu); $context->Show(); ?> <?CAdminMessage::ShowMessage($strNotice);?> <?CAdminMessage::ShowMessage($strWarning);?> <?if($strWarning == ""):?> <? $aTabs = array( array("DIV" => "edit1", "TAB" => GetMessage("FILEMAN_SA_TAB"), "ICON" => "fileman", "TITLE" => GetMessage("FILEMAN_SA_TAB_ALT")) ); $tabControl = new CAdminTabControl("tabControl", $aTabs); $tabControl->Begin(); ?> <?$tabControl->BeginNextTab();?> <tr> <td colspan="2"> <div id="bxsp_note_success" style="display: none; margin: 15px 5px;"> <?= BeginNote();?> <?= GetMessage("FM_SA_SUCCESS_NOTE")?> <?= EndNote();?> </div> <div id="bxsp_note_errors" class="bxsp-error-note" style="display: none; margin: 15px 5px;"> <?= BeginNote();?> <?= GetMessage("FM_SA_ERRORS_NOTE")?>: <br/> <div id="bxsp_note_errors_cont" class="bxsp-file"></div> <?= EndNote();?> </div> <span style="padding: 5px 15px;"><?= GetMessage("FILEMAN_SA_CHANGE_TO");?>:</span><br /> <table class="bxsp-file-list bxsp-file-list-init" id="bxsp_file_list"> <tr class="bxsp-header"> <td><?= GetMessage("FM_SA_FILE_PATH")?></td> <td></td> <td><?= GetMessage("FM_SA_CUR_VAL")?></td> <td class="bxsp-status"><?= GetMessage("FM_SA_CHANGE_STATUS")?></td> </tr> <?for($i = 0, $l = count($arFilesEx); $i < $l; $i++):?> <? if (CFileMan::IsWindows()) { $html = $arFilesEx[$i]["PERM"][0] == '444' ? GetMessage("FM_SA_WIN_READONLY") : GetMessage("FM_SA_WIN_FULL_ACCESS"); $title = $html; } else { $html = $arFilesEx[$i]["PERM"][0]; $title = GetMessage("FILEMAN_SA_CUR_VAL").": ".$arFilesEx[$i]["PERM"][1]; } ?> <tr id="bxsp_file_row_<?= $i?>"> <td class="bxsp-filename">"<?= htmlspecialcharsbx($APPLICATION->UnJSEscape($arFilesEx[$i]["PATH"]))?>"</td> <td class="bxsp-separator"> - </td> <td class="bxsp-value" title="<?= $title?>"><?= $html?></td> <td class="bxsp-status"><?= GetMessage("FM_SA_IN_PROC")?>...</td> </tr> <?endfor;?> </table> </td> </tr> <tr> <td colspan="2"> <?$ar = array('owner', 'group', 'public');?> <span style="font-weight: bold; padding: 5px 15px;"><?= GetMessage("FM_SA_SET_NEW")?>:</b> <div class="bxfm-sperm-cont"> <? foreach(array('owner', 'group', 'public') as $k):?> <div class="bx-s-perm-gr"> <div class="bx-s-title"><?= GetMessage("FM_SA_".strtoupper($k))?></div> <table class="bxsp-tbl"><tr> <td class="bxsp-inp-cell"><input id="bxsp_<?= $k?>_read" type="checkbox" value="Y"/></td> <td class="bxsp-label-cell"><label for="bxsp_<?= $k?>_read"><?= GetMessage("FM_SA_READ")?></label></td> <td class="bxsp-inp-cell"><input id="bxsp_<?= $k?>_write" type="checkbox" value="Y"/></td> <td class="bxsp-label-cell"><label for="bxsp_<?= $k?>_write"><?= GetMessage("FM_SA_WRITE")?></label></td> <td class="bxsp-inp-cell"><input id="bxsp_<?= $k?>_exec" type="checkbox" value="Y"/></td> <td class="bxsp-label-cell"><label for="bxsp_<?= $k?>_exec"><?= GetMessage("FM_SA_EXECUTE")?> </label></td> <td style="padding: 0 6px 0 80px !important;"><label for="bxsp_<?= $k?>_value"><?= GetMessage("FM_SA_VALUE")?>: </label></td> <td><input id="bxsp_<?= $k?>_value" type="text" readonly="readonly" size="2"/></td> </tr></table> </div> <?endforeach;?> <table class="bxsp-tbl-2"> <tr> <td colSpan="2"> <label for="bxsp_res_value" style="font-weight: bold;"><?= GetMessage("FM_SA_RES_VALUE")?>: </label> <input id="bxsp_res_value" type="text" value="" size="4" name="result_value" /> </td> </tr> <?if ($bCurrentValueDiff):?> <tr id="bxsp_cur_val_diff"> <td colSpan="4"><i style="color: #494949;"><?= GetMessage("FILEMAN_SA_CUR_VALUE_DIFF")?></i></td> </tr> <?endif;?> <?if ($bFolderInList):?> <tr> <td style="width: 20px;"><input name="recurcive" id="bxsp_recurcive" type="checkbox" value="Y" checked="checked"/></td> <td><label for="bxsp_recurcive"><?= GetMessage("FM_SA_SET_RECURCIVE")?></label></td> </tr> <?endif;?> </table> </div> <script> BX.ready(function() { new BXFMServerPerm( { currentValue: "<?= $currentValue?>", arFiles: <?= CUtil::PhpToJSObject($arFilesEx)?>, lang: '<?= LANGUAGE_ID?>', site: '<?= CUtil::JSEscape($site)?>', sessid_get: '<?= bitrix_sessid_get()?>', path: '<?= CUtil::JSEscape($path)?>', backUrl: '<?= CUtil::JSEscape($backToFolderUrl)?>', bSearch: <?= $bSearch ? 'true' : 'false'?>, searchSess: "<?= CUtil::JSEscape($searchSess)?>" } ); }); </script> </td> </tr> <?$tabControl->EndTab();?> <?$tabControl->Buttons(false);?> <input type="button" id="bx_sp_save" value="<?= GetMessage("admin_lib_edit_save")?>" title="<?= GetMessage("admin_lib_edit_save_title")?>" /> <input type="button" id="bx_sp_apply" value="<?= GetMessage("admin_lib_edit_apply")?>" title="<?= GetMessage("admin_lib_edit_apply_title")?>" /> <input type="button" id="bx_sp_cancel" value="<?= GetMessage("admin_lib_edit_cancel")?>" title="<?= GetMessage("admin_lib_edit_cancel_title")?>" /> <?$tabControl->End();?> <?endif;?> <br> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>