file_listing.lib.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * Functions for listing directories
  5. *
  6. * @package PhpMyAdmin
  7. */
  8. if (! defined('PHPMYADMIN')) {
  9. exit;
  10. }
  11. /**
  12. * Returns array of filtered file names
  13. *
  14. * @param string $dir directory to list
  15. * @param string $expression regular expression to match files
  16. *
  17. * @return array sorted file list on success, false on failure
  18. */
  19. function PMA_getDirContent($dir, $expression = '')
  20. {
  21. if (!file_exists($dir) || !($handle = @opendir($dir))) {
  22. return false;
  23. }
  24. $result = array();
  25. if (substr($dir, -1) != '/') {
  26. $dir .= '/';
  27. }
  28. while ($file = @readdir($handle)) {
  29. if (is_file($dir . $file)
  30. && ($expression == '' || preg_match($expression, $file))
  31. ) {
  32. $result[] = $file;
  33. }
  34. }
  35. @closedir($handle);
  36. asort($result);
  37. return $result;
  38. }
  39. /**
  40. * Returns options of filtered file names
  41. *
  42. * @param string $dir directory to list
  43. * @param string $extensions regullar expression to match files
  44. * @param string $active currently active choice
  45. *
  46. * @return array sorted file list on success, false on failure
  47. */
  48. function PMA_getFileSelectOptions($dir, $extensions = '', $active = '')
  49. {
  50. $list = PMA_getDirContent($dir, $extensions);
  51. if ($list === false) {
  52. return false;
  53. }
  54. $result = '';
  55. foreach ($list as $val) {
  56. $result .= '<option value="' . htmlspecialchars($val) . '"';
  57. if ($val == $active) {
  58. $result .= ' selected="selected"';
  59. }
  60. $result .= '>' . htmlspecialchars($val) . '</option>' . "\n";
  61. }
  62. return $result;
  63. }
  64. /**
  65. * Get currently supported decompressions.
  66. *
  67. * @return string separated list of extensions usable in PMA_getDirContent
  68. */
  69. function PMA_supportedDecompressions()
  70. {
  71. global $cfg;
  72. $compressions = '';
  73. if ($cfg['GZipDump'] && @function_exists('gzopen')) {
  74. if (!empty($compressions)) {
  75. $compressions .= '|';
  76. }
  77. $compressions .= 'gz';
  78. }
  79. if ($cfg['BZipDump'] && @function_exists('bzopen')) {
  80. if (!empty($compressions)) {
  81. $compressions .= '|';
  82. }
  83. $compressions .= 'bz2';
  84. }
  85. if ($cfg['ZipDump'] && @function_exists('gzinflate')) {
  86. if (!empty($compressions)) {
  87. $compressions .= '|';
  88. }
  89. $compressions .= 'zip';
  90. }
  91. return $compressions;
  92. }