read() public static method

public static read ( $content, $mimetype )
Ejemplo n.º 1
0
 /**
  * Create new genesis document
  * @param File $file 
  * */
 public function __construct(File $file)
 {
     $view = $file->getOwnerView();
     $path = $file->getPath();
     $owner = $file->getOwner();
     $this->view = new View('/' . $owner);
     if (!$this->view->file_exists(self::DOCUMENTS_DIRNAME)) {
         $this->view->mkdir(self::DOCUMENTS_DIRNAME);
     }
     $this->validate($view, $path);
     $this->hash = $view->hash('sha1', $path, false);
     $this->path = self::DOCUMENTS_DIRNAME . '/' . $this->hash . '.odt';
     if (!$this->view->file_exists($this->path)) {
         //copy new genesis to /user/documents/{hash}.odt
         // get decrypted content
         $content = $view->file_get_contents($path);
         $mimetype = $view->getMimeType($path);
         $data = Filter::read($content, $mimetype);
         $this->view->file_put_contents($this->path, $data['content']);
     }
     try {
         $this->validate($this->view, $this->path);
     } catch (\Exception $e) {
         throw new \Exception('Failed to copy genesis');
     }
 }
Ejemplo n.º 2
0
 public function render()
 {
     if ($this->getStatus() === Http::STATUS_NOT_FOUND) {
         return '';
     }
     $info = $this->view->getFileInfo($this->path);
     $this->ETag = $info['etag'];
     $content = $this->view->file_get_contents($this->path);
     $data = \OCA\Richdocuments\Filter::read($content, $info['mimetype']);
     $size = strlen($data['content']);
     if (isset($this->request->server['HTTP_RANGE']) && !is_null($this->request->server['HTTP_RANGE'])) {
         $isValidRange = preg_match('/^bytes=\\d*-\\d*(,\\d*-\\d*)*$/', $this->request->server['HTTP_RANGE']);
         if (!$isValidRange) {
             return $this->sendRangeNotSatisfiable($size);
         }
         $ranges = explode(',', substr($this->request->server['HTTP_RANGE'], 6));
         foreach ($ranges as $range) {
             $parts = explode('-', $range);
             if ($parts[0] === '' && $parts[1] == '') {
                 $this->sendNotSatisfiable($size);
             }
             if ($parts[0] === '') {
                 $start = $size - $parts[1];
                 $end = $size - 1;
             } else {
                 $start = $parts[0];
                 $end = $parts[1] === '' ? $size - 1 : $parts[1];
             }
             if ($start > $end) {
                 $this->sendNotSatisfiable($size);
             }
             $buffer = substr($data['content'], $start, $end - $start);
             $md5Sum = md5($buffer);
             // send the headers and data
             $this->addHeader('Content-Length', $end - $start);
             $this->addHeader('Content-md5', $md5Sum);
             $this->addHeader('Accept-Ranges', 'bytes');
             $this->addHeader('Content-Range', 'bytes ' . $start . '-' . $end . '/' . $size);
             $this->addHeader('Connection', 'close');
             $this->addHeader('Content-Type', $data['mimetype']);
             $this->addContentDispositionHeader();
             return $buffer;
         }
     }
     $this->addHeader('Content-Type', $data['mimetype']);
     $this->addContentDispositionHeader();
     $this->addHeader('Content-Length', $size);
     return $data['content'];
 }