OK, THIS one doesn't throw a syntax error ;)
class dir {
var $name;
var $subdirs;
var $files;
var $num;
var $prio;
function dir($name,$num,$prio) {
$this->name = $name;
$this->num = $num;
$this->prio = $prio;
$this->files = array();
$this->subdirs = array();
}
function addFile($file) {
$this->files[] =& $file;
return $file;
}
function addDir($dir) {
$this->subdirs[] =& $dir;
return $dir;
}
function findDir($name) {
foreach($this->subdirs as $v){
if($v->name == $name)
return $v;
}
return false;
}
function draw($parent) {
echo('d.add('.$this->num.','.$parent.',"'.$this->name."\",".$this->prio.");\n");
foreach($this->subdirs as $v) {
$v->draw($this->num);
}
foreach($this->files as $v)
if(is_object($v)) {
echo("d.add(".$v->num.",".$this->num.",
\"".$v->name."\",".$v->prio.");\n");
}
}
}
class file {
var $name;
var $prio;
var $size;
var $num;
function file($name,$num,$size,$prio) {
$this->name = $name;
$this->num = $num;
$this->size = $size;
$this->prio = $prio;
}
}
$arFiles = array
(
0 => array
(
'path' => array
(
0 => 'folder1',
1 => 'subfolder1',
2 => 'file1.ext'
),
'length' => 5464,
'size' => 8765
),
1 => array
(
'path' => array
(
0 => 'folder2/',
1 => 'subfolder2/',
2 => 'file2.ext'
),
'length' => 5464,
'size' => 8765
),
2 => array
(
'path' => array
(
0 => 'folder3/',
1 => 'subfolder3/',
2 => 'file3.ext'
),
'length' => 5464,
'size' => 8765
)
);
$prio = array();
for($i=0;$i<count($arFiles);$i++)
$prio[$i] = -1;
$dirnum = count($arFiles);
$tree = new dir("/",$dirnum,isset($prio[$dirnum])?$prio[$dirnum]:-1);
foreach( $arFiles as $filenum => $file) {
$depth = count($file['path']);
$branch =& $tree;
for($i=0; $i < $depth; $i++){
if ($i != $depth-1){
$d =& $branch->findDir($file['path'][$i]);
if($d)
$branch =& $d;
else{
$dirnum++;
$d =& $branch->addDir(new dir($file['path'][$i], $dirnum,
(isset($prio[$dirnum])?$prio[$dirnum]:-1)));
$branch =& $d;
}
}else
$branch->addFile(new
file($file['path'][$i]." (".$file['length'].")",$filenum,$file['size'],
$prio[$filenum]));
}
}
$tree->draw(-1);
On Sat, 2005-01-29 at 04:20 +0100, Jochem Maas wrote:
> Jon wrote:
> > This script only outputs the top level. i.e.
> >
>
> that script has syntax errors. ...
>
> $arFiles = array(
> array['file1'](
> array(
> ['path] => array(
> [0] => 'folder1',
> [1] => 'subfolder1'
> [2] => 'file1.ext'
> ),
> ['length'] => 5464,
> ['size'] => 8765
> ),
> array['file2'](
> array(
> ['path] => array(
> [0] => 'folder2',
> [1] => 'subfolder2'
> [2] => 'file2.ext'
> ),
> ['length'] => 5464,
> ['size'] => 8765
> ),
> array['file3'](
> array(
> ['path] => array(
> [0] => 'folder3',
> [1] => 'subfolder3'
> [2] => 'file3.ext'
> ),
> ['length'] => 5464,
> ['size'] => 8765
> )
> )
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php