src/Controller/ArticleController.php line 69

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Article;
  4. use App\Entity\Variable;
  5. use DateTime;
  6. use Gumlet\ImageResize;
  7. use Gumlet\ImageResizeException;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class ArticleController extends AppController
  13. {
  14.     /**
  15.      * @Route("/articles", methods={"GET"}, name="public_article_list")
  16.      * @param Request $request
  17.      * @return Response
  18.      */
  19.     public function getPublicList(Request $request)
  20.     {
  21.         $theme $request
  22.             ->query
  23.             ->get('theme');
  24.         $page $request
  25.             ->query
  26.             ->get('page');
  27.         $offset $page ? ($page-1) * 10 0;
  28.         $result $this
  29.             ->em
  30.             ->getRepository(Article::class)
  31.             ->findByWithCount($theme$offset);
  32.         return $this->render('makeup/article_list', [
  33.             'articles' => $result['list'],
  34.             'count' => $result['count'],
  35.             'theme' => $theme,
  36.             'content' => $this->getMeta('articlesPage'),
  37.         ]);
  38.     }
  39.     /**
  40.      * @Route("/articles/{urlOrId}", methods={"GET"}, name="public_article_item")
  41.      * @param $urlOrId
  42.      *
  43.      * @return Response
  44.      */
  45.     public function getPublicItem($urlOrId)
  46.     {
  47.         $article $this
  48.             ->em
  49.             ->getRepository(Article::class)
  50.             ->findOneBy(['url' => $urlOrId]);
  51.         if(!$article)
  52.             $article =$this
  53.                 ->em
  54.                 ->getRepository(Article::class)
  55.                 ->find($urlOrId);
  56.         $articles $this
  57.             ->em
  58.             ->getRepository(Article::class)
  59.             ->findBy([], ['orderValue' => 'ASC'], 3);
  60.         $content = [
  61.             'title' => $article->getHeadTitle(),
  62.             'metaDescription' => $article->getMetaDescription(),
  63.             'metaKeywords' => $article->getMetaKeywords()
  64.         ];
  65.         return $this->render('makeup/article_item', [
  66.             'article' => $article,
  67.             'articles' => $articles,
  68.             'content' => $content
  69.         ]);
  70.     }
  71.     /**
  72.      * @Route("/admin/articles", methods={"GET"}, name="get_article_list")
  73.      * @param Request $request
  74.      * @return Response
  75.      */
  76.     public function getList(Request $request)
  77.     {
  78.         $page $request->query->get('page');
  79.         $offset $page ? ($page-1) * 10 0;
  80.         $result $this->em
  81.             ->getRepository(Article::class)
  82.             ->findByWithCount(null$offsetfalse);
  83.         $content $this
  84.             ->getMeta(
  85.                 'articlesPage'
  86.             );
  87.         return $this->render('admin/article_list', [
  88.             'articles' => $result['list'],
  89.             'count' => $result['count'],
  90.             'content' => $content
  91.         ]);
  92.     }
  93.     /**
  94.      * @Route("/admin/articles", methods={"POST"}, name="save_article_list")
  95.      * @param Request $request
  96.      * @return RedirectResponse
  97.      */
  98.     public function saveListOrder(Request $request)
  99.     {
  100.         $orderValueArray $request
  101.             ->request
  102.             ->get('orderValue');
  103.         $this->saveOrder($orderValueArrayArticle::class);
  104.         return $this
  105.             ->redirectToRoute('get_article_list');
  106.     }
  107.     /**
  108.      * @Route("/admin/articles/{id}", methods={"GET"}, name="get_article_item")
  109.      * @param $id
  110.      * @return Response
  111.      */
  112.     public function getItem($id)
  113.     {
  114.         $article $this->getEntity($idArticle::class);
  115.         return $this->render('admin/article_item', [
  116.             'article' => $article
  117.         ]);
  118.     }
  119.     /**
  120.      * @Route("/admin/articles/{id}", methods={"POST"}, name="save_article_item")
  121.      * @param $id
  122.      * @param Request $request
  123.      * @return Response
  124.      */
  125.     public function saveItem($idRequest $request)
  126.     {
  127.         $article $this->getEntity($idArticle::class);
  128.         $this->save($article$request);
  129.         return $this->redirectToRoute('get_article_item', [
  130.             'id' => $article->getId()
  131.         ]);
  132.     }
  133.     /**
  134.      * @Route("/admin/articles/{id}/remove", methods={"GET"}, name="get_removing_article_item")
  135.      * @param $id
  136.      * @param Request $request
  137.      * @return Response
  138.      */
  139.     public function getRemovingItem(Article $article)
  140.     {
  141.         return $this->render('admin/removing', [
  142.             'title' => 'статью ' $article->getTitle()
  143.         ]);
  144.     }
  145.     /**
  146.      * @Route("/admin/articles/{id}/remove", methods={"POST"}, name="remove_article_item")
  147.      * @param $id
  148.      * @param Request $request
  149.      * @return Response
  150.      */
  151.     public function removeItem(Article $article)
  152.     {
  153.         $this
  154.             ->em
  155.             ->remove($article);
  156.         $this
  157.             ->em
  158.             ->flush();
  159.         return $this->redirectToRoute('get_article_list');
  160.     }
  161.     private function save(Article $articleRequest $request)
  162.     {
  163.         $properties $request->request->all();
  164.         if (
  165.             $request
  166.                 ->files
  167.                 ->has('photo')
  168.         ) {
  169.             $file $request->files->get('photo');
  170.             if($file) {
  171.                 $photoPath $this->uploadFile($file'partners');
  172.                 try {
  173.                     $image = new ImageResize('img/' $photoPath);
  174.                     $image->resizeToLongSide(437);
  175.                     $image->crop(437234);
  176.                     $image->save('img/'.$photoPath);
  177.                 } catch (ImageResizeException $e) {
  178.                 }
  179.                 $properties['photo'] = $photoPath;
  180.             }
  181.         }
  182.         if (isset($properties['publishedAt'])) {
  183.             try {
  184.                 $properties['publishedAt'] = new DateTime($properties['publishedAt']);
  185.             } catch (\Exception $e) {
  186.                 $properties['publishedAt'] = new DateTime();
  187.             }
  188.         }
  189.         if (!$article->getId()) {
  190.             $this
  191.                 ->em
  192.                 ->persist($article);
  193.         }
  194.         $article
  195.             ->setProperties($properties);
  196.         $this->em
  197.             ->flush();
  198.     }
  199. }