Example #1
0
 /**
  * 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();
 }
Example #2
0
 /**
  * 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', '');
 }