bundles/SalesAppBundle/Controller/DefaultController.php line 16

Open in your IDE?
  1. <?php
  2. namespace SalesAppBundle\Controller;
  3. use Exception;
  4. use Pimcore\Controller\FrontendController;
  5. use Pimcore\Model\Asset;
  6. use Pimcore\Model\Document\Editable\Pdf;
  7. use Pimcore\Model\Document\Editable\Image;
  8. use SalesAppBundle\Model\Document\Page;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use WebAppBundle\Service\Helper\FolderLocatorService;
  13. class DefaultController extends FrontendController
  14. {
  15.     /**
  16.      * @Template()
  17.      *
  18.      * @param Request $request
  19.      * @return void
  20.      */
  21.     public function defaultAction() {}
  22.     public function homeAction(): RedirectResponse
  23.     {
  24.         return $this->redirect("/admin");
  25.     }
  26.     /**
  27.      * @Template()
  28.      * @param Request $request
  29.      *
  30.      * @throws Exception
  31.      */
  32.     public function DocumentPageAction(Request $request)
  33.     {
  34.         if ($this->editmode) {
  35.             /** @var Page $document */
  36.             $document $request->attributes->get('contentDocument');
  37.             $elements $document->getEditables();
  38.             $previewImageTag = (array_key_exists('preview-image'$elements)) ? $elements['preview-image'] : null;
  39.             $documentEditable = (array_key_exists('contentElements:1.document'$elements)) ? $elements['contentElements:1.document'] : null;
  40.             // Check if the chosen field is an image editable
  41.             if (!$previewImageTag instanceof Image) {
  42.                 return;
  43.             }
  44.             // Check for the preview image tag (only fill if empty)
  45.             $previewImage = ($previewImageTag->isEmpty()) ? $previewImageTag->getData() : null;
  46.             if (!$previewImage || !$documentEditable || !$documentEditable instanceof Pdf) {
  47.                 return;
  48.             }
  49.             // Check the document editable and get it's document asset
  50.             $editableData = (!$documentEditable->isEmpty()) ? $documentEditable->getData(): null;
  51.             $assetId = (is_array($editableData)) ? $editableData['id'] : null;
  52.             $asset = ($assetId) ? Asset\Document::getById($assetId): null;
  53.             if (!$asset) {
  54.                 return;
  55.             }
  56.             // Create and get image data
  57.             $thumbnail $asset->getImageThumbnail('SalesAppPdfPreview'1false);
  58.             $thumbnailData file_get_contents($this->getParameter('kernel.project_dir').'/public/var/tmp/thumbnails/'.$thumbnail->getPath());
  59.             // Get thumbnail filename
  60.             $thumbnailPathArray explode('/'$thumbnail->getPath());
  61.             $thumbnailName end($thumbnailPathArray);
  62.             // Get pdf preview folder (defined by property)
  63.             $folderLocatorService = new FolderLocatorService();
  64.             /** @var Asset\Folder $parentFolder */
  65.             $parentFolder $folderLocatorService->findFolderByProperty(FolderLocatorService::FOLDER_TYPE_ASSET'pdf_preview_folder'true);
  66.             if ($parentFolder === null) {
  67.                 return;
  68.             }
  69.             // Construct full preview image path, removing the config folder
  70.             $imagePathKeyArray explode('/'$parentFolder[0]->getPath().$parentFolder[0]->getKey().$thumbnail->getPath());
  71.             array_pop($imagePathKeyArray);
  72.             array_pop($imagePathKeyArray);
  73.             $imagePath implode('/'$imagePathKeyArray);
  74.             // Create the folder and construct a valid key
  75.             $parentFolder Asset\Service::createFolderByPath($imagePath);
  76.             $validThumbnailImageKey Asset\Service::getValidKey($thumbnail->getConfig()->getName().'-'.$thumbnailName'asset');
  77.             // Check for an existing image
  78.             $existingPdfThumbnail \SalesAppBundle\Model\Asset\Image::getByPath($imagePath.'/'.$validThumbnailImageKey);
  79.             if ($existingPdfThumbnail instanceof \SalesAppBundle\Model\Asset\Image) {
  80.                 $previewImageTag->setImage($existingPdfThumbnail);
  81.                 $previewImageTag->save();
  82.                 return;
  83.             }
  84.             // Create the new pdf thumbnail image
  85.             $assetImage = new Asset\Image();
  86.             $assetImage
  87.                 ->setData($thumbnailData)
  88.                 ->setParentId($parentFolder->getId())
  89.                 ->setKey($validThumbnailImageKey)
  90.                 ->save()
  91.             ;
  92.             // Set it on the document
  93.             $previewImageTag->setImage($assetImage);
  94.             $previewImageTag->save();
  95.         }
  96.     }
  97.     /**
  98.      * @Template()
  99.      *
  100.      * @param Request $request
  101.      * @return void
  102.      */
  103.     public function productPageAction(Request $request)
  104.     {
  105.         if (!$this->editmode) {
  106.         }
  107.     }
  108. }