function _getPath($path, $sef_folder) { static $dav; if (empty($dav)) { $dav = CWebDavBase::IsDavHeaders('check_all') ? 'D' : 'W'; } if ($dav == 'W') { $spath = substr($path, strlen($sef_folder) - 1); if (empty($spath)) { $spath .= '/'; } return $spath; } else { return $path; } }
/Input params ********************************************************************/ $arError = array(); /******************************************************************** Check Socnet Permission and Main Data ********************************************************************/ /************** Can View *******************************************/ if ($arParams["PERMISSION"] < "R") { $arError[] = array("id" => "access_denied", "text" => GetMessage("SONET_ACCESS_DENIED")); /************** Active Feature *************************************/ } elseif ($object == "user" && !CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $arResult["VARIABLES"]["user_id"], "files") || $object == "group" && !CSocNetFeatures::IsActiveFeature(SONET_ENTITY_GROUP, $arResult["VARIABLES"]["group_id"], "files")) { $arError[] = array("id" => "fiture_is_not_active", "text" => GetMessage("SONET_FILES_IS_NOT_ACTIVE")); /************** Check Iblock ID ************************************/ } elseif ($object == "user" && $arParams["FILES_USER_IBLOCK_ID"] <= 0 || $object == "group" && $arParams["FILES_GROUP_IBLOCK_ID"] <= 0) { $arError[] = array("id" => "iblock_id_empty", "text" => GetMessage("SONET_IBLOCK_ID_EMPTY")); } elseif ($arParams["USE_AUTH"] == "Y" && (CWebDavBase::IsDavHeaders() || $_SERVER['REQUEST_METHOD'] != "GET" && $_SERVER['REQUEST_METHOD'] != "POST") && !$USER->IsAuthorized()) { $APPLICATION->RestartBuffer(); CWebDavBase::SetAuthHeader(); header('Content-length: 0'); die; } /************** Set Page Title or Add Navigation *******************/ if ($arParams["SET_NAV_CHAIN"] == "Y" || $arParams["SET_TITLE"] == "Y") { $strTitle = ""; if ($object == "group") { $arResult["GROUP"] = $arGroup = CSocNetGroup::GetByID($arResult["VARIABLES"]["group_id"]); $db_res = CSocNetFeatures::GetList(array(), array("ENTITY_ID" => $arResult["GROUP"]["ID"], "ENTITY_TYPE" => SONET_ENTITY_GROUP, "FEATURE" => "files")); if ($db_res && ($arResult["GROUP"]["FEATURE"] = $db_res->GetNext())) { $arParams["STR_TITLE"] = $arResult["GROUP"]["FEATURE"]["FEATURE_NAME"] = empty($arResult["GROUP"]["FEATURE"]["FEATURE_NAME"]) ? $arParams["STR_TITLE"] : $arResult["GROUP"]["FEATURE"]["FEATURE_NAME"]; } else { $arResult["GROUP"]["FEATURE"] = array("FEATURE_NAME" => $arParams["STR_TITLE"]);
function ThrowError($status, $code, $message = '', $line = 0) { $errArr = array('STATUS' => $status, 'CODE' => $code, 'MESSAGE' => $message, 'LINE' => $line); $GLOBALS['APPLICATION']->ThrowException($message, $code); if (CWebDavBase::IsDavHeaders("check_all")) { $this->SetStatus($status); } return $status; }
!CSocNetFeatures::IsActiveFeature( SONET_ENTITY_GROUP, $arResult["VARIABLES"]["group_id"], "files") )): $arError[] = array( "id" => "fiture_is_not_active", "text" => GetMessage("SONET_FILES_IS_NOT_ACTIVE")); /************** Check Iblock ID ************************************/ elseif (($object == "user" && $arParams["FILES_USER_IBLOCK_ID"] <= 0) || ($object == "group" && $arParams["FILES_GROUP_IBLOCK_ID"] <= 0)): $arError[] = array( "id" => "iblock_id_empty", "text" => GetMessage("SONET_IBLOCK_ID_EMPTY")); elseif ($arParams["USE_AUTH"] == "Y" && (CWebDavBase::IsDavHeaders() || ($_SERVER['REQUEST_METHOD'] != "GET" && $_SERVER['REQUEST_METHOD'] != "POST")) && !$USER->IsAuthorized()): $APPLICATION->RestartBuffer(); CWebDavBase::SetAuthHeader(); header('Content-length: 0'); die(); endif; /************** Set Page Title or Add Navigation *******************/ if ($arParams["SET_NAV_CHAIN"] == "Y" || $arParams["SET_TITLE"] == "Y") { $strTitle = ""; if($object == "group") { $arResult["GROUP"] = $arGroup = CSocNetGroup::GetByID($arResult["VARIABLES"]["group_id"]);
} } $userPerms = CIBlockWebdavSocnet::GetUserMaxPermission('user', $userID, $currentUserID, $arParams['IBLOCK_USER_ID']); foreach (array('PERMISSION', 'CHECK_CREATOR') as $propName) { $arParams[$propName] = $userPerms[$propName]; } $arParams["DOCUMENT_TYPE"] = array("webdav", "CIBlockDocumentWebdavSocnet", "iblock_" . $arParams['IBLOCK_USER_ID'] . "_user_" . intVal($userID)); $basementPath = $rootPath . '/' . $arLocalPath[0]; $obGroup = new CWebDavIblock($arParams['IBLOCK_USER_ID'], $basementPath, $arParams); $obGroup->SetRootSection($sectionID); $currentPageUrl = str_replace(array('#USER_ID#', '#PATH#'), array($userID, ''), $arParams["USER_FILE_PATH"]); MakeDavRedirect($obGroup, $currentPageUrl, $rootPath . '/' . $arLocalPath[0], '/' . implode('/', array_slice($arLocalPath, 1)) . '/', false); } else { // user list $userTree = array(); $CACHE_ID = SITE_ID . '|' . $requestURL . '|' . $currentUserID . '|' . (CWebDavBase::IsDavHeaders('check_all') ? 'D' : 'W') . '|USERLIST'; $userCache = new CPHPCache(); if ($userCache->InitCache($arParams["CACHE_TIME"], $CACHE_ID, $cachePath)) { $vars = $userCache->GetVars(); $userTree = $vars['USER_TREE']; } else { $arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_USER_ID"], "SOCNET_GROUP_ID" => false, "CHECK_PERMISSIONS" => "N", "SECTION_ID" => 0); $dbSection = CIBlockSection::GetList(array(), $arFilter); while ($arSection = $dbSection->Fetch()) { $userID = $arSection['CREATED_BY']; if (!CSocNetFeatures::IsActiveFeature(SONET_ENTITY_USER, $userID, "files")) { continue; } $userPerms = CIBlockWebdavSocnet::GetUserMaxPermission('user', $userID, $currentUserID, $arParams['IBLOCK_USER_ID']); if ($userPerms["PERMISSION"] < "R") { continue;