aboutsummaryrefslogtreecommitdiff
path: root/app/Models/ViewStats.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2023-05-11 12:53:32 +0200
committerGravatar GitHub <noreply@github.com> 2023-05-11 12:53:32 +0200
commitfe7d9bbcd68660a59b813346c236b61b25a51c80 (patch)
tree95be837c2838659a3ea72974c9f9b18b1ee634ca /app/Models/ViewStats.php
parent2343f0ded14ac6970575c23e4de34e536241b623 (diff)
Typed view model classes (#5380)
* Typed view model classes * Add ability to provide a typed view model class to a controller * Use `::class` instead of string for referring to classes * Examplified with `stats` and `javascript` controllers / views (more to do) * Also useful for extensions (my usecase today), which did not have the ability to define own view model attributes before. * Typo
Diffstat (limited to 'app/Models/ViewStats.php')
-rw-r--r--app/Models/ViewStats.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/app/Models/ViewStats.php b/app/Models/ViewStats.php
new file mode 100644
index 000000000..03e0bc00d
--- /dev/null
+++ b/app/Models/ViewStats.php
@@ -0,0 +1,55 @@
+<?php
+
+final class FreshRSS_ViewStats extends FreshRSS_View {
+
+ /** @var FreshRSS_Category|null */
+ public $default_category;
+ /** @var array<FreshRSS_Category> */
+ public $categories;
+ /** @var FreshRSS_Feed|null */
+ public $feed;
+ /** @var array<FreshRSS_Feed> */
+ public $feeds;
+ /** @var bool */
+ public $displaySlider;
+
+ /** @var float */
+ public $average;
+ /** @var float */
+ public $averageDayOfWeek;
+ /** @var float */
+ public $averageHour;
+ /** @var float */
+ public $averageMonth;
+ /** @var array<string> */
+ public $days;
+ /** @var array<string,array<int,int|string>> */
+ public $entryByCategory;
+ /** @var array<int,int> */
+ public $entryCount;
+ /** @var array<string,array<int,int|string>> */
+ public $feedByCategory;
+ /** @var array<int, string> */
+ public $hours24Labels;
+ /** @var array<string,array<int,array<string,int|string>>> */
+ public $idleFeeds;
+ /** @var array<int,string> */
+ public $last30DaysLabel;
+ /** @var array<int,string> */
+ public $last30DaysLabels;
+ /** @var array<string,string> */
+ public $months;
+ /** @var array{'total':int,'count_unreads':int,'count_reads':int,'count_favorites':int}|false */
+ public $repartition;
+ /** @var array{'main_stream':array{'total':int,'count_unreads':int,'count_reads':int,'count_favorites':int}|false,'all_feeds':array{'total':int,'count_unreads':int,'count_reads':int,'count_favorites':int}|false} */
+ public $repartitions;
+ /** @var array<int,int> */
+ public $repartitionDayOfWeek;
+ /** @var array<string,int>|array<int,int> */
+ public $repartitionHour;
+ /** @var array<int,int> */
+ public $repartitionMonth;
+ /** @var array<array{'id':int,'name':string,'category':string,'count':int}> */
+ public $topFeed;
+
+}