src/AppBundle/Controller/DownloadController.php line 220

Open in your IDE?
  1. <?php
  2. namespace AppBundle\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\Security\Core\Security;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Pimcore\Model\DataObject\Product\Listing as ProductListing;
  8. use Pimcore\Model\User\Listing as UserListing;
  9. use Pimcore\Model\DataObject\DacomUser\Listing as DacomUserListing;
  10. use \AppBundle\Model\DacomUserCore;
  11. use \AppBundle\Model\Util;
  12. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  13. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  14. class DownloadController extends FrontendController
  15. {
  16.     /**        
  17.     * @Route("/telechargement", name="telechargement")
  18.     * @Route("/telechargement/langue/{lang}", name="telechargement-lang")
  19.     */
  20.     public function defaultAction(Request $requestSecurity $security$lang null)
  21.     {
  22.         //Check user logged
  23.         $user $security->getUser();
  24.         if(!$user)
  25.         {
  26.             return $this->redirectToRoute('login');
  27.         }
  28.         
  29.         if(isset($lang))
  30.         {
  31.             $request->setLocale($lang);
  32.         }
  33.         
  34.         $dacomUser DacomUserCore::geByPimCoreUser($user);
  35.         $languages = [];
  36.         $languagesCodes = \Pimcore\Tool::getValidLanguages();
  37.         foreach($languagesCodes as $code)
  38.         {
  39.             $translation ucfirst(\Locale::getDisplayLanguage($code$request->getLocale()));
  40.             $languages[] = (object)["code" => $code"name" => $translation];
  41.             if($code == $request->getLocale())
  42.             {
  43.                 $currentLanguageName $translation;
  44.                 $currentLanguageCode $code;
  45.             }
  46.         }
  47.         
  48.         $folders = [];
  49.         $parentFolder = \Pimcore\Model\Asset::getByPath("/downloads/".$currentLanguageCode);
  50.         
  51.         if($parentFolder)
  52.         {
  53.             $folders $parentFolder->getChildren();
  54.             usort($folders, array($this"sortFoldersByOrderAsc"));
  55.         }
  56.         else
  57.         {
  58.             $parentFolder = new \Pimcore\Model\Asset\Folder();
  59.             $parentFolder->setParent(\Pimcore\Model\Asset::getByPath("/downloads/"));
  60.             $parentFolder->setFileName($currentLanguageCode);
  61.             $parentFolder->save();
  62.         }
  63.         
  64.         $products = new ProductListing();
  65.         $productCount $products->count();
  66.                 
  67.         $data = [
  68.             "user" => $dacomUser,
  69.             "productCount" => $productCount,
  70.             "userCount" => $userCount,
  71.             "product_last_modification_date" => $lastModificationDate,
  72.             "pim_url" => $pimPageUrl,
  73.             "logoutPageUrl" => $this->generateUrl('logout'),
  74.             "users" => new DacomUserListing(),
  75.             "languages" => $languages,
  76.             "currentLanguageName" => $currentLanguageName,
  77.             "currentLanguageCode" => $currentLanguageCode,
  78.             "folders" => $folders
  79.         ];
  80.         
  81.         return $this->render(":Telechargement:telechargement.html.twig"$data);
  82.     }
  83.     
  84.     
  85.     /**        
  86.     * @Route("/telechargement-reorder", name="telechargement-reorder")
  87.     */
  88.     public function reorderAction(Request $requestSecurity $security)
  89.     {
  90.         //Check user logged
  91.         $user $security->getUser();
  92.         if(!$user)
  93.         {
  94.             return $this->redirectToRoute('login');
  95.         }
  96.         
  97.         $data $_POST["data"];
  98.         foreach($data as $folderData)
  99.         {
  100.             $folder = \Pimcore\Model\Asset\Folder::getById($folderData["folderId"]);
  101.             $folder->addMetadata("order""input"$folderData["order"]);
  102.             $folder->save();
  103.         }
  104.         
  105.         
  106.         return $this->json(array("error" => false));
  107.     }    
  108.     
  109.     public function sortFoldersByIdAsc($folderA$folderB)
  110.     {
  111.         $idA $folderA->getId();
  112.         $idB $folderB->getId();
  113.         
  114.         if($idA $idB)
  115.         {
  116.             return 1;
  117.         }
  118.         else if($idA == $idB)
  119.         {
  120.             return 0;
  121.         }
  122.         return -1;
  123.     }    
  124.     
  125.     public function sortFoldersByOrderAsc($folderA$folderB)
  126.     {
  127.         $orderA $folderA->getMetadata("order");
  128.         $orderB $folderB->getMetadata("order");
  129.     
  130.         if($orderA $orderB)
  131.         {
  132.             return 1;
  133.         }
  134.         else if($orderA == $orderB)
  135.         {
  136.             return 0;
  137.         }
  138.         return -1;
  139.     }        
  140.     
  141.     /**
  142.     * @Route("/telechargement-ajout/langue/{lang}/folder/{id}", name="telechargement-ajout")
  143.     */
  144.     public function uploadAction(Request $requestSecurity $security$id$lang)
  145.     {
  146.         $folder =  \Pimcore\Model\Asset\Folder::getById($id);
  147.         
  148.         $filename $_FILES['pdf_file']['name'];
  149.         $path $_FILES['pdf_file']['tmp_name'];
  150.         
  151.         $asset = \Pimcore\Model\Asset::getByPath("/downloads/".$lang."/".$folder->getFilename()."/".$filename);
  152.         if($asset)
  153.         {
  154.             $asset->setData(file_get_contents($path));
  155.             $asset->save();
  156.         }
  157.         else
  158.         {
  159.             $asset = new \Pimcore\Model\Asset();
  160.             $asset->setFilename($filename);
  161.             $asset->setData(file_get_contents($path));
  162.             $asset->setParent($folder);
  163.             $asset->save();
  164.         }
  165.         
  166.         return $this->redirectToRoute('telechargement-lang', ["lang" => $lang]);
  167.     }
  168.     
  169.     /**
  170.     * @Route("/telechargement/ajout-dossier/{lang}", name="telechargement-add-folder")
  171.     */
  172.     public function addFolderAction(Request $requestSecurity $security$lang )
  173.     {
  174.         $name $_POST["folder_name"];
  175.         if($name != "")
  176.         {
  177.             $parentFolder = \Pimcore\Model\Asset::getByPath("/downloads/".$lang);
  178.             if(!$parentFolder)
  179.             {
  180.                 $parentFolder = new \Pimcore\Model\Asset\Folder();
  181.                 $parentFolder->setParent(\Pimcore\Model\Asset::getByPath("/downloads/"));
  182.                 $parentFolder->setFileName($lang);
  183.                 $parentFolder->save();
  184.             }
  185.             
  186.             $folder = new \Pimcore\Model\Asset\Folder();
  187.             $folder->setFileName($name);
  188.             $folder->setParent($parentFolder);
  189.             $folder->save();
  190.         }
  191.         return $this->redirectToRoute('telechargement-lang', ["lang" => $lang]);
  192.     }        
  193.     
  194.     /**
  195.     * @Route("/telechargement/get/{id}", name="telechargement-get")
  196.     */
  197.     public function downloadAction(Request $requestSecurity $security$id)
  198.     {
  199.         $asset = \Pimcore\Model\Asset::getById($request->get('id'));
  200.         $response = new BinaryFileResponse($asset->getFileSystemPath());
  201.         $response->headers->set('Content-Type'$asset->getMimetype());
  202.         $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT$asset->getFilename());
  203.         return $response;
  204.     }
  205.     
  206.     /**
  207.     * @Route("/telechargement/see/{id}", name="telechargement-see")
  208.     * @Route("/telechargement/see/{id}/{filename}", name="telechargement-see")
  209.     */
  210.     public function seeAction(Request $requestSecurity $security$id$filename null)
  211.     {
  212.         $asset = \Pimcore\Model\Asset::getById($request->get('id'));
  213.         $response = new BinaryFileResponse($asset->getFileSystemPath());
  214.         $response->headers->set('Content-Type'$asset->getMimetype());
  215.         $filename preg_replace(["#(.*)_(.*)#"], ['$1'''], $asset->getFileName());
  216.         $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE$filename);
  217.         return $response;
  218.     }    
  219.     
  220.     /**
  221.     * @Route("/telechargement/delete/{id}", name="telechargement-delete")
  222.     */
  223.     public function deleteAction(Request $requestSecurity $security$id)
  224.     {
  225.         $asset = \Pimcore\Model\Asset::getById($id);
  226.         if($asset)
  227.         {
  228.             $asset->delete();
  229.         }
  230.         return $this->redirectToRoute('telechargement');
  231.     }    
  232.     
  233.     /**
  234.     * @Route("/telechargement/delete-folder/{id}", name="telechargement-delete")
  235.     */
  236.     public function deleteFolderAction(Request $requestSecurity $security$id)
  237.     {
  238.         $folder = \Pimcore\Model\Asset\Folder::getById($id);
  239.         if($folder)
  240.         {
  241.             $folder->delete();
  242.         }
  243.         return $this->redirectToRoute('telechargement');
  244.     }    
  245.     
  246.     /**
  247.     * @Route("/test/")
  248.      */
  249.     public function testAssetPdf(Request $requestSecurity $security)
  250.     {
  251.         $asset = \Pimcore\Model\Asset::getById(684);
  252.         dump($asset->getImageThumbnail("thumbnail_300"));
  253.         die();
  254.     }
  255. }