<?php
require_once "lib/ezutils/classes/ezmimetype.php";

class MyServer extends eZWebDAVServer
{
    function MyServer()
    {
        $this->eZWebDAVServer();
    }

    function getCollectionContent( $dir )
    {
        $directory = '/pfad/zu/dateien/' . $dir;
        $files  = array();
        $handle = opendir( $directory );

        // Hole alle Dateien in dem Verzeichnis
        while ( $filename = readdir( $handle ) )
        {
                // Das aktuelle und übergeordnete Verzeichnis auslassen.
                if ( $filename == '.' or $filename == '..' ){
                        continue;
                }
                $files[] = getFileInfo( $directory, $filename );
        }
        return $files;
    }

    function put( $dir )
    {
        $realPath = '/pfad/zu/dateien/' . $target;

        $status = rename( $tempFile, $realPath );

        // Auf Fehler achten
        if ( $status )
        {
                return EZ_WEBDAV_OK_CREATED;
        }
        else
        {
                return EZ_WEBDAV_FAILED_FORBIDDEN;
        }
        }

    function getFileInfo( $dir, $file )
    {
        $realPath = $dir.'/'.$file;
        $fileInfo = array();
        $fileInfo["name"] = $file;

        // Wenn die Datei eigentlich ein Verzeichnis ist:
        if ( is_dir( $realPath ) )
        {
                $fileInfo["size"]     = 0;
                $fileInfo["mimetype"] = "httpd/unix-directory";

                // Erstellungs- und Änderungdatum auslesen.
                $fileInfo["ctime"] = filectime( $realPath.'/.' );
                $fileInfo["mtime"] = filemtime( $realPath.'/.' );
        }
        else
        {
                // Erstellungs- und Änderungdatum auslesen.
                $fileInfo["ctime"] = filectime( $realPath );
                $fileInfo["mtime"] = filemtime( $realPath );

                // Dateigroesse in bytes auslesen.
                $fileInfo["size"] = filesize( $realPath );

                // Existiert die Datei und kann gelesen werden?
                if ( is_readable( $realPath ) )
                {
                        // Versuche den MIME-Typ zu erkennen.
                        $mimeInfo = eZMimeType::findByURL( $dir . '/' . $file );
                        $fileInfo['mimetype'] = $mimeInfo['name'];
                }
                // MIME-Typ nicht erkannt, Fallback zu 'application/x-non-readable'
                else
80                 {
81                         $fileInfo["mimetype"] = "application/x-non-readable";
82                 }
83           }
84         return $fileInfo;
85    }
86 }
87 
88 $server= new MyServer();
89 $server->processClientRequest();
90 ?>