/**
  * returns array with the filter settings of this filter
  *
  * @param  bool $_valueToJson resolve value for json api?
  * @return array
  */
 public function toArray($_valueToJson = false)
 {
     $result = Tinebase_Model_Filter_Text::toArray($_valueToJson);
     if ($this->_value === '/' || $this->_value === '') {
         $node = new Tinebase_Model_Tree_Node(array('name' => 'root', 'path' => '/'), TRUE);
     } else {
         $node = new Tinebase_Model_Tree_Node(array('path' => $this->_value, 'name' => 'nodeName', 'object_id' => 1));
     }
     $result['value'] = $node->toArray();
     return $result;
 }
 /**
  * create new file node
  * 
  * @param  string|Tinebase_Model_Tree_Node  $parentId
  * @param  string                           $name
  * @throws Tinebase_Exception_InvalidArgument
  * @return Tinebase_Model_Tree_Node
  */
 public function createFileTreeNode($parentId, $name)
 {
     $parentId = $parentId instanceof Tinebase_Model_Tree_Node ? $parentId->getId() : $parentId;
     $fileObject = new Tinebase_Model_Tree_FileObject(array('type' => Tinebase_Model_Tree_FileObject::TYPE_FILE, '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']);
         Tinebase_Server_WebDAV::getResponse()->setHeader('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(), 'parent_id' => $parentId));
     if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
         Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($treeNode->toArray(), TRUE));
     }
     $treeNode = $this->_treeNodeBackend->create($treeNode);
     return $treeNode;
 }
 /**
  * download (fpassthru) file node
  * 
  * @param Tinebase_Model_Tree_Node $node
  * @param string $filesystemPath
  */
 protected function _downloadFileNode($node, $filesystemPath)
 {
     $oldMaxExcecutionTime = Tinebase_Core::setExecutionLifeTime(0);
     if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
         Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Download file node ' . print_r($node->toArray(), TRUE));
     }
     // cache for 3600 seconds
     $maxAge = 3600;
     header('Cache-Control: private, max-age=' . $maxAge);
     header("Expires: " . gmdate('D, d M Y H:i:s', Tinebase_DateTime::now()->addSecond($maxAge)->getTimestamp()) . " GMT");
     // overwrite Pragma header from session
     header("Pragma: cache");
     header('Content-Disposition: attachment; filename="' . $node->name . '"');
     header("Content-Type: " . $node->contenttype);
     $handle = fopen($filesystemPath, 'r');
     fpassthru($handle);
     fclose($handle);
     Tinebase_Core::setExecutionLifeTime($oldMaxExcecutionTime);
 }
 /**
  * create new file node
  * 
  * @param  string|Tinebase_Model_Tree_Node  $parentId
  * @param  string                           $name
  * @throws Tinebase_Exception_InvalidArgument
  * @return Tinebase_Model_Tree_Node
  */
 public function createFileTreeNode($parentId, $name)
 {
     $parentId = $parentId instanceof Tinebase_Model_Tree_Node ? $parentId->getId() : $parentId;
     $fileObject = new Tinebase_Model_Tree_FileObject(array('type' => Tinebase_Model_Tree_FileObject::TYPE_FILE, 'contentytype' => null));
     Tinebase_Timemachine_ModificationLog::setRecordMetaData($fileObject, 'create');
     $fileObject = $this->_fileObjectBackend->create($fileObject);
     $treeNode = new Tinebase_Model_Tree_Node(array('name' => $name, 'object_id' => $fileObject->getId(), 'parent_id' => $parentId));
     if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) {
         Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($treeNode->toArray(), TRUE));
     }
     $treeNode = $this->_treeNodeBackend->create($treeNode);
     return $treeNode;
 }