/** * Set the current $get attribute. * * Valid $get parameter are: * - a * - s * - f_<feed id> * - c_<category id> * * $name and $get_unread attributes are also updated as $next_get * Raise an exception if id or $get is invalid. */ public static function _get($get) { $type = $get[0]; $id = substr($get, 2); $nb_unread = 0; switch ($type) { case 'a': self::$current_get['all'] = true; self::$name = _t('index.feed.title'); self::$get_unread = self::$total_unread; break; case 's': self::$current_get['starred'] = true; self::$name = _t('index.feed.title_fav'); self::$get_unread = self::$total_starred['unread']; // Update state if favorite is not yet enabled. self::$state = self::$state | FreshRSS_Entry::STATE_FAVORITE; break; case 'f': // We try to find the corresponding feed. When allowing robots, always retrieve the full feed including description $catDAO = FreshRSS_Factory::createCategoryDAO(); $feed = FreshRSS_Context::$system_conf->allow_robots ? null : $catDAO->findFeed(self::$categories, $id); if ($feed === null) { $feedDAO = FreshRSS_Factory::createFeedDao(); $feed = $feedDAO->searchById($id); if (!$feed) { throw new FreshRSS_Context_Exception('Invalid feed: ' . $id); } } self::$current_get['feed'] = $id; self::$current_get['category'] = $feed->category(); self::$name = $feed->name(); self::$description = $feed->description(); self::$get_unread = $feed->nbNotRead(); break; case 'c': // We try to find the corresponding category. self::$current_get['category'] = $id; if (!isset(self::$categories[$id])) { $catDAO = FreshRSS_Factory::createCategoryDAO(); $cat = $catDAO->searchById($id); if (!$cat) { throw new FreshRSS_Context_Exception('Invalid category: ' . $id); } } else { $cat = self::$categories[$id]; } self::$name = $cat->name(); self::$get_unread = $cat->nbNotRead(); break; default: throw new FreshRSS_Context_Exception('Invalid getter: ' . $get); } self::_nextGet(); }
/** * 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) */ private function updateContext() { // Update number of read / unread variables. $entryDAO = FreshRSS_Factory::createEntryDao(); $catDAO = FreshRSS_Factory::createCategoryDao(); FreshRSS_Context::$total_starred = $entryDAO->countUnreadReadFavorites(); FreshRSS_Context::$total_unread = $catDAO->CountUnreads(FreshRSS_Context::$categories, 1); FreshRSS_Context::_get(Minz_Request::param('get', 'a')); FreshRSS_Context::$state = Minz_Request::param('state', FreshRSS_Context::$user_conf->default_state); $state_forced_by_user = Minz_Request::param('state', false) !== false; if (FreshRSS_Context::$user_conf->default_view === 'adaptive' && FreshRSS_Context::$get_unread <= 0 && !FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_READ) && !$state_forced_by_user) { FreshRSS_Context::$state |= FreshRSS_Entry::STATE_READ; } FreshRSS_Context::$search = new FreshRSS_Search(Minz_Request::param('search', '')); FreshRSS_Context::$order = Minz_Request::param('order', FreshRSS_Context::$user_conf->sort_order); FreshRSS_Context::$number = Minz_Request::param('nb', FreshRSS_Context::$user_conf->posts_per_page); FreshRSS_Context::$first_id = Minz_Request::param('next', ''); }