<?php
namespace AppBundle\Controller;
use Pimcore\Controller\FrontendController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Routing\Annotation\Route;
use Pimcore\Model\DataObject\Product\Listing as ProductListing;
use Pimcore\Model\User\Listing as UserListing;
use Pimcore\Model\DataObject\DacomUser\Listing as DacomUserListing;
use \AppBundle\Model\DacomUserCore;
use \AppBundle\Model\Util;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
class DownloadController extends FrontendController
{
/**
* @Route("/telechargement", name="telechargement")
* @Route("/telechargement/langue/{lang}", name="telechargement-lang")
*/
public function defaultAction(Request $request, Security $security, $lang = null)
{
//Check user logged
$user = $security->getUser();
if(!$user)
{
return $this->redirectToRoute('login');
}
if(isset($lang))
{
$request->setLocale($lang);
}
$dacomUser = DacomUserCore::geByPimCoreUser($user);
$languages = [];
$languagesCodes = \Pimcore\Tool::getValidLanguages();
foreach($languagesCodes as $code)
{
$translation = ucfirst(\Locale::getDisplayLanguage($code, $request->getLocale()));
$languages[] = (object)["code" => $code, "name" => $translation];
if($code == $request->getLocale())
{
$currentLanguageName = $translation;
$currentLanguageCode = $code;
}
}
$folders = [];
$parentFolder = \Pimcore\Model\Asset::getByPath("/downloads/".$currentLanguageCode);
if($parentFolder)
{
$folders = $parentFolder->getChildren();
usort($folders, array($this, "sortFoldersByOrderAsc"));
}
else
{
$parentFolder = new \Pimcore\Model\Asset\Folder();
$parentFolder->setParent(\Pimcore\Model\Asset::getByPath("/downloads/"));
$parentFolder->setFileName($currentLanguageCode);
$parentFolder->save();
}
$products = new ProductListing();
$productCount = $products->count();
$data = [
"user" => $dacomUser,
"productCount" => $productCount,
"userCount" => $userCount,
"product_last_modification_date" => $lastModificationDate,
"pim_url" => $pimPageUrl,
"logoutPageUrl" => $this->generateUrl('logout'),
"users" => new DacomUserListing(),
"languages" => $languages,
"currentLanguageName" => $currentLanguageName,
"currentLanguageCode" => $currentLanguageCode,
"folders" => $folders
];
return $this->render(":Telechargement:telechargement.html.twig", $data);
}
/**
* @Route("/telechargement-reorder", name="telechargement-reorder")
*/
public function reorderAction(Request $request, Security $security)
{
//Check user logged
$user = $security->getUser();
if(!$user)
{
return $this->redirectToRoute('login');
}
$data = $_POST["data"];
foreach($data as $folderData)
{
$folder = \Pimcore\Model\Asset\Folder::getById($folderData["folderId"]);
$folder->addMetadata("order", "input", $folderData["order"]);
$folder->save();
}
return $this->json(array("error" => false));
}
public function sortFoldersByIdAsc($folderA, $folderB)
{
$idA = $folderA->getId();
$idB = $folderB->getId();
if($idA > $idB)
{
return 1;
}
else if($idA == $idB)
{
return 0;
}
return -1;
}
public function sortFoldersByOrderAsc($folderA, $folderB)
{
$orderA = $folderA->getMetadata("order");
$orderB = $folderB->getMetadata("order");
if($orderA > $orderB)
{
return 1;
}
else if($orderA == $orderB)
{
return 0;
}
return -1;
}
/**
* @Route("/telechargement-ajout/langue/{lang}/folder/{id}", name="telechargement-ajout")
*/
public function uploadAction(Request $request, Security $security, $id, $lang)
{
$folder = \Pimcore\Model\Asset\Folder::getById($id);
$filename = $_FILES['pdf_file']['name'];
$path = $_FILES['pdf_file']['tmp_name'];
$asset = \Pimcore\Model\Asset::getByPath("/downloads/".$lang."/".$folder->getFilename()."/".$filename);
if($asset)
{
$asset->setData(file_get_contents($path));
$asset->save();
}
else
{
$asset = new \Pimcore\Model\Asset();
$asset->setFilename($filename);
$asset->setData(file_get_contents($path));
$asset->setParent($folder);
$asset->save();
}
return $this->redirectToRoute('telechargement-lang', ["lang" => $lang]);
}
/**
* @Route("/telechargement/ajout-dossier/{lang}", name="telechargement-add-folder")
*/
public function addFolderAction(Request $request, Security $security, $lang )
{
$name = $_POST["folder_name"];
if($name != "")
{
$parentFolder = \Pimcore\Model\Asset::getByPath("/downloads/".$lang);
if(!$parentFolder)
{
$parentFolder = new \Pimcore\Model\Asset\Folder();
$parentFolder->setParent(\Pimcore\Model\Asset::getByPath("/downloads/"));
$parentFolder->setFileName($lang);
$parentFolder->save();
}
$folder = new \Pimcore\Model\Asset\Folder();
$folder->setFileName($name);
$folder->setParent($parentFolder);
$folder->save();
}
return $this->redirectToRoute('telechargement-lang', ["lang" => $lang]);
}
/**
* @Route("/telechargement/get/{id}", name="telechargement-get")
*/
public function downloadAction(Request $request, Security $security, $id)
{
$asset = \Pimcore\Model\Asset::getById($request->get('id'));
$response = new BinaryFileResponse($asset->getFileSystemPath());
$response->headers->set('Content-Type', $asset->getMimetype());
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $asset->getFilename());
return $response;
}
/**
* @Route("/telechargement/see/{id}", name="telechargement-see")
* @Route("/telechargement/see/{id}/{filename}", name="telechargement-see")
*/
public function seeAction(Request $request, Security $security, $id, $filename = null)
{
$asset = \Pimcore\Model\Asset::getById($request->get('id'));
$response = new BinaryFileResponse($asset->getFileSystemPath());
$response->headers->set('Content-Type', $asset->getMimetype());
$filename = preg_replace(["#(.*)_(.*)#"], ['$1', ''], $asset->getFileName());
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $filename);
return $response;
}
/**
* @Route("/telechargement/delete/{id}", name="telechargement-delete")
*/
public function deleteAction(Request $request, Security $security, $id)
{
$asset = \Pimcore\Model\Asset::getById($id);
if($asset)
{
$asset->delete();
}
return $this->redirectToRoute('telechargement');
}
/**
* @Route("/telechargement/delete-folder/{id}", name="telechargement-delete")
*/
public function deleteFolderAction(Request $request, Security $security, $id)
{
$folder = \Pimcore\Model\Asset\Folder::getById($id);
if($folder)
{
$folder->delete();
}
return $this->redirectToRoute('telechargement');
}
/**
* @Route("/test/")
*/
public function testAssetPdf(Request $request, Security $security)
{
$asset = \Pimcore\Model\Asset::getById(684);
dump($asset->getImageThumbnail("thumbnail_300"));
die();
}
}