* @license BSD * @version $Revision: 22 $ */ if ( $_SERVER[ "SCRIPT_FILENAME"] == __FILE__) { header( "Location: ".BASE_URL); } define( "_BASE_DATA_DIR", realpath( BASE_DATA_DIR).DIRECTORY_SEPARATOR); function normalizationPathName( $vfs_path_name) { $result = NULL; // 仮想ファイルシステム上のベースパスの正規化 $fs_target_path_name = realpath( _BASE_DATA_DIR.$vfs_path_name); if ( strncmp( $fs_target_path_name, _BASE_DATA_DIR, strlen( _BASE_DATA_DIR)) == 0) { // _BASE_DATA_DIR内にパスの実態があるのでOK // _BASE_DATA_DIRを取り除いて返す $vfs_target_path_name = DIRECTORY_SEPARATOR.substr( $fs_target_path_name, strlen( _BASE_DATA_DIR)); $result = is_dir( _BASE_DATA_DIR.$vfs_target_path_name) == TRUE? $vfs_target_path_name.DIRECTORY_SEPARATOR: $vfs_target_path_name; } else { $result = DIRECTORY_SEPARATOR; } return $result; } function generateEntriesInfo( $vfs_target_dir) { // ディレクトリ内の一覧を取得 $vfs_target_parent_dir = dirname( $vfs_target_dir).DIRECTORY_SEPARATOR; $enc_vfs_target_parent_dir = urlencode( $vfs_target_parent_dir); $raw_entries = glob( BASE_DATA_DIR.$vfs_target_dir."*"); $enc_vfs_target_dir = urlencode( $vfs_target_dir); $vfs_target_dir_entries = array(); $vfs_file_entries = array(); if ( $vfs_target_dir != "" && $vfs_target_dir != DIRECTORY_SEPARATOR) { // トップディレクトリ以外は親ディレクトリに移動できるエントリを追加 $vfs_target_dir_entries[] = array( "onclick"=>"javascript:loadDirectory('$enc_vfs_target_parent_dir')", "display_name"=>"Parent Directory", "size"=>"-", "datetime"=>strftime( DATE_TIME_FORMAT, filemtime( BASE_DATA_DIR.$vfs_target_dir))); } foreach ( $raw_entries as $entry) { $base_name = basename( $entry); $esc_base_name = htmlspecialchars( $base_name); $enc_base_name = urlencode( $base_name); if ( is_dir( $entry) == TRUE) { $vfs_target_dir_entries[] = array( "onclick"=>"javascript:loadDirectory('$enc_vfs_target_dir$enc_base_name/')", "display_name"=>$esc_base_name, "size"=>"-", "type"=>"directory", "datetime"=>strftime( DATE_TIME_FORMAT, filemtime( $entry))); } else { $vfs_file_entries[] = array( "onclick"=>"javascript:downloadFile('$enc_vfs_target_dir', '$enc_base_name')", "display_name"=>$esc_base_name, "size"=>number_format( filesize( $entry)), "type"=>"file", "datetime"=>strftime( DATE_TIME_FORMAT, filemtime( $entry))); } } $result = array( "dir"=>$vfs_target_dir_entries, "file"=>$vfs_file_entries, "base"=>$vfs_target_dir); return $result; } function showFoldersList( $entries_infos) { $result = ""; foreach ( $entries_infos[ "dir"] as $index=>$entry_info) { $odd_even = ( $index % 2) == 0? "odd": "even"; $result .= <<{$entry_info[ "display_name"]} EOD; } return $result; } function showEntriesList( $entries_infos) { $result = ""; $entries = array_merge( $entries_infos[ "dir"], $entries_infos[ "file"]); $entreis = empty( $entries) == TRUE? array(): $entry; $html = ""; foreach ( $entries as $index=>$entry_info) { $odd_even = ( $index % 2) == 0? "odd": "even"; $html .= << {$entry_info[ "display_name"]} {$entry_info[ "size"]} {$entry_info[ "datetime"]} EOD; } $result .= << NameSizeDate/Time $html EOD; return $result; } ?>