owncloud/core — pull request #673 by icewind1991 (2012-12-02 02:56:23+00:00)
Title: Filecache rewrite

This implements a complete rewrite of the filesystem metadata cache and large changes around the rest of the filesystem classes.

The biggest change for the cache is that the cache now runs dirrectly on top of the storage backends instead of on top of the rest of of the filesystem layers.
This means that each instance of the cache is tied to a single storage backend and the cache holds no information about where the storage is mounted,
this seperation between the storage backends and filesystem means that the cache can be re-used when a storage backend is mounted in several places.
Because of this, on row in the filecache table can hold information of a file available to mutliply users and thus the file permissions cache has been moved to a seperate table

This does mean that the cache no longer directly provides an easy to use api, instead filesystem view provides an api which glues together everything into a proper api.

Storage backends now also have the option to overwride caching, scanning and permissions behaviour so backends can provide specialized behaviour when needed.
The main usage for this is sharing which already has all the metadata stored in the sharing table and the filecache of the source file and it can be used to increase scanning performance for archives.

The main cache API now consists of the following functions
- \OC\Files\Filesystem::getFileInfo($path)
- \OC\Files\Filesystem::putFileInfo($path)
- \OC\Files\Filesystem::getDirectoryContent($path)
- \OC\Files\Filesystem::search($query)
- \OC\Files\Filesystem::searchByMime($mimetype) (accepts both 'text/plain' and wildcard 'text' style mimetypes)

getFileInfo and getDirectoryContent are still available in their old place, OC_Files for now

The other main change is that most parts of the filesystem stack have been renamed and moved into namespaces
- OC_Filesystem -> \OC\Files\Filesystem
- OC_FilesystemView -> \OC\Files\View
- OC_Filestorage_* -> \OC\Files\Storage\*
- OC_FileCache has been split into \OC\Files\Cache\Cache, \OC\Files\Cache\Scanner, \OC\Files\Cache\Permissions, \OC\Files\Cache\Watcher and \OC\Files\Cache\Updater

OC_Filesystem and OC_FilesystemView are still available through their old names for compatibility for now.

Currently there are 2 problems with the filecache branch:
- Sharing isn't ported yet, @MTGap is working on that and it should be added soon
- The initial scanning block the interface without any progress indication: while the new system allows caching to be done in the background there is a bug in ownCloud that makes ajax calls blocking on the server. Fixing this is outside the scope of this PR

Don't forget to also update the apps repo