getPath(), -1, PREG_SPLIT_NO_EMPTY); $count = count($parts); $sections = ['blog', 'liens-interessants']; return $count > 0 && in_array($parts[0], $sections) && $count < 5; } protected function handleFilters($subBundles) { $url = $this->bundle->getPath(); $parts = preg_split('#/#', $url, -1, PREG_SPLIT_NO_EMPTY); // $parts[0] is section $selectedYear = $parts[1] ?? null; $selectedMonth = $parts[2] ?? null; $selectedDay = $parts[3] ?? null; $filters = [ 'Année' => [ 'values' => [], 'selected' => $selectedYear ?? 'Toutes', 'visible' => true, ], 'Mois' => [ 'values' => [], 'selected' => $selectedMonth ?? 'Tous', 'visible' => $selectedYear !== null, ], 'Jour' => [ 'values' => [], 'selected' => $selectedDay ?? 'Tous', 'visible' => $selectedMonth !== null, ], ]; $prefix = sprintf('%s/', $parts[0]); if ($selectedYear) { $prefix .= $selectedYear . '/'; if ($selectedMonth) { $prefix .= $selectedMonth . '/'; if ($selectedDay) { $prefix .= $selectedDay . '/'; } } } foreach ($subBundles as $subBundle) { $fileParts = preg_split('#/#', $subBundle, -1, PREG_SPLIT_NO_EMPTY); // $parts[0] is section $year = $fileParts[1] ?? null; $month = $fileParts[2] ?? null; $day = $fileParts[3] ?? null; if ($year) { $filters['Année']['values'][$year] = [ 'title' => $year, 'path' => sprintf('/%s/%s/', $parts[0], $year), ]; if ($month && $selectedYear !== null) { $date = Carbon::parse(sprintf('%s-%s-%s', $year, $month, '01')); $monthName = $date->isoFormat('MMMM'); $filters['Mois']['values'][$month] = [ 'title' => $monthName, 'path' => sprintf('/%s/%s/%s/', $parts[0], $year, $month), ]; if ($day && $selectedMonth !== null) { $filters['Jour']['values'][$day] = [ 'title' => $day, 'path' => sprintf('/%s/%s/%s/%s/', $parts[0], $year, $month, $day), ]; } } } } ksort($filters['Année']['values']); ksort($filters['Mois']['values']); ksort($filters['Jour']['values']); $filters['Année']['values'] = [ 'Toutes' => [ 'title' => 'Toutes', 'path' => sprintf('/%s/', $parts[0]), ], ] + $filters['Année']['values']; $filters['Mois']['values'] = [ 'Tous' => [ 'title' => 'Tous', 'path' => sprintf('/%s/%s/', $parts[0], $selectedYear), ], ] + $filters['Mois']['values']; $filters['Jour']['values'] = [ 'Tous' => [ 'title' => 'Tous', 'path' => sprintf('/%s/%s/%s/', $parts[0], $selectedYear, $selectedMonth), ], ] + $filters['Jour']['values']; data_set($this->viewData['pagination'], 'filters', $filters); } }