<?php
    $configpath 
$_SERVER['DOCUMENT_ROOT'] . '/stuff/dirlist/';
    
$theme 'Default';

    
$sort "name";

    
$direction SORT_ASC;
    if (
array_key_exists('sort'$_GET) && preg_match('/^[NSD]D?$/'$_GET['sort']) > 0) {
        switch(
$_GET['sort']{0}) {
            case 
'S':
                
$sort 'size';
                break;
            case 
'D':
                
$sort 'date';
                break;
        }
        if (
strlen($_GET['sort']) == 2) {
            
$direction SORT_DESC;
        }
    }

    function 
pathToHTML($path$seperator '/') {
        if (
$path == '/') {
            
$return 'Root';
        } else {
            
$patharray explode('/'$path);
            
$c = (count($patharray) - 1);
            
$return '<a class="parent" href="/">Root</a> ' $seperator ' ';
            
$pathvar '/';
            if (
$c 1) {
                for (
$i 1$i $c$i ++) {
                    
$pathvar .= $patharray[$i] . '/';
                    
$return .= '<a class="parent" href="' $pathvar '">' $patharray[$i] . '</a> ' $seperator ' ';
                }
            }
            
$return .= $patharray[$c];
        }
        return 
$return;
    }

    require_once 
$configpath 'DirectoryList.php';

    
$path dirname($_SERVER['SCRIPT_FILENAME']);
    
$safedir dirname(htmlentities($_SERVER['PHP_SELF']));
    try {
        
$dir = new DirectoryList($path);
        
$dir->sortDirectory($sort$direction);
        
$xmlstr '<?xml version="1.0" encoding="UTF-8" ?><index></index>';
        
$x = @new SimpleXMLElement($xmlstr);
        
$x->addChild('path'$safedir);
        
$s $x->addChild('urls');
        
$s->addChild('name', (($sort == 'name' && $direction == SORT_ASC) ? 'ND' 'N'));
        
$s->addChild('size', (($sort == 'size' && $direction == SORT_ASC) ? 'SD' 'S'));
        
$s->addChild('date', (($sort == 'date' && $direction == SORT_ASC) ? 'DD' 'D'));
        if (
$dir->directoryCount 0) {
            foreach(
$dir->directories as $directory) {
                
$s $x->addChild('directory');
                
$s->addChild('name'htmlspecialchars($directory['name']));
                
$s->addChild('date'date('d/m/Y'$directory['date']));
            }
        }
        if (
$dir->fileCount 0) {
            foreach(
$dir->files as $file) {
                
$s $x->addchild('file');
                
$s->addChild('name'htmlspecialchars($file['name']));
                
$s->addChild('size'$dir->formatSize($file['size']));
                
$s->addChild('date'date('d/m/Y'$file['date']));
            }
        }
        
$xsl = new DomDocument;
        
$xmldoc = new DomDocument;
        
$xmldoc->loadXML($x->asXML());
        
$xsl->load($configpath 'themes/' $theme '.xsl');
        
$transformer = new xsltProcessor;
        
$transformer->registerPHPFunctions();
        
$transformer->setParameter('DOCTYPE''PUBLIC''http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd');
        
$transformer->setParameter('html''xmlns''http://www.w3.org/1999/xhtml');
        
$transformer->importStyleSheet($xsl);
        
$transformed $transformer->transformToDoc($xmldoc);
        echo 
$transformed->saveXML();
    } catch (
Exception $e) {
        die(
'<?xml version="1.0" encoding="uft-8" ?>' "\n" '<error>' $e->getMessage() . '</error>');
    }
?>