diff options
author | Paolo T <tuscanhobbit@users.noreply.github.com> | 2013-10-25 00:09:42 -0700 |
---|---|---|
committer | Paolo T <tuscanhobbit@users.noreply.github.com> | 2013-10-25 00:09:42 -0700 |
commit | b23f3fc03b6bc751aab67fe2258a21f7c65bab8e (patch) | |
tree | 84c997aa781afa566536ca5f66eb8f90ef468476 /vendor/sabre/dav/examples/simplefsserver.php | |
parent | d30f718e0836a031e43d5403480aa049561e736e (diff) | |
parent | 0b0bd3c20765d267ec6d7cc261c7713917a22582 (diff) | |
download | volse-hubzilla-b23f3fc03b6bc751aab67fe2258a21f7c65bab8e.tar.gz volse-hubzilla-b23f3fc03b6bc751aab67fe2258a21f7c65bab8e.tar.bz2 volse-hubzilla-b23f3fc03b6bc751aab67fe2258a21f7c65bab8e.zip |
Merge pull request #3 from friendica/master
Align to main project HEAD
Diffstat (limited to 'vendor/sabre/dav/examples/simplefsserver.php')
-rw-r--r-- | vendor/sabre/dav/examples/simplefsserver.php | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/vendor/sabre/dav/examples/simplefsserver.php b/vendor/sabre/dav/examples/simplefsserver.php new file mode 100644 index 000000000..f1b4a1100 --- /dev/null +++ b/vendor/sabre/dav/examples/simplefsserver.php @@ -0,0 +1,123 @@ +<?php + +// !!!! Make sure the Sabre directory is in the include_path !!! +// example: +// set_include_path('lib/' . PATH_SEPARATOR . get_include_path()); + +/* + +This example demonstrates a simple way to create your own virtual filesystems. +By extending the _File and Directory classes, you can easily create a tree +based on various datasources. + +The most obvious example is the filesystem itself. A more complete and documented +example can be found in: + +lib/Sabre/DAV/FS/Node.php +lib/Sabre/DAV/FS/Directory.php +lib/Sabre/DAV/FS/File.php + +*/ + +// settings +date_default_timezone_set('Canada/Eastern'); +$publicDir = 'public'; + +// Files we need +require_once 'vendor/autoload.php'; + +class MyCollection extends Sabre\DAV\Collection { + + private $myPath; + + function __construct($myPath) { + + $this->myPath = $myPath; + + } + + function getChildren() { + + $children = array(); + // Loop through the directory, and create objects for each node + foreach(scandir($this->myPath) as $node) { + + // Ignoring files staring with . + if ($node[0]==='.') continue; + + $children[] = $this->getChild($node); + + } + + return $children; + + } + + function getChild($name) { + + $path = $this->myPath . '/' . $name; + + // We have to throw a NotFound exception if the file didn't exist + if (!file\exists($this->myPath)) throw new \Sabre\DAV\Exception\NotFound('The file with name: ' . $name . ' could not be found'); + // Some added security + + if ($name[0]=='.') throw new \Sabre\DAV\Exception\Forbidden('Access denied'); + + if (is_dir($path)) { + + return new \MyCollection($name); + + } else { + + return new \MyFile($path); + + } + + } + + function getName() { + + return basename($this->myPath); + + } + +} + +class MyFile extends \Sabre\DAV\File { + + private $myPath; + + function __construct($myPath) { + + $this->myPath = $myPath; + + } + + function getName() { + + return basename($this->myPath); + + } + + function get() { + + return fopen($this->myPath,'r'); + + } + + function getSize() { + + return filesize($this->myPath); + + } + +} + +// Make sure there is a directory in your current directory named 'public'. We will be exposing that directory to WebDAV +$rootNode = new \MyCollection($publicDir); + +// The rootNode needs to be passed to the server object. +$server = new \Sabre\DAV\Server($rootNode); + +// And off we go! +$server->exec(); |