Example #1
0
 /**
  * Create new file and write into it from file pointer.
  * Return new file path or false on error.
  *
  * @param  resource    $fp   file pointer
  * @param  string      $dir  target dir path
  * @param  string      $name file name
  * @param  array       $stat file stat (required by some virtual fs)
  * @return bool|string
  * @author Dmitry (dio) Levashov
  **/
 protected function _save($fp, $dir, $name, $stat)
 {
     $filename = $this->_joinPath($dir, $name);
     $mime = $stat['mime'];
     // @TODO implement a proper system to map a mime-type to a phpcr class
     if (isset($stat['height']) && $stat['height'] && isset($stat['width']) && $stat['width']) {
         $file = new Image();
     } else {
         $file = new File();
     }
     // do not pass file pointer directly to prevent it is closed multiple
     // times causing an error
     $stream = fopen('php://memory', 'rwb+');
     stream_copy_to_stream($fp, $stream);
     $file->setContentFromStream($stream);
     $file->setContentType($mime);
     $file->setId($filename);
     $this->mediaManager->setDefaults($file, $dir);
     $this->dm->persist($file);
     $this->dm->flush();
     return $file->getId();
 }