<?php
function makeOSPath($path){
$path = base64_decode($path);
if(DIRECTORY_SEPARATOR === '\\'){
// Windows
$drive = substr(L_DIR, 0, 2);
if($path == "/" || $path == ""){
$path = $drive . "\\";
}else{
//$path = substr_replace($path, "$drive/", 0, 1);
$path = str_replace('/', '\\', $path);
}
}else{
if($path == "/" || $path == ""){
$path = "/";
}else{
$path = str_replace('\\', '/', $path);
}
}
return $path;
}
$homeFolder = \Lobby::getSysInfo("home_folder");
// Folder path
if(!file_exists($homeFolder))
define('FP_ROOT_PATH', makeOSPath("/"));
else
define('FP_ROOT_PATH', makeOSPath($homeFolder));
if(\Lobby\Modules::exists("indi")){
/**
* If `indi` module is enabled, don't use FilePicker
*/
return false;
exit;
}
if(isset($_GET['img'])){
$img_path = FP_ROOT_PATH . base64_decode($_GET['img']);
$img = getimagesize($img_path);
if(is_array($img)){
$fp = fopen($img_path, 'rb');
header('Content-Type: ' . $size['mime']);
header('Content-Length: ' . filesize($img_path));
fpassthru($fp);
exit;
}
}else{
/**
* Program Name: File Picker
* Program URI: http://code.google.com/p/file-picker/
* Description: This program will let you browse server-side folders and files
* like a Windows Explorer, and you can pick several files that you
* want to process in somewhere.
*
* Copyright (c) 2008-2009 Hpyer (coolhpy[at]163.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*/
// -------------------- Configration begin -------------------------
// Language [Default: en]
define('FP_LANGUAGE', 'en');
// Date format [Default: Y-m-d]
define('FP_DATE', 'Y-m-d');
// Time format [Default: H:i:s]
define('FP_TIME', 'H:i:s');
// Separator thousand [Default: ,]
define('FP_THOUSAND', ',');
// Decimal point [Default: .]
define('FP_DECIMAL', '.');
// Number of decimals to display [Default: 2]
define('FP_DECIMAL_NUM', 2);
// How many level of FP_ROOT_PATH that user can visit, 0 means root only [Default: 1]
// 0 means root only, -1 means unlimited
// @since: 1.1.1
// (Not ready for 1.1 - Nov. 10, 2009)
// define('FP_DIR_LEVEL', 1);
// --------------------- Configration end --------------------------
header('Content-Type: text/html; charset=UTF-8');
define('FP_SCRIPT_ROOT', dirname(__DIR__));
define('FP_CLASS_ROOT', FP_SCRIPT_ROOT . '/inc');
require_once(FP_CLASS_ROOT . '/FilePicker.php');
$fp = new FilePicker(function($e){
if($e === "permission_denied"){
echo $e;
}
exit;
});
$action = \Request::get('action');
switch ($action){
case 'list':
$dir = base64_encode(makeOSPath(\Request::postParam("dir", "/")));
$filter = isset($_POST['filter']) ? $_POST['filter'] : 0;
echo $fp->get_list($dir, $filter);
break;
case 'info':
$dir = base64_encode(makeOSPath(\Request::postParam("dir", "/")));
$file = \Request::postParam("file", "");
echo $fp->get_info($dir, $file);
break;
/*
case 'new':
$dir = $_POST['dir'] ? $_POST['dir'] : '/';
$folder = $_POST['folder'] ? $_POST['folder'] : 'New Folder';
$fp->new_folder($dir, $folder);
break;
*/
default :
$filter = \Request::get('filter');
$filters = '';
$filters = $fp->get_filters($filter);
$dir = makeOSPath(\Request::postParam("dir", "/"));
$dir_b64 = base64_encode($dir);
ob_start();
?>
<div class="Lobby-FS-filepicker-picker-nav">
<table cellspacing="0" cellpadding="0"><tr>
<td class="label"><label><?php _e('Folder'); ?></label></td>
<td>
<input type="text" id="target_dir_path" value="<?php echo $dir_b64;?>" />
<input type="hidden" id="target_dir" value="<?php echo $dir_b64;?>" />
</td>
<td>
<li><img id="btn_refresh" src="<?php echo L_URL;?>/includes/lib/modules/filepicker/image/refresh.svg" alt="<?php _e('Refresh'); ?>" /></li>
<li><img id="btn_up" src="<?php echo L_URL;?>/includes/lib/modules/filepicker/image/up.svg" alt="<?php _e('Up'); ?>" /></li>
</td>
</tr></table>
</div>
<div class="Lobby-FS-filepicker-picker-body row">
<div id="viewbox" class="col l8">
<img id="loading_img" src="<?php echo L_URL;?>/includes/lib/modules/filepicker/image/loading.gif" alt="<?php _e('Loading...'); ?>" />
<ul id="list"></ul>
</div>
<div id="info_box" class="col l8"></div>
</div>
<div class="Lobby-FS-filepicker-picker-footer">
<table cellspacing="0" cellpadding="0">
<tr>
<td class="label"><label><?php _e('Filter'); ?></label>:</td>
<td><select id="filter_box" class="select"><?php echo $filters; ?></select></td>
</tr>
</table>
<table cellspacing="0" cellpadding="0">
<tr>
<td class="label"><label for="filename_box"><?php _e('Filename'); ?></label>:</td>
<td><input type="text" id="filename_box" name="filename" value="" class="select2" /></td>
<td>
<input type="button" id="btn_complete" value="<?php _e('OK'); ?>" class="btn green" />
<input type="button" id="btn_cancel" value="<?php _e('Cancel'); ?>" class="btn red" />
</td>
</tr>
</table>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();
echo json_encode(array(
"dir" => FP_ROOT_PATH,
"html" => $html
));
continue;
}
}
|