Browse Source

introducing new dav property {xmlns:oc="http://owncloud.org/ns}id

tags/v6.0.0beta2
Thomas Müller 10 years ago
parent
commit
b60ae11db8

+ 1
- 0
apps/files/appinfo/remote.php View File

@@ -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
- 0
lib/private/connector/sabre/filesplugin.php View 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();

}

}

}

+ 17
- 1
lib/private/connector/sabre/node.php View File

@@ -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…
Cancel
Save