From 09aeeeb3254b2b7ad6d588bc21223d567390ae58 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 10 Aug 2022 09:37:11 +0200 Subject: Refactor updateContext into its own FreshRSS_Context class (#4496) So that it is both cleaner and easier to call from other controllers and extensions --- app/Models/Context.php | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'app/Models') diff --git a/app/Models/Context.php b/app/Models/Context.php index db8dd1f09..5b7c89089 100644 --- a/app/Models/Context.php +++ b/app/Models/Context.php @@ -143,6 +143,60 @@ class FreshRSS_Context { return FreshRSS_Context::$user_conf; } + /** + * This action updates the Context object by using request parameters. + * + * Parameters are: + * - state (default: conf->default_view) + * - search (default: empty string) + * - order (default: conf->sort_order) + * - nb (default: conf->posts_per_page) + * - next (default: empty string) + * - hours (default: 0) + */ + public static function updateUsingRequest() { + if (empty(self::$categories)) { + $catDAO = FreshRSS_Factory::createCategoryDao(); + self::$categories = $catDAO->listSortedCategories(); + } + + // Update number of read / unread variables. + $entryDAO = FreshRSS_Factory::createEntryDao(); + self::$total_starred = $entryDAO->countUnreadReadFavorites(); + self::$total_unread = FreshRSS_CategoryDAO::CountUnreads( + self::$categories, 1 + ); + + self::_get(Minz_Request::param('get', 'a')); + + self::$state = Minz_Request::param( + 'state', self::$user_conf->default_state + ); + $state_forced_by_user = Minz_Request::param('state', false) !== false; + if (!$state_forced_by_user && !self::isStateEnabled(FreshRSS_Entry::STATE_READ)) { + if (self::$user_conf->default_view === 'adaptive' && self::$get_unread <= 0) { + self::$state |= FreshRSS_Entry::STATE_READ; + } + if (self::$user_conf->show_fav_unread && + (self::isCurrentGet('s') || self::isCurrentGet('T') || self::isTag())) { + self::$state |= FreshRSS_Entry::STATE_READ; + } + } + + self::$search = new FreshRSS_BooleanSearch(Minz_Request::param('search', '')); + self::$order = Minz_Request::param( + 'order', self::$user_conf->sort_order + ); + self::$number = intval(Minz_Request::param('nb', self::$user_conf->posts_per_page)); + if (self::$number > self::$user_conf->max_posts_per_rss) { + self::$number = max( + self::$user_conf->max_posts_per_rss, + self::$user_conf->posts_per_page); + } + self::$first_id = Minz_Request::param('next', ''); + self::$sinceHours = intval(Minz_Request::param('hours', 0)); + } + /** * Returns if the current state includes $state parameter. * @param int $state -- cgit v1.2.3