TODO
====

1.2
---

- In certain cases (e.g. eZ Publish integration) the lock plugin must offer a
  public API to its locks. This API must carefully be designed and implemented.

- Windows' case-insensitivity with filenames must be checked!
  
- When a resource is created, clients may provide the getcreationdate
  property (and other date properties), to keep the original dates in tact.  We
  currently don't support this at all, it seems, and some (Windows) clients
  seem to provide invalid dates. At least, an attendee described that he got
  1970-01-01 after uploading a file to mod_webdav.

- The file backend could need some refactorings for performance:

  - Do not load complete property storage from disc, if only self-handled live
	properties (e.g. mtime) are requested.

later
-----

- Add test for mime type file info extensions


Inline todos
============

Grepped on Wed Nov 05 15:57 CET 2008.

Webdav/src/transports/property_handler.php:                // @todo: Should this throw an exception, if the match fails?
Webdav/src/transports/header_handler.php:        // @todo: RFC conform, also clients conform?
Webdav/src/transports/header_handler.php:                // @todo Add plugin hook
Webdav/src/transports/header_handler.php:     * @todo Do we need to provide support for weak entity tags?
Webdav/src/backends/simple.php:                        // @todo: This assumptions is not particular correct.
Webdav/src/backends/simple.php:        // @todo: RFC2616 Section 9.6 PUT requires us to send 501 on all
Webdav/src/backends/simple.php:        // @todo: Does this make sense for PROPFIND requests?
Webdav/src/backends/simple.php:            // @todo: This method might return errors. If it does, the delete
Webdav/src/backends/simple.php:                // @todo: handle keepalive setting somehow - even the RFC is quite
Webdav/src/backends/simple.php:        // @todo: handle keepalive setting somehow - even the RFC is quite
Webdav/src/backends/simple.php:        // @todo: The error generated here should depend on the actual backend
Webdav/src/backends/simple.php:     * @todo Mark protected as soon as API is final.
Webdav/src/backends/file.php:     * @todo The locking mechanism affects the ETag of the base collection. The
Webdav/src/transport.php:     * @todo We should possibly offer an ezcWebdavTemplateTiein, which brings
Webdav/src/plugins/lock/transport.php:        // @todo is the following not restrictive enough?
Webdav/src/plugins/lock/property_handler.php:                    // @TODO: This may only be 1, no ArrayObject needed!
Webdav/src/plugins/lock/header_handler.php:            // @TODO: Let's see, what clients send.
Webdav/src/plugins/lock/tools.php:     * @TODO Should we use sha1 instead of md5?
Webdav/src/plugins/lock/tools.php:        // @TODO: Needs version number in UUID v3/5!
Webdav/src/plugins/lock/tools.php:        // @TODO This might only work properly with single locks!
Webdav/src/plugins/lock/config.php:        // @TODO: Check if more sanity checks must be tested?
Webdav/src/plugins/lock/handlers/lock.php:                // @TODO: Should usually cleanup successful patches again!
Webdav/src/plugins/lock/handlers/propfind.php:                    // @TODO: Make tool method.
Webdav/src/plugins/lock/handlers/move.php:            // @TODO: Affected lock must be properly removed here if we once
Webdav/src/plugins/lock/handlers/unlock.php:            // @TODO Should be protected against infinite recursion
Webdav/src/plugins/lock/handlers/unlock.php:        // @TODO: Analyse if clients usually lock 0 or infinity
Webdav/src/server.php:     * @todo Mark protected as soon as API is final.
Webdav/src/server.php:            // @todo Do we want an opaque value here, too?
Webdav/src/path_factories/basic.php:            // @todo Some clients first send with / and then discover it is not a resource
