<?

// Icons array
$icons = array('audio' => '/~noemie/list_dir/audio.gif',
               'dir' => '/~noemie/list_dir/dir.gif',
               'dvi' => '/~noemie/list_dir/dvi.gif',
               'html' => '/~noemie/list_dir/html.gif',
               'misc' => '/~noemie/list_dir/misc.gif',
               'pdf' => '/~noemie/list_dir/pdf.gif',
               'ppt' => '/~noemie/list_dir/ppt.gif',
               'word' => '/~noemie/list_dir/word.gif',
               'ps' => '/~noemie/list_dir/ps.gif',
               'source' => '/~noemie/list_dir/source.gif',
               'xls' => '/~noemie/list_dir/xls.gif',
               'txt' => '/~noemie/list_dir/text.gif',
               'video' => '/~noemie/list_dir/video.gif',
               'movie' => '/~noemie/list_dir/mov.gif',
               'xml' => '/~noemie/list_dir/xml.gif',
               'zip' => '/~noemie/list_dir/zip.gif',
               'img' => '/~noemie/list_dir/image.gif'
               );

// Get the files and directory
$path = "./";
$dir_handle = opendir($path) or die ("Unable to open $path");
while($file = readdir($dir_handle)) {
  if($file == "." || $file == ".." || $file == "index.php") {
    continue;
  }
  elseif (is_dir($file)) {
    $dirs[] = $file;
  }
  elseif (preg_match("/\.(jpg|gif|png)$/i", $file)) {
    $images[] = $file;
  }
  else {
    $files[] = $file;
  }
}
closedir($dir_handle);

// Display headers
echo "<html>\n<head>\n";
echo "<link rel='stylesheet' href='/~noemie/list_dir/list.css'>\n";
echo "</head>\n<body>\n";

// Show thumbnails of images
sort ($images);
foreach ($images as $img) {
  echo "<a href='$img'><img border=0 src='$img' height='120' width='160'></a> &nbsp;&nbsp;\n";
}
echo "</body>\n</html>\n";


// Auxiliary functions
function list_files ($array, $icons) {
  if (!$array) {
    return;
  }
  sort ($array);
  foreach ($array as $item) {
    // find type of 
    echo "<tr><td><img src='";
      if (is_dir($item)) {
        echo $icons['dir'];
      }
      elseif (preg_match("/\.ppt$/i", $item)) {
        echo $icons['ppt'];
      }
      elseif (preg_match("/\.doc$/i", $item)) {
        echo $icons['word'];
      }
      elseif (preg_match("/\.xls$/i", $item)) {
        echo $icons['xls'];
      }
      elseif (preg_match("/\.(txt|tex)$/i", $item)) {
        echo $icons['txt'];
      }
      elseif (preg_match("/\.(pdf)$/i", $item)) {
        echo $icons['pdf'];
      }
      elseif (preg_match("/\.(ps)$/i", $item)) {
        echo $icons['ps'];
      }
      elseif (preg_match("/\.(wav)$/i", $item)) {
        echo $icons['audio'];
      }
      elseif (preg_match("/\.(dvi)$/i", $item)) {
        echo $icons['dvi'];
      }
      elseif (preg_match("/\.(pl|java|c|cc)$/i", $item)) {
        echo $icons['source'];
      }
      elseif (preg_match("/\.(zip|gz|Z|tar)$/i", $item)) {
        echo $icons['zip'];
      }
      elseif (preg_match("/\.(htm|html|css|php|cgi)$/i", $item)) {
        echo $icons['html'];
      }
      elseif (preg_match("/\.(xml|xsd|dtd)$/i", $item)) {
        echo $icons['xml'];
      }
      elseif (preg_match("/\.(mov)$/i", $item)) {
        echo $icons['movie'];
      }
      else {
        echo $icons['misc'];
      }
      echo "'></td>\n";
      echo "<td><a href='$item'>$item</a></td>\n";
      echo "<td>". date ("M d Y H:i:s", filemtime($item)) . "</td>\n";
      echo "<td align=right>" . filesize_format(filesize($item)) . "</td></tr>\n";
  }
}

function filesize_format($bytes, $format = '', $force = '') {
  $force = strtoupper($force);
  $defaultFormat = '%01d %s';
  if (strlen($format) == 0)
    $format = $defaultFormat;
  $bytes = max(0, (int) $bytes);
  $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
  $power = array_search($force, $units);
  if ($power === false)
    $power = $bytes > 0 ? floor(log($bytes, 1024)) : 0;
  return sprintf($format, $bytes / pow(1024, $power), $units[$power]);
}


?>
