CanDoOperation('fileman_edit_existent_folders') || $USER->CanDoOperation('fileman_admin_folders'))) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/fileman/include.php"); IncludeModuleLangFile(__FILE__); ClearVars("g_"); $site = CFileMan::__CheckSite($site); $DOC_ROOT = CSite::GetSiteDocRoot($site); $addUrl = 'lang='.LANGUAGE_ID.($logical == "Y"?'&logical=Y':''); $io = CBXVirtualIo::GetInstance(); $path = urldecode($path); $path = $io->CombinePath("/", $path); $arPath = Array($site, $path); $strNotice = ""; $arParsedPath = CFileMan::ParsePath(Array($site, $path), true, false, "", $logical == "Y"); $abs_path = $DOC_ROOT.$path; $arPermTypes = Array(); $res = CTask::GetList(Array('LETTER' => 'asc'), Array('MODULE_ID' => 'main','BINDING' => 'file')); while($arRes = $res->Fetch()) { $name = ''; if ($arRes['SYS']) $name = GetMessage(mb_strtoupper($arRes['NAME'])); if ($name == '') $name = $arRes['NAME']; $arPermTypes[$arRes['ID']] = Array( 'title' => $name, 'letter' => $arRes['LETTER'] ); } $arPermTypes['NOT_REF'] = Array( 'title' => GetMessage("FILEMAN_FOLDER_ACCESS_INHERIT"), 'letter' => 'N' ); $strWarning = ""; $arFiles = Array(); if (count($files) > 0) { CUtil::decodeURIComponent($files); for($i=0; $iCanDoFileOperation('fm_edit_permission',Array($site, $path."/".$files[$i]))) $strWarning .= GetMessage("FILEMAN_ACCESS_TO_DENIED")." \"".$files[$i]."\".\n"; elseif($files[$i] != '.') $arFiles[] = $files[$i]; } } else { $arPDirs = array(); $arPFiles = array(); CFileMan::GetDirList(Array($site, $path), $arPDirs, $arPFiles, array("MIN_PERMISSION" => "X"), array(), "DF"); foreach ($arPDirs as $dir) { if($USER->CanDoFileOperation('fm_edit_permission',Array($site, $dir['ABS_PATH']))) $arFiles[] = $dir["NAME"]; } foreach ($arPFiles as $file) { if($USER->CanDoFileOperation('fm_edit_permission',Array($site, $file['ABS_PATH']))) $arFiles[] = $file["NAME"]; } } $filesCount = count($arFiles); function GetAccessArrTmp($path) { global $DOC_ROOT; $io = CBXVirtualIo::GetInstance(); if($io->DirectoryExists($DOC_ROOT.$path)) { @include($io->GetPhysicalName($DOC_ROOT.$path."/.access.php")); return $PERM; } return Array(); } // If user can manage only subordinate groups if ($USER->CanDoOperation('edit_subordinate_users') && !$USER->CanDoOperation('edit_all_users')) { $arSubordGroups = Array(); $arGroups = explode(',', $USER->GetGroups()); for ($i = 0,$l = count($arGroups);$i < $l;$i++) $arSubordGroups = array_merge($arSubordGroups,CGroup::GetSubordinateGroups($arGroups[$i])); $arSubordGroups = array_values(array_unique($arSubordGroups)); } if($REQUEST_METHOD=="POST" && is_array($files) && count($files)>0 && $saveperm <> '' && check_bitrix_sessid() && $USER->CanDoOperation('fileman_admin_folders')) { $CUR_PERM = GetAccessArrTmp($path); $arPermissions=Array(); $arNotSetPerm=Array(); $db_groups = CGroup::GetList("sort", "asc", array("ACTIVE" => "Y", "ADMIN" => "N")); while($arGroup = $db_groups->Fetch()) { if(isset($arSubordGroups) && !in_array($arGroup['ID'],$arSubordGroups)) { $arNotSetPerm[] = $arGroup["ID"]; continue; } else { $gperm = isset($_POST["g_".$arGroup["ID"]]) ? $_POST["g_".$arGroup["ID"]] : ''; if ($gperm == '') { $arNotSetPerm[] = $arGroup["ID"]; continue; } if ($gperm == 'NOT_REF') $gperm = ''; if (intval($gperm) > 0) { $z = CTask::GetById($gperm); $r = $z->Fetch(); if ($r && $r['LETTER'] && $r['SYS'] == 'Y') $gperm = $r['LETTER']; else $gperm = 'T_'.$gperm; } $arPermissions[$arGroup["ID"]] = $gperm; } } $gperm = $_POST['g_ALL']; if ($gperm == '') $arNotSetPerm[] = "*"; else { if ($gperm == 'NOT_REF') $gperm = ''; if (intval($gperm) > 0) { $z = CTask::GetById($gperm); $r = $z->Fetch(); if ($r && $r['LETTER'] && $r['SYS'] == 'Y') $gperm = $r['LETTER']; else $gperm = 'T_'.$gperm; } $arPermissions["*"] = $gperm; } for($i = 0; $i < $filesCount; $i++) { $arPermissionsTmp = $arPermissions; for($j=0; $jSetFileAccessPermission(Array($site, $path."/".$arFiles[$i]), $arPermissionsTmp); } if ($e = $APPLICATION->GetException()) $strNotice = $e->msg; elseif($strWarning == '' && $apply == '') 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_ACCESS_TITLE")); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); ?> GetMessage("FILEMAN_CMENU_CAT"), "LINK" => "fileman_admin.php?".$addUrl."&site=".$site."&path=".UrlEncode($path) ) ); $context = new CAdminContextMenu($aMenu); $context->Show(); ?>