/** * __toString * * @return string */ public function __toString() { return $this->document->getName() . ' - ' . $this->metadata->getName(); }
/** * generateThumbnail * * @param DocumentInterface $document * @param array $dimension * * @return array|null|string */ public function generateThumbnail(DocumentInterface $document, $dimension) { list($width, $height) = array_map('intval', explode('x', $dimension)); $cacheFile = sprintf('%s/%s/%s/%s.png', $this->options['cache_path'], $dimension, $document->getNode()->getSlug(), $document->getSlug()); if (!is_file($cacheFile)) { $size = new Box($width, $height); $mode = ImageInterface::THUMBNAIL_INSET; $absPath = $this->options['storage_path'] . DIRECTORY_SEPARATOR . (null !== $document->getThumbnail() ? $document->getThumbnail() : $document->getFilename()); if (!is_file($absPath) || filesize($absPath) >= 100000000) { $cacheFile = $this->mimeTypeManager->getMimetypeImage($absPath, max([$width, $height])); } else { try { if (pathinfo($absPath, PATHINFO_EXTENSION) === 'pdf') { $absPath .= '[0]'; } $imagick = new \Imagick($absPath); $imagick->setCompression(Imagick::COMPRESSION_LZW); $imagick->setResolution(72, 72); $imagick->setCompressionQuality(90); $image = new Image($imagick, new RGB(), new MetadataBag()); if (!is_dir(dirname($cacheFile))) { mkdir(dirname($cacheFile), 0777, true); } $image->thumbnail($size, $mode)->save($cacheFile, array('quality' => 90)); } catch (\Exception $e) { $cacheFile = $this->mimeTypeManager->getMimetypeImage($this->options['storage_path'] . DIRECTORY_SEPARATOR . $document->getFilename(), max([$width, $height])); } } } return $cacheFile; }
/** * getSonataThumbUrl * * @param DocumentInterface $document * @param mixed $dimension * @param bool $absolute * * @return string */ public function getSonataThumbUrl(DocumentInterface $document, $dimension, $absolute = false) { return $this->router->generate('admin_erichard_dms_document_preview', array('document' => $document->getSlug(), 'node' => $document->getNode()->getSlug(), 'dimension' => $dimension), $absolute); }