Thursday, July 9, 2009

Directory listing in PHP

[edit] i write a new function: PHP directory listing : convert a folder tree into an array [/edit]

Hello world!

Lately im working on a series of tools which can be useful to organize works in web. Of course, nothing new, but im developing somthing mine and small that i can overwork instead of more complex tools.

This run for web of course and my interest is about:
  • deploy
  • backup
  • maintenance
Well about deploy i actually don't know what i want.
Backup it's what im working at.
maintenance i mean a simple tool that switch web-sites/single page in maintenance or work.

About Backup:
I first thought at a tool for a full and incremental backup, but in the end i decided to add the possibility to manage backup as project, saving status about multiple projects. Im currently working and the first piece of code i will give you is a pair of functions that help you to list directories recursively (and turn it into a PHP array.

function create_tree ($path) {
if(is_dir($path)) {
$tree["$path"] = array();
$tree = get_tree($path, $tree);
return $tree;
} else {
echo "<$path> is not a directory";
exit;
}
}

function get_tree($path, $tree) {
$dir = dir($path);
while(false !== ($entry = $dir->read())) {
$complete = "$path/$entry";
if(is_dir($complete) && $entry != "." && $entry != "..") {
$tree["$path"]["$entry"] = get_tree($complete, $tree[$path][$entry]);
} elseif($entry != "." && $entry != "..") {
$mod = date('d-m-Y H:i:s', filemtime($complete));
$tree[] = array( "fn" => $entry, "mod" => $mod);
}
}
return $tree;
}
And that is that, as you can see when it adds a new entry into the array it save last modification time too, sure will be useful to incremental backup.

TODO: pretty print!!!!