diff --git a/src/nk/DocumentBundle/Command/GenerateFileSlugCommand.php b/src/nk/DocumentBundle/Command/GenerateFileSlugCommand.php new file mode 100644 index 0000000..19e41ee --- /dev/null +++ b/src/nk/DocumentBundle/Command/GenerateFileSlugCommand.php @@ -0,0 +1,49 @@ +setName('nk:document:generate:file:slug') + ->setDescription('(re)genère les slugs de tous les fichiers') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $em = $this->getContainer()->get('doctrine.orm.entity_manager'); + $files = $em->getRepository('nkDocumentBundle:File')->findAll(); + + $progress = new ProgressBar($output, count($files)); + $progress->setFormat('%current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s% %message%'); + $progress->start(); + + $progress->setMessage('start'); + + foreach ($files as $file) { + $progress->setMessage($file->getId()); + $file->setSlug(null); + + if ($progress->getProgress() % 10 === 0) { + $em->flush(); + } + + $progress->advance(); + } + + $em->flush(); + + $progress->setMessage('finish'); + $progress->finish(); + } +} diff --git a/src/nk/DocumentBundle/Controller/ApiRestController.php b/src/nk/DocumentBundle/Controller/ApiRestController.php index 5a3bf8c..ba17b0c 100644 --- a/src/nk/DocumentBundle/Controller/ApiRestController.php +++ b/src/nk/DocumentBundle/Controller/ApiRestController.php @@ -133,7 +133,7 @@ public function getDocumentAction(Document $document) foreach ($document->getFiles() as $file) { /* @var $file \nk\DocumentBundle\Entity\File */ - $file->setDownloadPath($this->generateUrl('nk_document_file_download', array('id' => $file->getId(), 'inline' => 1))); + $file->setDownloadPath($this->generateUrl('nk_document_file_preview_slug', array('slug' => $file->getSlug()))); } $data = array( diff --git a/src/nk/DocumentBundle/Entity/File.php b/src/nk/DocumentBundle/Entity/File.php index 6684ec6..6799918 100644 --- a/src/nk/DocumentBundle/Entity/File.php +++ b/src/nk/DocumentBundle/Entity/File.php @@ -88,6 +88,13 @@ class File */ private $downloadPath; + /** + * @Gedmo\Slug(fields={"id", "name"}, suffix=".pdf") + * @ORM\Column(length=128, nullable=false, options={"default" : ""}) + * @Serializer\Groups({"details"}) + */ + private $slug; + public function __construct(Document $document = null) { if($document !== null) @@ -275,4 +282,27 @@ public function setDownloadPath($downloadPath) return $this; } + + /** + * Set slug + * + * @param string $slug + * @return File + */ + public function setSlug($slug) + { + $this->slug = $slug; + + return $this; + } + + /** + * Get slug + * + * @return string + */ + public function getSlug() + { + return $this->slug; + } } diff --git a/src/nk/DocumentBundle/Resources/config/routing/file.yml b/src/nk/DocumentBundle/Resources/config/routing/file.yml index 17bb45f..45dcab0 100644 --- a/src/nk/DocumentBundle/Resources/config/routing/file.yml +++ b/src/nk/DocumentBundle/Resources/config/routing/file.yml @@ -8,4 +8,10 @@ nk_document_file_download: pattern: /{id}/download defaults: { _controller: nkDocumentBundle:File:download } requirements: - id: \d+ \ No newline at end of file + id: \d+ + +nk_document_file_preview_slug: + pattern: /{slug} + defaults: { _controller: nkDocumentBundle:File:download, inline = 1 } + requirements: + id: \d+