'.PHP_EOL; echo '

',MediaServe::getData('cwd'),'

'.PHP_EOL; if (MediaServe::checkModule("Playlist")) { echo '
'; echo ' '; echo ' '; echo ' '; echo '
'; } echo '
'; echo ' '; echo ' '; //echo ' '; //echo ' '; // Using button may break IE6 and below... echo ' '; echo ' '; echo '
'; echo ' '.PHP_EOL; echo ' '; echo ' '; echo ' '; echo ' '.PHP_EOL; echo ' '.PHP_EOL; echo ' '; echo ' '; echo ' '; echo ' '.PHP_EOL; foreach(MediaServe::getData('dirs') as $dir) { echo ' '.PHP_EOL; } echo ' '.PHP_EOL; echo ' '; echo ' '; echo ' '; foreach(MediaServe::getData('files') as $file) { echo ' '.PHP_EOL; } echo ' '.PHP_EOL; echo '
'.$file[FileBrowser::F_EXT].'
'.PHP_EOL; echo ' '.PHP_EOL; } /* COMMAND FUNCTIONS */ static function changeCwd($directory) { // NOTE: temporarily resolving any ".." to one dir up, rather than all if (substr_count($directory, "..")) { if (MediaServe::getData('cwd') == FileBrowser::ROOT) { return NULL; } $directory = dirname(MediaServe::getData('cwd')).'/'; } else { $directory = MediaServe::getData('cwd').$directory; } if (!file_exists($directory)) { MediaServe::reportError(__CLASS__, __FUNCTION__, "Cannot change working directory to \"".$directory."\", as it does not exist!\n" ); return NULL; } MediaServe::storeData('cwd', $directory); self::getFiles(); self::sortFiles(); self::filterFiles(); } static function changeSort($type) { MediaServe::storeData('sort_by', $type); if (($sort_order = MediaServe::getData('sort_order')) != SORT_ASC) { MediaServe::storeData('sort_order', SORT_ASC); } else { MediaServe::storeData('sort_order', SORT_DESC); } self::sortFiles(); self::filterFiles(); } static function changeFilter($filter) { MediaServe::storeData('filter', $filter); self::filterFiles(); } static function resetFilter() { self::sortFiles(); self::changeFilter(""); } static function openFile($file) { if (MediaServe::checkModule("Playlist")) { Playlist::addFile(MediaServe::getData('cwd').$file); } } static function openFiles() { if (MediaServe::checkModule("Playlist")) { foreach(MediaServe::getData('files') as $file) { Playlist::addFile(MediaServe::getData('cwd').$file[FileBrowser::F_NAME]); } } } /* GENERAL FUNCTIONS */ static function getFiles() { $directory = MediaServe::getData('cwd'); if (!is_dir($directory)) { MediaServe::reportError(__CLASS__, __FUNCTION__, "Directory \"".$directory."\" does not exist!\n" ); return NULL; } if (!is_readable($directory)) { MediaServe::reportError(__CLASS__, __FUNCTION__, "Cannot open \"".$directory."\" for reading!\n" ); return NULL; } if (!$directory_handle = opendir($directory)) { return NULL; } $i = 0; $files = array(); while (false !== ($filename = readdir($directory_handle))) { if ($filename[0] != '.' && $filename != "..") { $files[$i] = array(); if (is_dir($directory.$filename)) { $files[$i][FileBrowser::F_TYPE] = FileBrowser::T_DIR; } else { $files[$i][FileBrowser::F_TYPE] = FileBrowser::T_FILE; } $files[$i][FileBrowser::F_NAME] = $filename; $files[$i][FileBrowser::F_EXT] = pathinfo($filename, PATHINFO_EXTENSION); $i++; } } return(MediaServe::storeData('dir_list', $files)); } /* INTERNAL FUNCTIONS */ static function sortFiles() { $sort = array(); $sort_by = MediaServe::getData('sort_by'); $sort_order = MediaServe::getData('sort_order'); $i = 0; if ($sort_by == "ext") { foreach (MediaServe::getData('dir_list') as $file) { $sort[$i++] = $file[FileBrowser::F_EXT]; } } else { foreach (MediaServe::getData('dir_list') as $file) { $sort[$i++] = $file[FileBrowser::F_NAME]; } } array_multisort($sort, $sort_order, MediaServe::getData('dir_list')); // Wasteful, but we want directories always on top $dirs = array(); $files = array(); foreach (MediaServe::getData('dir_list') as $file) { if ($file[FileBrowser::F_TYPE] == FileBrowser::T_DIR) { $dirs[] = $file; } else { $files[] = $file; } } MediaServe::storeData('files', $files); MediaServe::storeData('dirs', $dirs); } static function filterFiles() { // TODO: recreating an array seems inefficient, should change if (($filter = MediaServe::getData('filter')) == "") return NULL; $files = array(); $dirs = array(); foreach(MediaServe::getData('files') as $file) { if (strpos($file[FileBrowser::F_NAME], $filter) !== FALSE) { $files[] = $file; } } foreach(MediaServe::getData('dirs') as $dir) { if (strpos($dir[FileBrowser::F_NAME], $filter) !== FALSE) { $dirs[] = $dir; } } MediaServe::storeData('files', $files); MediaServe::storeData('dirs', $dirs); } } ?>