0
@@ -105,7 +105,7 @@ class midcom_core_helpers_webdav extends HTTP_WebDAV_Server
0
function PROPFIND(&$options, &$files)
0
$this->filename_check();
0
$_MIDCOM->authorization->require_user();
0
@@ -121,6 +121,11 @@ class midcom_core_helpers_webdav extends HTTP_WebDAV_Server
0
$data['children'] = $this->get_node_children($page);
0
+ if (empty($data['children']))
0
// Convert children to PROPFIND elements
0
$this->children_to_files($data['children'], &$files);
0
@@ -348,30 +353,43 @@ class midcom_core_helpers_webdav extends HTTP_WebDAV_Server
0
function LOCK(&$options)
0
$options['timeout'] = time() + $_MIDCOM->configuration->get('metadata_lock_timeout');
0
+ $controller = $this->controller;
0
+ $action_method = str_replace('action_', 'get_object_', $this->action_method);
0
+ if (!method_exists($controller, $action_method))
0
+ throw new midcom_exception_httperror("Locking not allowed", 405);
0
+ $object = $controller->$action_method($this->route_id, $data, $this->action_arguments);
0
+ throw new midcom_exception_notfound("No lockable objects");
0
if ($options['scope'] == 'shared')
0
- if (is_null($
info['object']))
0
throw new midcom_exception_notfound("Not found");
0
- if (midcom_core_helpers_metadata::is_locked($
info['object']))
0
+ if (midcom_core_helpers_metadata::is_locked($
object))
0
$this->logger->log("Object is locked by another user");
0
- midcom_core_helpers_metadata::lock($info['object'], $shared, $options['locktoken']);
0
- $options['timeout'] = time() + $_MIDCOM->configuration->get('metadata_lock_timeout');
0
+ midcom_core_helpers_metadata::lock($object, $shared, $options['locktoken']);
0
@@ -382,6 +400,31 @@ class midcom_core_helpers_webdav extends HTTP_WebDAV_Server
0
function UNLOCK(&$options)
0
+ $controller = $this->controller;
0
+ $action_method = str_replace('action_', 'get_object_', $this->action_method);
0
+ if (!method_exists($controller, $action_method))
0
+ throw new midcom_exception_httperror("Locking not allowed", 405);
0
+ $object = $controller->$action_method($this->route_id, $data, $this->action_arguments);
0
+ throw new midcom_exception_notfound("No lockable objects");
0
+ if (midcom_core_helpers_metadata::is_locked($object ))
0
+ $this->logger->log("Object is locked by another user {$object->metadata->locker}");
0
+ $this->logger->log("Unlocking");
0
+ midcom_core_helpers_metadata::unlock($object);
0
@@ -393,6 +436,7 @@ class midcom_core_helpers_webdav extends HTTP_WebDAV_Server
0
function checkLock($path)
0
+ $this->logger->log("CHECKLOCK: {$path}");
0
if (isset($this->locks[$path]))
0
return $this->locks[$path];
0
@@ -420,15 +464,15 @@ class midcom_core_helpers_webdav extends HTTP_WebDAV_Server
0
$this->logger->log('Resolver got "' . $e->getMessage() . '"');
0
- if (!in_array('PROPFIND', $resolution['
controller']['allowed_methods']))
0
+ if (!in_array('PROPFIND', $resolution['
route']['allowed_methods']))
0
// No PROPFIND supported, so don't supply lock information either
0
$this->locks[$path] = false;
0
return $this->locks[$path];
0
- $controller_class = $resolution['controller']['controller'];
0
- $action_method = "get_object_{$resolution['controller']['action']}";
0
+ $controller_class = $resolution['route']['controller'];
0
+ $action_method = "get_object_{$resolution['route']['action']}";
0
if (!method_exists($controller_class, $action_method))
0
@@ -441,7 +485,7 @@ class midcom_core_helpers_webdav extends HTTP_WebDAV_Server
0
$controller->dispatcher = $_MIDCOM->dispatcher;
0
- $object = $controller->$action_method($resolution['
controller']['route_id'], $data, $resolution['controller']['route_id']);
0
+ $object = $controller->$action_method($resolution['
route_id'], $data, $resolution['action_arguments']);
Comments
No one has commented yet.