src/Controller/ING/ContentController.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Controller\ING;
  3. use App\Controller\BaseController;
  4. use Empire\Content\Content;
  5. use Empire\Content\Image;
  6. use Empire\Content\Part;
  7. use Empire\Core\Core;
  8. use Empire\Core\User;
  9. use Exception;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * Class NewsGridController
  15.  * @package App\Controller
  16.  * @Route("/ing")
  17.  */
  18. class ContentController extends BaseController
  19. {
  20.     /**
  21.      * @Route("/{category}/{page}", methods={"GET"})
  22.      * @param $category
  23.      * @param $page
  24.      * @param Request $request
  25.      * @return Response
  26.      * @throws
  27.      */
  28.     function displayPage($category$pageRequest $request) {
  29.         $content Content::getByPage($category$page);
  30.         if(null === $content || $content == false) {
  31.             $response = new Response();
  32.             $response->setStatusCode(404);
  33.             return $this->render('404.twig', ['gejs' => ['ajax']], $response);
  34.         }
  35.         return $this->render('ing/main.twig', [
  36.             'title' => "Imperial News Grid",
  37.             'content' => $content,
  38.             'editable' => Core::user() instanceof User && $content->canEdit(Core::user()),
  39.             'content_id' => $content->getID(),
  40.             'gejs' => ['ajax'],
  41.         ]);
  42.     }
  43.     /**
  44.      * @Route("/{category}/{page}", methods={"POST"}, name="ing")
  45.      * @param $category
  46.      * @param $page
  47.      * @param Request $request
  48.      * @return Response
  49.      * @throws
  50.      */
  51.     function editPage($category$pageRequest $request) {
  52.         $content Content::getByPage($category$page);
  53.         $changes $request->request->all();
  54.         $title $content->title;
  55.         $touch false;
  56.         foreach($changes as $key => $change) {
  57.             switch($key) {
  58.                 case 'images': break; //We're dealing with images later.
  59.                 case 'title':
  60.                     $title strip_tags($change);
  61.                     $touch true;
  62.                     break;
  63.                 default:
  64.                     Part::save($key$change);
  65.                     $touch true;
  66.                     break;
  67.             }
  68.         }
  69.         if($touch) {
  70.             $content->savePage($title$content->contentCore::user());
  71.         }
  72.         //Dealing with the images.
  73.         $images json_decode($request->request->get("images"), true);
  74.         $ids = [];
  75.         foreach($images as $url => $size) {
  76.             try {
  77.                 $image Image::find($url);
  78.             } catch (Exception $e) {
  79.                 continue;
  80.             }
  81.             $ids[] = $image->getId();
  82.             $image->thumbnail($size);
  83.         }
  84.         Image::cleanup($ids$content);
  85.         return $this->json(["status" => true]);
  86.     }
  87. }