$modLog = Tinebase_Timemachine_ModificationLog::getInstance();
$modLog->setRecordMetaData($updatedFileObject, 'update', $currentFileObject);
+
+ // quick hack for 2014.11 - will be resolved correctly in 2015.11-develop
+ if (isset($_SERVER['HTTP_X_OC_MTIME'])) {
+ $updatedFileObject->last_modified_time = new Tinebase_DateTime($_SERVER['HTTP_X_OC_MTIME']);
+ header('X-OC-MTime: accepted');
+ if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG))
+ Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " using X-OC-MTIME: {$updatedFileObject->last_modified_time->format(Tinebase_Record_Abstract::ISO8601LONG)} for {$updatedFileObject->id}");
+
+ }
// sanitize file size, somehow filesize() seems to return empty strings on some systems
if (empty($updatedFileObject->size)) {
'contentytype' => null,
));
Tinebase_Timemachine_ModificationLog::setRecordMetaData($fileObject, 'create');
+
+ // quick hack for 2014.11 - will be resolved correctly in 2015.11-develop
+ if (isset($_SERVER['HTTP_X_OC_MTIME'])) {
+ $fileObject->creation_time = new Tinebase_DateTime($_SERVER['HTTP_X_OC_MTIME']);
+ $fileObject->last_modified_time = new Tinebase_DateTime($_SERVER['HTTP_X_OC_MTIME']);
+ header('X-OC-MTime: accepted');
+ if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG))
+ Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " using X-OC-MTIME: {$fileObject->last_modified_time->format(Tinebase_Record_Abstract::ISO8601LONG)} for {$name}");
+
+ }
+
$fileObject = $this->_fileObjectBackend->create($fileObject);
-
+
$treeNode = new Tinebase_Model_Tree_Node(array(
'name' => $name,
'object_id' => $fileObject->getId(),
' ' . print_r($treeNode->toArray(), TRUE));
$treeNode = $this->_treeNodeBackend->create($treeNode);
-
+
return $treeNode;
}
public function update(Tinebase_Model_Tree_Node $_node)
{
$currentNodeObject = $this->get($_node->getId());
+ $fileObject = $this->_fileObjectBackend->get($currentNodeObject->object_id);
+
Tinebase_Timemachine_ModificationLog::setRecordMetaData($_node, 'update', $currentNodeObject);
-
+ Tinebase_Timemachine_ModificationLog::setRecordMetaData($fileObject, 'update', $fileObject);
+
+ // quick hack for 2014.11 - will be resolved correctly in 2015.11-develop
+ if (isset($_SERVER['HTTP_X_OC_MTIME'])) {
+ $fileObject->last_modified_time = new Tinebase_DateTime($_SERVER['HTTP_X_OC_MTIME']);
+ header('X-OC-MTime: accepted');
+ if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG))
+ Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " using X-OC-MTIME: {$fileObject->last_modified_time->format(Tinebase_Record_Abstract::ISO8601LONG)} for {$_node->name}");
+
+ }
+
// update file object
- $fileObject = $this->_fileObjectBackend->get($currentNodeObject->object_id);
$fileObject->description = $_node->description;
-
$this->_updateFileObject($fileObject, $_node->hash);
return $this->_treeNodeBackend->update($_node);
self::$_server = new \Sabre\DAV\Server(new Tinebase_WebDav_Root());
if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
+ self::$_server->debugExceptions = true;
$contentType = self::$_server->httpRequest->getHeader('Content-Type');
Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " requestContentType: " . $contentType);
self::$_server->addPlugin(new Tinebase_WebDav_Plugin_PrincipalSearch());
self::$_server->addPlugin(new \Sabre\DAV\Browser\Plugin());
self::$_server->addPlugin(new Tinebase_WebDav_Plugin_SyncToken());
-
- if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
+
+ $contentType = self::$_server->httpRequest->getHeader('Content-Type');
+ $logOutput = Tinebase_Core::isLogLevel(Zend_Log::DEBUG) && preg_match('/^text/', $contentType);
+
+ if ($logOutput) {
ob_start();
}
self::$_server->exec();
- if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
+ if ($logOutput) {
Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " >>> *DAV response:\n" . ob_get_contents());
ob_end_flush();
+ } else {
+
+ Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . " <<< *DAV response\n -- BINARY DATA --");
}
-
+
Tinebase_Controller::getInstance()->logout($this->_request->getServer('REMOTE_ADDR'));
}
$children[] = $this->getChild(Tinebase_Model_Container::TYPE_SHARED);
if ($this->_hasPersonalFolders) {
- $children[] = $this->getChild($this->_useIdAsName ? Tinebase_Core::getUser()->contact_id : Tinebase_Core::getUser()->accountDisplayName);
+ $children[] = $this->getChild(
+ $this->_useIdAsName ? Tinebase_Core::getUser()->contact_id :
+ Addressbook_Controller_Contact::getInstance()->get(Tinebase_Core::getUser()->contact_id)->n_fileas
+ );
$otherUsers = Tinebase_Container::getInstance()->getOtherUsers(Tinebase_Core::getUser(), $this->_getApplicationName(), array(
Tinebase_Model_Grants::GRANT_READ,
foreach ($otherUsers as $user) {
if ($user->contact_id && $user->visibility === Tinebase_Model_User::VISIBILITY_DISPLAYED) {
try {
- $children[] = $this->getChild($this->_useIdAsName ? $user->contact_id : $user->accountDisplayName);
+ $folderId = $this->_useIdAsName ? $user->contact_id :
+ Addressbook_Controller_Contact::getInstance()->get($user->contact_id)->n_fileas;
+
+ $children[] = $this->getChild($folderId);
} catch (\Sabre\DAV\Exception\NotFound $sdavenf) {
// ignore contacts not found
}