app/Plugin/Holiday/EventSubscriber/HolidayEventSubscriber.php line 57

Open in your IDE?
  1. <?php
  2. namespace Plugin\Holiday\EventSubscriber;
  3. use Plugin\Holiday\Repository\HolidayRepository;
  4. use Plugin\Holiday\Repository\HolidayConfigRepository;
  5. use Plugin\Holiday\Repository\HolidayWeekRepository;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\HttpKernel\KernelEvents;
  9. use Twig\Environment;
  10. class HolidayEventSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var Environment
  14.      */
  15.     private $twig;
  16.     /**
  17.      * @var HolidayRepository
  18.      */
  19.     private $holidayRepository;
  20.     /**
  21.      * @var HolidayConfigRepository
  22.      */
  23.     private $holidayConfigRepository;
  24.     /**
  25.      * @var HolidayWeekRepository
  26.      */
  27.     private $holidayWeekRepository;
  28.     public function __construct(
  29.         Environment $twig,
  30.         HolidayRepository $holidayRepository,
  31.         HolidayConfigRepository $holidayConfigRepository,
  32.         HolidayWeekRepository $holidayWeekRepository
  33.     ) {
  34.         $this->twig $twig;
  35.         $this->holidayRepository $holidayRepository;
  36.         $this->holidayConfigRepository $holidayConfigRepository;
  37.         $this->holidayWeekRepository $holidayWeekRepository;
  38.     }
  39.     /**
  40.      * {@inheritdoc}
  41.      */
  42.     public static function getSubscribedEvents()
  43.     {
  44.         return [
  45.             KernelEvents::REQUEST => ['onRenderHoliday'0],
  46.         ];
  47.     }
  48.     public function onRenderHoliday(RequestEvent $event)
  49.     {
  50.         if (!$event->isMainRequest()) {
  51.             return;
  52.         }
  53.         // HolidayConfig の取得
  54.         $HolidayConfigData $this->holidayConfigRepository->findConfig(1);
  55.         $configData = !empty($HolidayConfigData) ? (int) $HolidayConfigData[0]['config_data'] : 3;
  56.         // HolidayWeek の取得
  57.         $HolidayWeekData $this->holidayWeekRepository->findWeek(1);
  58.         $weekData = [];
  59.         if (!empty($HolidayWeekData) && !empty($HolidayWeekData[0]['week'])) {
  60.             $weekData unserialize($HolidayWeekData[0]['week']);
  61.             if (!is_array($weekData)) {
  62.                 $weekData = [];
  63.             }
  64.         }
  65.         // 月毎の定休日情報の取得
  66.         $Holidays = [];
  67.         $GetHolidayWeekCount = [];
  68.         
  69.         for ($i 0$i $configData$i++) {
  70.             $GetHolidays $this->holidayRepository->findMonthDay($i);
  71.             $GetHolidayWeekCount[date('n'mktime(000date("m") + $i1date("Y")))] = $this->holidayRepository->getMonthWeekCount($i);
  72.             
  73.             foreach ($GetHolidays as $holiday) {
  74.                 $Holidays[$holiday['month']][$holiday['day']] = $holiday['day'];
  75.             }
  76.         }
  77.         // 曜日毎の定休日設定情報の取得
  78.         $HolidayWeek = [];
  79.         for ($i 0$i <= 6$i++) {
  80.             $HolidayWeek[$i] = in_array($i$weekData);
  81.         }
  82.         // Twigグローバル変数として設定
  83.         $this->twig->addGlobal('Holidays'$Holidays);
  84.         $this->twig->addGlobal('HolidayWeekCount'$GetHolidayWeekCount);
  85.         $this->twig->addGlobal('HolidayWeek'$HolidayWeek);
  86.         $this->twig->addGlobal('HolidayConfig', [['config_data' => $configData]]);
  87.     }
  88. }