introducing new dav property {xmlns:oc="http://owncloud.org/ns}id
This commit is contained in:
parent
2d14daf36b
commit
b60ae11db8
3 changed files with 86 additions and 1 deletions
|
@ -48,6 +48,7 @@ $defaults = new OC_Defaults();
|
|||
$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend, $defaults->getName()));
|
||||
$server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend));
|
||||
$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload
|
||||
$server->addPlugin(new OC_Connector_Sabre_FilesPlugin());
|
||||
$server->addPlugin(new OC_Connector_Sabre_AbortedUploadDetectionPlugin());
|
||||
$server->addPlugin(new OC_Connector_Sabre_QuotaPlugin());
|
||||
$server->addPlugin(new OC_Connector_Sabre_MaintenancePlugin());
|
||||
|
|
68
lib/private/connector/sabre/filesplugin.php
Normal file
68
lib/private/connector/sabre/filesplugin.php
Normal file
|
@ -0,0 +1,68 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Thomas Müller
|
||||
* @copyright 2013 Thomas Müller <thomas.mueller@tmit.eu>
|
||||
*
|
||||
* @license AGPL3
|
||||
*/
|
||||
|
||||
class OC_Connector_Sabre_FilesPlugin extends Sabre_DAV_ServerPlugin
|
||||
{
|
||||
|
||||
// namespace
|
||||
const NS_OWNCLOUD = 'xmlns:oc="http://owncloud.org/ns';
|
||||
|
||||
/**
|
||||
* Reference to main server object
|
||||
*
|
||||
* @var Sabre_DAV_Server
|
||||
*/
|
||||
private $server;
|
||||
|
||||
/**
|
||||
* This initializes the plugin.
|
||||
*
|
||||
* This function is called by Sabre_DAV_Server, after
|
||||
* addPlugin is called.
|
||||
*
|
||||
* This method should set up the required event subscriptions.
|
||||
*
|
||||
* @param Sabre_DAV_Server $server
|
||||
* @return void
|
||||
*/
|
||||
public function initialize(Sabre_DAV_Server $server) {
|
||||
|
||||
$server->xmlNamespaces[self::NS_OWNCLOUD] = 'oc';
|
||||
$server->protectedProperties[] = '{' . self::NS_OWNCLOUD . '}id';
|
||||
|
||||
$this->server = $server;
|
||||
$this->server->subscribeEvent('beforeGetProperties', array($this, 'beforeGetProperties'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds all ownCloud-specific properties
|
||||
*
|
||||
* @param string $path
|
||||
* @param Sabre_DAV_INode $node
|
||||
* @param array $requestedProperties
|
||||
* @param array $returnedProperties
|
||||
* @return void
|
||||
*/
|
||||
public function beforeGetProperties($path, Sabre_DAV_INode $node, array &$requestedProperties, array &$returnedProperties) {
|
||||
|
||||
if ($node instanceof OC_Connector_Sabre_Node) {
|
||||
|
||||
$fileid_propertyname = '{' . self::NS_OWNCLOUD . '}id';
|
||||
unset($requestedProperties[array_search($fileid_propertyname, $requestedProperties)]);
|
||||
|
||||
/** @var $node OC_Connector_Sabre_Node */
|
||||
$returnedProperties[200][$fileid_propertyname] = $node->getFileId();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -45,6 +45,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
* @var string
|
||||
*/
|
||||
protected $path;
|
||||
|
||||
/**
|
||||
* node fileinfo cache
|
||||
* @var array
|
||||
|
@ -211,6 +212,7 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
* properties should be returned
|
||||
*/
|
||||
public function getProperties($properties) {
|
||||
|
||||
if (is_null($this->property_cache)) {
|
||||
$sql = 'SELECT * FROM `*PREFIX*properties` WHERE `userid` = ? AND `propertypath` = ?';
|
||||
$result = OC_DB::executeAudited( $sql, array( OC_User::getUser(), $this->path ) );
|
||||
|
@ -236,8 +238,11 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
|
||||
$props = array();
|
||||
foreach($properties as $property) {
|
||||
if (isset($this->property_cache[$property])) $props[$property] = $this->property_cache[$property];
|
||||
if (isset($this->property_cache[$property])) {
|
||||
$props[$property] = $this->property_cache[$property];
|
||||
}
|
||||
}
|
||||
|
||||
return $props;
|
||||
}
|
||||
|
||||
|
@ -260,4 +265,15 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
}
|
||||
return $this->fileView;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getFileId()
|
||||
{
|
||||
$this->getFileinfoCache();
|
||||
$instanceId = OC_Util::getInstanceId();
|
||||
$id = sprintf('%08d', $this->fileinfo_cache['fileid']);
|
||||
return $instanceId . $id;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue