diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/FileListing.php | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/FileListing.php')
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/FileListing.php | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/FileListing.php b/srcs/phpmyadmin/libraries/classes/FileListing.php new file mode 100644 index 0000000..c6f07a5 --- /dev/null +++ b/srcs/phpmyadmin/libraries/classes/FileListing.php @@ -0,0 +1,108 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * Holds the PhpMyAdmin\FileListing class + * + * @package PhpMyAdmin + */ +declare(strict_types=1); + +namespace PhpMyAdmin; + +/** + * Functions for listing directories + * + * @package PhpMyAdmin + */ +class FileListing +{ + /** + * Returns array of filtered file names + * + * @param string $dir directory to list + * @param string $expression regular expression to match files + * + * @return array|bool sorted file list on success, false on failure + */ + public function getDirContent(string $dir, string $expression = '') + { + if (! @file_exists($dir) || ! ($handle = @opendir($dir))) { + return false; + } + + $result = []; + if (substr($dir, -1) != '/') { + $dir .= '/'; + } + while ($file = @readdir($handle)) { + if (@is_file($dir . $file) + && ! @is_link($dir . $file) + && ($expression == '' || preg_match($expression, $file)) + ) { + $result[] = $file; + } + } + closedir($handle); + asort($result); + return $result; + } + + /** + * Returns options of filtered file names + * + * @param string $dir directory to list + * @param string $extensions regular expression to match files + * @param string $active currently active choice + * + * @return string|false Html <option> field, false if not files in dir + */ + public function getFileSelectOptions( + string $dir, + string $extensions = '', + string $active = '' + ) { + $list = $this->getDirContent($dir, $extensions); + if ($list === false) { + return false; + } + $result = ''; + foreach ($list as $val) { + $result .= '<option value="' . htmlspecialchars($val) . '"'; + if ($val == $active) { + $result .= ' selected="selected"'; + } + $result .= '>' . htmlspecialchars($val) . '</option>' . "\n"; + } + return $result; + } + + /** + * Get currently supported decompressions. + * + * @return string separated list of extensions usable in getDirContent + */ + public function supportedDecompressions(): string + { + global $cfg; + + $compressions = ''; + + if ($cfg['GZipDump'] && function_exists('gzopen')) { + $compressions = 'gz'; + } + if ($cfg['BZipDump'] && function_exists('bzopen')) { + if (! empty($compressions)) { + $compressions .= '|'; + } + $compressions .= 'bz2'; + } + if ($cfg['ZipDump'] && function_exists('gzinflate')) { + if (! empty($compressions)) { + $compressions .= '|'; + } + $compressions .= 'zip'; + } + + return $compressions; + } +} |
