示例#1
0
 /**
  * createDocument
  *
  * @param string                                  $filename
  * @param string                                  $token
  * @param \Erichard\DmsBundle\Entity\DocumentNode $currentNode
  * @param \Erichard\DmsBundle\Entity\Document     $document
  */
 public function createDocument($filename, $token, $currentNode, $document)
 {
     $currentNode->removeEmptyMetadatas();
     if (null === $document->getId()) {
         $document->setName($filename);
     }
     $document->setOriginalName($filename);
     $document->setFilename($token);
     $document->removeEmptyMetadatas();
     $emn = $this->registry->getManager();
     $emn->persist($document);
     $emn->flush();
     foreach ($document->getNode()->getDocuments() as $sibling) {
         $sibling->removeEmptyMetadatas();
     }
     $storageTmpPath = $this->container->getParameter('dms.storage.tmp_path');
     $storagePath = $this->container->getParameter('dms.storage.path');
     $filesystem = $this->container->get('filesystem');
     $absTmpFilename = $storageTmpPath . '/' . $document->getFilename();
     $absFilename = $storagePath . '/' . $document->getComputedFilename();
     $finder = new Finder();
     $finder->files()->in($storageTmpPath)->name($document->getFilename());
     foreach ($finder as $file) {
         $this->addMetadatas($file, $document, 'document');
     }
     // Delete existing thumbnails
     if (is_dir($this->container->getParameter('dms.cache.path'))) {
         $finder = new Finder();
         $finder->files()->in($this->container->getParameter('dms.cache.path'))->name("{$document->getSlug()}.png");
         foreach ($finder as $file) {
             $filesystem->remove($file);
         }
     }
     // overwrite file
     if (is_file($absFilename)) {
         unlink($absFilename);
     } elseif (!$filesystem->exists(dirname($absFilename))) {
         $filesystem->mkdir(dirname($absFilename));
     }
     $filesystem->rename($absTmpFilename, $absFilename);
     $document->setFilename($document->getComputedFilename());
     $emn->persist($document);
     $emn->flush();
 }