File "tree_jsTree_readDir.php"
Full Path: /home/analogde/www/JAVA/system/tree_jsTree_readDir.php
File size: 7.1 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/***************************************************************
* Copyright notice
*
* (c) 2003-2004 Tobias Bender (tobias@phpXplorer.org)
* All rights reserved
*
* This script is part of the phpXplorer project. The phpXplorer project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
* A copy is found in the textfile GPL.txt distributed with these scripts.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
require(dirname(__FILE__) . "/config.php");
$path = getRequestVar("path");
if(isset($path)){
$path = substr($path, 2);
$path = str_replace("|", "/", $path);
$path = $path != "" ? $PXP_basedir . "/" . $path : $PXP_basedir;
}else{
$path = $PXP_basedir;
}
require(dirname(__FILE__) . "/checkSharePermission.php");
require(dirname(__FILE__) . "/readFiletypes.php");
require(dirname(__FILE__) . "/getTypeKeyByExtension.php");
if(!checkSharePermission())
die($PXP_languages[$PXP_language]['accessDenied'] . " (805)");
if($PXP_user != "root"){
$PXP_user_rightsOpen_byName = Array();
$PXP_user_rightsOpen_byTypekey = Array();
$PXP_system_rightsOpen_byName = Array();
$PXP_system_rightsOpen_byTypekey = Array();
# include system right files ($PXP_dir/rights.pxrf) first
if(is_dir($PXP_dir . "/rights.pxrf")){
$d = dir($PXP_dir . "/rights.pxrf");
while($file = $d->read())
if($file != "." AND $file != "..")
if(!is_dir($PXP_dir . "/rights.pxrf/" . $file)){
# is there a right file for everybody ?
if(file_exists($PXP_dir . "/rights.pxrf/%.pxr.php"))
require($PXP_dir . "/rights.pxrf/%.pxr.php");
# are there right files for all roles of the current user ?
foreach($PXP_user_roles as $role)
if(file_exists($PXP_dir . "/rights.pxrf/" . $role . ".pxr.php"))
require($PXP_dir . "/rights.pxrf/" . $role . ".pxr.php");
# is there a right file for the current user ?
if(file_exists($PXP_dir . "/rights.pxrf/" . $PXP_user . ".pxr.php"))
require($PXP_dir . "/rights.pxrf/" . $PXP_user . ".pxr.php");
}
if(isset($PXP_rightsOpen_byName))
foreach($PXP_rightsOpen_byName as $member => $value)
$PXP_system_rightsOpen_byName = array_merge($PXP_system_rightsOpen_byName, $PXP_rightsOpen_byName[$member]);
if(isset($PXP_rightsOpen_byTypekey))
foreach($PXP_rightsOpen_byTypekey as $member => $value)
$PXP_system_rightsOpen_byTypekey = array_merge($PXP_system_rightsOpen_byTypekey, $PXP_rightsOpen_byTypekey[$member]);
$PXP_rightsOpen_byName_inherit = Array();
$PXP_rightsOpen_byName = Array();
$PXP_rightsOpen_byTypekey_inherit = Array();
$PXP_rightsOpen_byTypekey = Array();
$PXP_rightsOpen_byPath_invert = Array();
$PXP_rightsOpen_byPath = Array();
}
}
function readDirectory($dir, $reload = false){
GLOBAL $PXP_system_rightsOpen_byName, $PXP_system_rightsOpen_byTypekey;
GLOBAL $byPathMembers;
GLOBAL $PXP_rights_dir, $PXP_user, $PXP_user_roles;
GLOBAL $PXP_user_rightsOpen_byName, $PXP_user_rightsOpen_byTypekey;
GLOBAL $PXP_rightsOpen_byName, $PXP_rightsOpen_byTypekey;
GLOBAL $PXP_rightsOpen_byPath_invert, $PXP_rightsOpen_byPath;
GLOBAL $PXP_tree_reload, $PXP_basedir;
GLOBAL $PXP_languages, $PXP_language;
GLOBAL $TP_possibleActions;
GLOBAl $path;
if($PXP_user != "root"){
$pxrf = $dir . "/" . $PXP_rights_dir;
$PXP_rightsOpen_byPath_invert = Array();
$PXP_rightsOpen_byPath = Array();
$members = Array();
$byPathMembers = Array();
if(is_dir($pxrf)){
# is there a right file for everybody ?
if(file_exists($pxrf . "/%.pxr.php")){
require($pxrf . "/%.pxr.php");
array_push($members, "%");
}
# are there right files for all roles of the current user ?
foreach($PXP_user_roles as $role)
if(file_exists($pxrf . "/" . $role . ".pxr.php")){
require($pxrf . "/" . $role . ".pxr.php");
array_push($members, $role);
}
# is there a right file for the current user ?
if(file_exists($pxrf . "/" . $PXP_user . ".pxr.php")){
require($pxrf . "/" . $PXP_user . ".pxr.php");
array_push($members, $PXP_user);
}
$PXP_user_rightsOpen_byName = Array();
$PXP_user_rightsOpen_byTypekey = Array();
$byPathMembers = Array();
# merge all rights concering the current user to one array
foreach($members as $member){
if(!is_array($PXP_rightsOpen_byName[$member]))continue;
if(sizeof($PXP_rightsOpen_byPath[$member]) > 0)
array_push($byPathMembers, $member);
$PXP_user_rightsOpen_byName = array_merge($PXP_user_rightsOpen_byName, $PXP_rightsOpen_byName[$member]);
$PXP_user_rightsOpen_byTypekey = array_merge($PXP_user_rightsOpen_byTypekey, $PXP_rightsOpen_byTypekey[$member]);
}
}
$PXP_user_rightsOpen_byName = array_merge($PXP_user_rightsOpen_byName, $PXP_system_rightsOpen_byName);
$PXP_user_rightsOpen_byTypekey = array_merge($PXP_user_rightsOpen_byTypekey, $PXP_system_rightsOpen_byTypekey);
}
$files = Array();
$filesTypes = Array();
$d = @dir($dir);
if($d === FALSE){
return "[['" . $PXP_languages[$PXP_language]["accessDeniedByFilesystem"] . "', ['javascript:', '', 'permission_denied']]]";
}else{
while($file = $d->read()){
if($file != "." and $file != ".."){
if(is_dir($dir . "/" . $file)){
$extKey = strpos($file, ".") === false ? "folder" : getTypeKeyByExtension($file);
if($PXP_user != "root"){
$allowOpen = true;
# $extKey = strpos($file, ".") === false ? "folder" : getTypeKeyByExtension($file);
if(in_array($extKey, $PXP_user_rightsOpen_byTypekey) or in_array($file, $PXP_user_rightsOpen_byName))
continue;
foreach($byPathMembers as $member){
if($PXP_rightsOpen_byPath_invert[$member]){
$allowOpen = in_array($file, $PXP_rightsOpen_byPath[$member]);
}else{
$allowOpen = !in_array($file, $PXP_rightsOpen_byPath[$member]);
}
}
if(!$allowOpen)
continue;
}
array_push($files, $file);
$filesTypes[$file] = $extKey;
}
}
}
$d->close();
}
if($reload)
if($dir != $path)
return sizeof($files) > 0 ? "[]" : "";
asort($files);
if(sizeof($files) > 0){
$arrFiles = Array();
$c = "[";
foreach($files as $file){
if($TP_possibleActions[$filesTypes[$file]]["open"]){
array_push($arrFiles, "['$file', ['javascript:changeDir(\"" . urlencode($dir . "/" . $file) . "\")',null,'closed_folder']," . readDirectory($dir . "/" . $file, $reload) . "]");
}else{
array_push($arrFiles, "['$file', ['javascript:var x',null,'closed_folder']," . readDirectory($dir . "/" . $file, $reload) . "]");
}
}
$c .= implode(",", $arrFiles) . "]";
return $c;
}
}
?>