view->loginOk) { Minz_Error::error( 403, array('error' => array(_t('access_denied'))) ); } $this->params = array(); $output = Minz_Request::param('output', ''); if (($output != '') && ($this->view->conf->view_mode !== $output)) { $this->params['output'] = $output; } $this->redirect = false; $ajax = Minz_Request::param('ajax'); if ($ajax) { $this->view->_useLayout(false); } } public function lastAction() { $ajax = Minz_Request::param('ajax'); if (!$ajax && $this->redirect) { Minz_Request::forward(array( 'c' => 'index', 'a' => 'index', 'params' => $this->params ), true); } else { Minz_Request::_param('ajax'); } } public function readAction() { $this->redirect = true; $id = Minz_Request::param('id'); $get = Minz_Request::param('get'); $nextGet = Minz_Request::param('nextGet', $get); $idMax = Minz_Request::param('idMax', 0); $entryDAO = FreshRSS_Factory::createEntryDao(); if ($id == false) { if (!Minz_Request::isPost()) { return; } if (!$get) { $entryDAO->markReadEntries($idMax); } else { $typeGet = $get[0]; $get = substr($get, 2); switch($typeGet) { case 'c': $entryDAO->markReadCat($get, $idMax); break; case 'f': $entryDAO->markReadFeed($get, $idMax); break; case 's': $entryDAO->markReadEntries($idMax, true); break; case 'a': $entryDAO->markReadEntries($idMax); break; } if ($nextGet !== 'a') { $this->params['get'] = $nextGet; } } $notif = array( 'type' => 'good', 'content' => _t('feeds_marked_read') ); Minz_Session::_param('notification', $notif); } else { $is_read = (bool)(Minz_Request::param('is_read', true)); $entryDAO->markRead($id, $is_read); } } public function bookmarkAction() { $this->redirect = true; $id = Minz_Request::param('id'); if ($id) { $entryDAO = FreshRSS_Factory::createEntryDao(); $entryDAO->markFavorite($id, (bool)(Minz_Request::param('is_favorite', true))); } } public function optimizeAction() { if (Minz_Request::isPost()) { @set_time_limit(300); // La table des entrées a tendance à grossir énormément // Cette action permet d'optimiser cette table permettant de grapiller un peu de place // Cette fonctionnalité n'est à appeler qu'occasionnellement $entryDAO = FreshRSS_Factory::createEntryDao(); $entryDAO->optimizeTable(); $feedDAO = FreshRSS_Factory::createFeedDao(); $feedDAO->updateCachedValues(); invalidateHttpCache(); $notif = array( 'type' => 'good', 'content' => _t('optimization_complete') ); Minz_Session::_param('notification', $notif); } Minz_Request::forward(array( 'c' => 'configure', 'a' => 'archiving' ), true); } public function purgeAction() { @set_time_limit(300); $nb_month_old = max($this->view->conf->old_entries, 1); $date_min = time() - (3600 * 24 * 30 * $nb_month_old); $feedDAO = FreshRSS_Factory::createFeedDao(); $feeds = $feedDAO->listFeeds(); $nbTotal = 0; invalidateHttpCache(); foreach ($feeds as $feed) { $feedHistory = $feed->keepHistory(); if ($feedHistory == -2) { //default $feedHistory = $this->view->conf->keep_history_default; } if ($feedHistory >= 0) { $nb = $feedDAO->cleanOldEntries($feed->id(), $date_min, $feedHistory); if ($nb > 0) { $nbTotal += $nb; Minz_Log::debug($nb . ' old entries cleaned in feed [' . $feed->url() . ']'); //$feedDAO->updateLastUpdate($feed->id()); } } } $feedDAO->updateCachedValues(); invalidateHttpCache(); $notif = array( 'type' => 'good', 'content' => _t('purge_completed', $nbTotal) ); Minz_Session::_param('notification', $notif); Minz_Request::forward(array( 'c' => 'configure', 'a' => 'archiving' ), true); } }