<?php
namespace App\Controller;
use App\Entity\GalleryImage;
use App\Helper\ImageHelper;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Gallery;
class GalleryController extends AbstractController
{
/**
* @Route("/bilder", name="gallery")
* @param EntityManagerInterface $em
* @return Response
*/
public function home(EntityManagerInterface $em) {
return $this->render("gallery/gallery.html.twig", [
"galleries" => $em->getRepository( Gallery::class)->findBy(['published' => 1]),
"backButton" => $this->generateUrl('home'),
]);
}
/**
* @Route("/bilder/update-images", name="gallery_update_images")
* @param EntityManagerInterface $em
* @param ParameterBagInterface $parameterBag
* @return JsonResponse
*/
public function updateImages(EntityManagerInterface $em, ParameterBagInterface $parameterBag) {
$galleries = $em->getRepository(Gallery::class)->findAll();
$dir = $parameterBag->get('kernel.project_dir')."/public/images/gallery/";
foreach($galleries as $gallery) {
echo "Process: ".$gallery->getName()."<br />";
$images = scandir($dir.$gallery->getSlug()."/big/");
# Delete Images from Gallery
foreach($gallery->getGalleryImages() as $image)
$em->remove($image);
$em->flush();
# add Images to Gallery
foreach($images as $image) {
if($image == "." || $image == "..") continue;
echo ".";
$dbImage = new GalleryImage();
$dbImage->setFile($image)
->setGallery($gallery);
$em->persist($dbImage);
}
$em->flush();
echo "<br /><br />";
}
return new JsonResponse(["status" => "success"]);
}
/**
* @Route("/bilder/{slug}", name="gallery_gallery")
* @param $slug
* @param EntityManagerInterface $em
* @return Response
*/
public function gallery($slug, EntityManagerInterface $em, ParameterBagInterface $parameterBag) {
$gallery = $em->getRepository(Gallery::class)->findOneBy(["slug" => $slug]);
$dir = $parameterBag->get('kernel.project_dir')."/public/images/gallery/".$gallery->getSlug()."/thumbs/";
return $this->render("gallery/detail.html.twig", [
"gallery" => $gallery,
"images" => ImageHelper::getGallery($dir),
"page" => [
"title" => $gallery->getName(),
"header" => "small",
"buttons" => false,
],
"headerImage" => "galleryHeader",
"backButton" => $this->generateUrl('gallery')."#reisen",
]);
}
}