src/Controller/MarketplaceController.php line 42

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Enterprise License (PEL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PEL
  13.  */
  14. namespace App\Controller;
  15. use App\Website\LinkGenerator\NewsLinkGenerator;
  16. use App\Website\Navigation\BreadcrumbHelperService;
  17. use Knp\Component\Pager\PaginatorInterface;
  18. use Pimcore\Model\DataObject\Documents;
  19. use Pimcore\Twig\Extension\Templating\HeadTitle;
  20. use Pimcore\Twig\Extension\Templating\Placeholder;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\Security\Core\User\UserInterface;
  26. use Pimcore\Model\DataObject;
  27. use App\Form\MarketplaceFormType;
  28. use App\Lib\Utility;
  29. use App\Model\Marketplace;
  30. use Symfony\Component\Form\FormError;
  31.  
  32. class MarketplaceController extends BaseController
  33. {   
  34.     const LIMIT_PER_PAGE 10;
  35.     /**
  36.      * @Route("marketplace/listing", name="marketplace-listing")  
  37.      */
  38.     public function listingAction(Request $requestUserInterface $user,PaginatorInterface $paginator)
  39.     {
  40.         $page $request->get('page',1);
  41.         $categoryId $request->get('category_id',null);  
  42.         $search $request->get('search',null); 
  43.         $marketplaceModel = new Marketplace();
  44.         $mpCategories $marketplaceModel->getMarketplaceCategories();        
  45.         $marketplace = new DataObject\Marketplace\Listing();
  46.         if($categoryId && $search){
  47.             $marketplace->setCondition('Category__id = ? AND (title LIKE "%'.$search.'%" OR description LIKE "%'.$search.'%")',[$categoryId]);
  48.         }else if(!$categoryId && $search){
  49.             $marketplace->setCondition('(title LIKE "%'.$search.'%" OR description LIKE "%'.$search.'%")');
  50.         }else if($categoryId && !$search){
  51.             $marketplace->setCondition('Category__id = ?',[$categoryId]);
  52.         }     
  53.         $marketplace->setOrderKey('o_creationDate');
  54.         $marketplace->setOrder('DESC');
  55.         $paginator $paginator->paginate(
  56.             $marketplace,
  57.             $page,
  58.             self::LIMIT_PER_PAGE
  59.         );  
  60.         $params['paginationVariables'] = $paginator->getPaginationData();
  61.         $params['totalCount'] = $paginator->getTotalItemCount();
  62.         $params['offset'] = $paginator->getCurrentPageNumber();
  63.         $params['limit'] = $paginator->getItemNumberPerPage(); 
  64.         $params['categories'] = $mpCategories
  65.         $params['posts'] = $paginator
  66.         $params['category_id'] = $categoryId;     
  67.         return $this->render('marketplace/listing.html.twig',$params);                   
  68.     }  
  69.     
  70.     /**
  71.      * @Route("marketplace/add", name="marketplace-add")  
  72.      */
  73.     public function addAction(Request $requestUserInterface $user)
  74.     {
  75.        
  76.         // build the registration form and pre-fill it with customer data
  77.         $form $this->createForm(MarketplaceFormType::class);
  78.         $form->handleRequest($request);    
  79.         $errors = [];      
  80.        // p_r($form->isValid());exit;
  81.         if ($form->isSubmitted() && !$form->isValid()) { 
  82.            // p_r($form->getErrors());exit;           
  83.             try {
  84.                 $data $form->getViewData();
  85.                 $key strtolower(Utility::clean($data['title'])).'_'.$user->getId();
  86.                 $post \Pimcore\Model\DataObject::getByPath('/Marketplace/Post/'.$user->getEmail().'/'.$key);
  87.                 if($post)
  88.                 {
  89.                     throw new \Exception("Il titolo esiste giĆ ");
  90.                 }
  91.                 $post = new Marketplace();
  92.                 $post->setKey($key);
  93.                 $post->setParent(\Pimcore\Model\DataObject\Service::createFolderByPath('/Marketplace/Post/'.$user->getEmail().'/'));
  94.                 $post->setPublished(true);                
  95.                 $post->setData($form$request$user)->save();
  96.                 $this->addFlash('success''Post salvato con successo');
  97.                
  98.                 return $this->redirectToRoute(
  99.                     "marketplace-my-listing");
  100.             } catch (\Exception $e) {
  101.                 //p_r($e->getMessage());exit;
  102.                 $form->addError(new FormError($e->getMessage()));
  103.             }
  104.         }
  105.        
  106.         if ($form->isSubmitted() && $form->isValid()) {           
  107.             foreach ($form->getErrors() as $error) {
  108.                 $errors[] = $error->getMessage();
  109.             }
  110.           //  p_r($errors);exit;
  111.             
  112.         }  
  113.         return $this->render('marketplace/add.html.twig', ['form' => $form->createView(),'_target_path'=>$request->headers->get('referer'),'errors' => $errors]);                          
  114.     }
  115.     /**
  116.      * @Route("marketplace/mylisting", name="marketplace-my-listing")  
  117.      */
  118.     public function myListingAction(Request $requestUserInterface $user,PaginatorInterface $paginator)
  119.     {
  120.         $page $request->get('page',1);
  121.         $marketplace = new DataObject\Marketplace\Listing();
  122.         $marketplace->setCondition('User__id = ?',[$user->getId()]);    
  123.         $marketplace->setOrderKey('o_creationDate');
  124.         $marketplace->setOrder('DESC');
  125.         $paginator $paginator->paginate(
  126.             $marketplace,
  127.             $page,
  128.             self::LIMIT_PER_PAGE
  129.         );  
  130.         $params['paginationVariables'] = $paginator->getPaginationData();
  131.         $params['totalCount'] = $paginator->getTotalItemCount();
  132.         $params['offset'] = $paginator->getCurrentPageNumber();
  133.         $params['limit'] = $paginator->getItemNumberPerPage();        
  134.         $params['posts'] = $paginator;                
  135.         return $this->render('marketplace/mylisting.html.twig',$params);                   
  136.     }
  137.     /**
  138.      * @Route("marketplace/edit", name="marketplace-edit")  
  139.      */
  140.     public function editAction(Request $requestUserInterface $user)
  141.     {
  142.         $id $request->get('id',null);  
  143.         $post \Pimcore\Model\DataObject::getById($id);
  144.         if($post instanceof \App\Model\Marketplace){
  145.             $postUser $post->getUser();
  146.             if($postUser)
  147.             {
  148.                 if($postUser->getId() == $user->getId()){   
  149.                     
  150.                     $data $post->transformData();                  
  151.                     $form $this->createForm(MarketplaceFormType::class,$data);                                   
  152.                     $form->handleRequest($request);   
  153.                     $errors = [];
  154.                     if ($form->isSubmitted() && !$form->isValid()) {
  155.                         try {                
  156.                             $post->setData($form$request$user,true)->save();
  157.                             $this->addFlash('success''Post salvato con successo');
  158.                             return $this->redirectToRoute(
  159.                                 "marketplace-my-listing");
  160.                         } catch (\Exception $e) {
  161.                             $form->addError(new FormError($e->getMessage()));
  162.                         }
  163.                     }
  164.                     if ($form->isSubmitted() && !$form->isValid()) {
  165.                         foreach ($form->getErrors() as $error) {
  166.                             $errors[] = $error->getMessage();
  167.                         }
  168.                     }
  169.                 }else{
  170.                     return $this->redirectToRoute('marketplace-my-listing');
  171.                 }
  172.             }else{
  173.                 return $this->redirectToRoute('marketplace-my-listing');
  174.             }
  175.         }else{
  176.             return $this->redirectToRoute('marketplace-my-listing');
  177.         }
  178.         //if($post )
  179.         return $this->render('marketplace/edit.html.twig', ['form' => $form->createView(),'post'=>$post,'images'=>$data['images'],'attachment'=>$data['attachment'],'_target_path'=>$request->headers->get('referer'),'errors' => $errors]);                   
  180.     }
  181.     /**
  182.      * @Route("/marketplace/remove/image/{post}/{image_id}", name="remove-image")  
  183.      */
  184.     public function removeImageAction(Request $requestUserInterface $user)
  185.     {
  186.         $postId $request->get('post',null);  
  187.         $imageId $request->get('image_id',null); 
  188.         $post \Pimcore\Model\DataObject::getById($postId);
  189.         if($post instanceof \App\Model\Marketplace){
  190.             $postUser $post->getUser();
  191.             if($postUser)
  192.             {
  193.                 if($postUser->getId() == $user->getId()){   
  194.                     
  195.                    $image \Pimcore\Model\Asset::getById($imageId);
  196.                    if($image){
  197.                         $image->delete();
  198.                    }
  199.                    return $this->redirectToRoute('marketplace-edit',['id'=>$postId]);
  200.                 }else{
  201.                     return $this->redirectToRoute('marketplace-my-listing');
  202.                 }
  203.             }else{
  204.                 return $this->redirectToRoute('marketplace-my-listing');
  205.             }
  206.         }else{
  207.             return $this->redirectToRoute('marketplace-my-listing');
  208.         }
  209.         //if($post )
  210.         return $this->render('marketplace/edit.html.twig', ['form' => $form->createView(),'images'=>$data['images'],'_target_path'=>$request->headers->get('referer'),'errors' => $errors]);                   
  211.     }
  212.     
  213. }