diff options
| -rw-r--r-- | app/Http/RequestHandlers/CalendarEvents.php | 64 | ||||
| -rw-r--r-- | phpstan-baseline.php | 6 | ||||
| -rw-r--r-- | resources/views/calendar-list.phtml | 11 |
3 files changed, 37 insertions, 44 deletions
diff --git a/app/Http/RequestHandlers/CalendarEvents.php b/app/Http/RequestHandlers/CalendarEvents.php index b5938df936..303216c355 100644 --- a/app/Http/RequestHandlers/CalendarEvents.php +++ b/app/Http/RequestHandlers/CalendarEvents.php @@ -54,22 +54,13 @@ use function view; */ class CalendarEvents implements RequestHandlerInterface { - private CalendarService $calendar_service; - - /** - * @param CalendarService $calendar_service - */ - public function __construct(CalendarService $calendar_service) - { - $this->calendar_service = $calendar_service; + public function __construct( + private readonly CalendarService $calendar_service, + ) { } /** * Show anniversaries that occurred on a given day/month/year. - * - * @param ServerRequestInterface $request - * - * @return ResponseInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { @@ -109,9 +100,21 @@ class CalendarEvents implements RequestHandlerInterface $individual_anniversaries = $anniversaries->filter(static fn (Fact $f): bool => $f->record() instanceof Individual); + $family_count = $family_anniversaries + ->map(static fn (Fact $x): string => $x->record()->xref()) + ->unique() + ->count(); + + $individual_count = $individual_anniversaries + ->map(static fn (Fact $x): string => $x->record()->xref()) + ->unique() + ->count(); + return response(view('calendar-list', [ 'family_anniversaries' => $family_anniversaries, 'individual_anniversaries' => $individual_anniversaries, + 'family_count' => $family_count, + 'individual_count' => $individual_count, ])); } @@ -216,30 +219,16 @@ class CalendarEvents implements RequestHandlerInterface } // Show a converted date foreach (explode('_and_', $CALENDAR_FORMAT) as $convcal) { - switch ($convcal) { - case 'french': - $alt_date = new FrenchDate($cal_date->minimumJulianDay() + $d - 1); - break; - case 'gregorian': - $alt_date = new GregorianDate($cal_date->minimumJulianDay() + $d - 1); - break; - case 'jewish': - $alt_date = new JewishDate($cal_date->minimumJulianDay() + $d - 1); - break; - case 'julian': - $alt_date = new JulianDate($cal_date->minimumJulianDay() + $d - 1); - break; - case 'hijri': - $alt_date = new HijriDate($cal_date->minimumJulianDay() + $d - 1); - break; - case 'jalali': - $alt_date = new JalaliDate($cal_date->minimumJulianDay() + $d - 1); - break; - case 'none': - default: - $alt_date = $cal_date; - break; - } + $alt_date = match ($convcal) { + 'french' => new FrenchDate($cal_date->minimumJulianDay() + $d - 1), + 'gregorian' => new GregorianDate($cal_date->minimumJulianDay() + $d - 1), + 'jewish' => new JewishDate($cal_date->minimumJulianDay() + $d - 1), + 'julian' => new JulianDate($cal_date->minimumJulianDay() + $d - 1), + 'hijri' => new HijriDate($cal_date->minimumJulianDay() + $d - 1), + 'jalali' => new JalaliDate($cal_date->minimumJulianDay() + $d - 1), + default => $cal_date, + }; + if (get_class($alt_date) !== get_class($cal_date) && $alt_date->inValidRange()) { echo '<span class="rtl_cal_day">' . $alt_date->format('%j %M') . '</span>'; // Just show the first conversion @@ -266,9 +255,6 @@ class CalendarEvents implements RequestHandlerInterface * Format a list of facts for display * * @param array<string> $list - * @param Tree $tree - * - * @return string */ private function calendarListText(array $list, Tree $tree): string { diff --git a/phpstan-baseline.php b/phpstan-baseline.php index 6bfaf2e245..9de768ca39 100644 --- a/phpstan-baseline.php +++ b/phpstan-baseline.php @@ -4006,6 +4006,12 @@ $ignoreErrors[] = [ 'path' => __DIR__ . '/app/Report/ReportParserGenerate.php', ]; $ignoreErrors[] = [ + // identifier: postInc.type + 'message' => '#^Cannot use \\+\\+ on array\\<string\\>\\|float\\|int\\.$#', + 'count' => 4, + 'path' => __DIR__ . '/app/Report/ReportParserGenerate.php', +]; +$ignoreErrors[] = [ // identifier: offsetAccess.nonArray 'message' => '#^Cannot use array destructuring on array\\<int, array\\<string\\>\\|int\\>\\|null\\.$#', 'count' => 4, diff --git a/resources/views/calendar-list.phtml b/resources/views/calendar-list.phtml index 0146b0a742..b08fcb1271 100644 --- a/resources/views/calendar-list.phtml +++ b/resources/views/calendar-list.phtml @@ -4,11 +4,12 @@ declare(strict_types=1); use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\I18N; -use Illuminate\Support\Collection; /** - * @var Collection<int,Fact> $family_anniversaries - * @var Collection<int,Fact> $individual_anniversaries + * @var iterable<int,Fact> $family_anniversaries + * @var iterable<int,Fact> $individual_anniversaries + * @var int $family_count + * @var int $individual_count */ ?> @@ -17,12 +18,12 @@ use Illuminate\Support\Collection; <tr> <td class="wt-page-options-label text-center w-50"> <?= view('icons/individual') ?> - <?= I18N::plural('%s individual', '%s individuals', $individual_anniversaries->count(), I18N::number($individual_anniversaries->count())) ?> + <?= I18N::plural('%s individual', '%s individuals', $individual_count, I18N::number($individual_count)) ?> </td> <td class="wt-page-options-label text-center w-50"> <?= view('icons/family') ?> - <?= I18N::plural('%s family', '%s families', $family_anniversaries->count(), I18N::number($family_anniversaries->count())) ?> + <?= I18N::plural('%s family', '%s families', $family_count, I18N::number($family_count)) ?> </td> </tr> |
