src/Manager/BlogManager.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Manager;
  3. use App\Entity\Category;
  4. use App\Util\StringUtil;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  7. class BlogManager
  8. {
  9.     protected ParameterBagInterface $parameterBag;
  10.     protected EntityManagerInterface $entityManager;
  11.     public function __construct(ParameterBagInterface $parameterBagEntityManagerInterface $entityManager)
  12.     {
  13.         $this->parameterBag $parameterBag;
  14.         $this->entityManager $entityManager;
  15.     }
  16.     public function getCategories(): array
  17.     {
  18.         $categoryRepository $this->entityManager->getRepository(Category::class);
  19.         return $this->parameterBag->get('site_blog_show_empty_categories')
  20.             ? $categoryRepository->findAllCategoriesWithBlogPosts()
  21.             : $categoryRepository->findCategoriesWithBlogPosts();
  22.     }
  23.     public function getSelectedFilters(?string $filters): array
  24.     {
  25.         $selectedFilters explode('/'$filters);
  26.         // If route is blogs/ the trailing slash adds an empty string as a filter to the array, array_filter to extract.
  27.         $selectedFilters array_filter($selectedFilters);
  28.         return array_map(static fn ($filter) => StringUtil::xssCleanup($filter), $selectedFilters);
  29.     }
  30.     public function getSelectedCategoryTitle(array $categories, array $selectedFilters): ?string
  31.     {
  32.         $selectedCategoryTitle null;
  33.         /** @var Category $category */
  34.         foreach ($categories as $category) {
  35.             if (!$selectedCategoryTitle && \in_array($category->getSlug(), $selectedFilterstrue)) {
  36.                 $selectedCategoryTitle $category->getCategory();
  37.             }
  38.         }
  39.         return $selectedCategoryTitle;
  40.     }
  41. }