include/reddav.php is the glue between Red attachments and the SabreDav interfaces. Much work remains beofre we're ready to actually use this interface. Think of it as a conceptual outline and I'm starting to fill it in from the top down.
This commit is contained in:
parent
fe3e294f4c
commit
370f8b84da
154
include/reddav.php
Normal file
154
include/reddav.php
Normal file
@ -0,0 +1,154 @@
|
||||
<?php /** @file */
|
||||
|
||||
use Sabre\DAV;
|
||||
require_once('vendor/autoload.php');
|
||||
|
||||
class RedInode implements DAV\INode {
|
||||
|
||||
private $attach;
|
||||
|
||||
function __construct($attach) {
|
||||
$this->attach = $attach;
|
||||
}
|
||||
|
||||
|
||||
function delete() {
|
||||
|
||||
}
|
||||
|
||||
function getName() {
|
||||
return $this->attach['filename'];
|
||||
}
|
||||
|
||||
function setName($newName) {
|
||||
$this->attach['filename'] = $newName;
|
||||
// FIXME save the DB record
|
||||
}
|
||||
|
||||
function getLastModified() {
|
||||
return $this->attach['edited'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
abstract class RedDirectory extends DAV\Node implements DAV\ICollection {
|
||||
|
||||
private $red_path;
|
||||
private $dir_key;
|
||||
private $auth;
|
||||
private $channel_id;
|
||||
|
||||
function __construct($red_path,$auth_plugin) {
|
||||
$this->red_path = $red_path;
|
||||
$this->auth = $auth_plugin;
|
||||
}
|
||||
|
||||
function getChildren() {
|
||||
|
||||
if(! perm_is_allowed($this->channel_id,'','view_storage'))
|
||||
return array();
|
||||
|
||||
$ret = array();
|
||||
$r = q("select distinct filename from attach where folder = '%s' and uid = %d group by filename",
|
||||
dbesc($this->dir_key),
|
||||
intval($this->channel_id)
|
||||
);
|
||||
if($r) {
|
||||
foreach($r as $rr) {
|
||||
$ret[] = $rr['filename'];
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function getChild($name) {
|
||||
if(! perm_is_allowed($this->channel_id,'','view_storage')) {
|
||||
//check this throw new DAV\Exception\PermissionDenied('Permission denied.');
|
||||
return;
|
||||
}
|
||||
|
||||
$r = q("select * from attach where folder = '%s' and filename = '%s' and uid = %d limit 1",
|
||||
dbesc($this->dir_key),
|
||||
dbesc($name),
|
||||
dbesc($this->channel_id)
|
||||
);
|
||||
if(! $r) {
|
||||
throw new DAV\Exception\NotFound('The file with name: ' . $name . ' could not be found');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function createFile($name,$data = null) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
function createDirectory($name) {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function childExists($name) {
|
||||
$r = q("select distinct filename from attach where folder = '%s' and filename = '%s' and uid = %d group by filename",
|
||||
dbesc($this->dir_key),
|
||||
dbesc($name),
|
||||
intval($this->channel_id)
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
abstract class RedFile extends DAV\Node implements DAV\IFile {
|
||||
|
||||
private $data;
|
||||
|
||||
|
||||
function __construct($data) {
|
||||
$this->data = $data;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function put($data) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
function get() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
function getETag() {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function getContentType() {
|
||||
return $this->data['filetype'];
|
||||
}
|
||||
|
||||
|
||||
function getSize() {
|
||||
return $this->data['filesize'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1 +1 @@
|
||||
2013-10-24.476
|
||||
2013-10-26.478
|
||||
|
Reference in New Issue
Block a user