Merge pull request #5494 from owncloud/fixing-3593-master
introducing new dav property {xmlns:oc="http://owncloud.org/ns}id
This commit is contained in:
commit
222f1b8da2
|
@ -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());
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
<?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 = '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';
|
||||
if (array_search($fileid_propertyname, $requestedProperties)) {
|
||||
unset($requestedProperties[array_search($fileid_propertyname, $requestedProperties)]);
|
||||
}
|
||||
|
||||
/** @var $node OC_Connector_Sabre_Node */
|
||||
$fileId = $node->getFileId();
|
||||
if (!is_null($fileId)) {
|
||||
$returnedProperties[200][$fileid_propertyname] = $fileId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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,20 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
}
|
||||
return $this->fileView;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getFileId()
|
||||
{
|
||||
$this->getFileinfoCache();
|
||||
|
||||
if (isset($this->fileinfo_cache['fileid'])) {
|
||||
$instanceId = OC_Util::getInstanceId();
|
||||
$id = sprintf('%08d', $this->fileinfo_cache['fileid']);
|
||||
return $instanceId . $id;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue