Files
FreshRSS/app/controllers/entryController.php
Alexandre Alapetite ee2c1a8c78 Classement par date d'ajout e.id (expérimentation)
Expérimentation : classement par date d'ajout dans la base plutôt que
selon la date déclarée par le flux (qui est parfois fausse dans le
passé, dans le futur, ou absente).
Quelques conséquences :
* Les flux avec des dates erronées ne sont plus un problème
* Lorsqu'on fait "marquer tout comme lu", les articles arrivés pendant
la lecture ne sont plus indûment marqués comme lus
* Les articles ont tendance à être plus regroupés par flux lorsqu'on les
affiche par catégorie
* Si un utilisateur n'utilise pas de cron et n'utilise pas FreshRSS
pendant plusieurs jours, lors du rafraîchissement, les nouveaux articles
seront dans "Aujourd'hui" (à interpréter donc comme les articles reçus
aujourd'hui, et non comme déclarés comme étant publiés aujourd'hui)
* La pagination est plus efficace

Termine l'implémentation de
https://github.com/marienfressinaud/FreshRSS/issues/202
2013-11-28 01:42:39 +01:00

101 lines
2.3 KiB
PHP
Executable File

<?php
class entryController extends ActionController {
public function firstAction () {
if (login_is_conf ($this->view->conf) && !is_logged ()) {
Error::error (
403,
array ('error' => array (Translate::t ('access_denied')))
);
}
$this->params = array ();
$this->redirect = false;
$ajax = Request::param ('ajax');
if ($ajax) {
$this->view->_useLayout (false);
}
}
public function lastAction () {
$ajax = Request::param ('ajax');
if (!$ajax && $this->redirect) {
Request::forward (array (
'c' => 'index',
'a' => 'index',
'params' => $this->params
), true);
} else {
Request::_param ('ajax');
}
}
public function readAction () {
$this->redirect = true;
$id = Request::param ('id');
$is_read = Request::param ('is_read');
$get = Request::param ('get');
$nextGet = Request::param ('nextGet', $get);
$idMax = Request::param ('idMax', 0);
$is_read = !!$is_read;
$entryDAO = new EntryDAO ();
if ($id == false) {
if (!$get) {
$entryDAO->markReadEntries ($idMax);
} else {
$typeGet = $get[0];
$get = substr ($get, 2);
if ($typeGet == 'c') {
$entryDAO->markReadCat ($get, $idMax);
$this->params = array ('get' => $nextGet);
} elseif ($typeGet == 'f') {
$entryDAO->markReadFeed ($get, $idMax);
$this->params = array ('get' => $nextGet);
}
}
$notif = array (
'type' => 'good',
'content' => Translate::t ('feeds_marked_read')
);
Session::_param ('notification', $notif);
} else {
$entryDAO->markRead ($id, $is_read);
}
}
public function bookmarkAction () {
$this->redirect = true;
$id = Request::param ('id');
if ($id) {
$entryDAO = new EntryDAO ();
$entryDAO->markFavorite ($id, Request::param ('is_favorite'));
}
}
public function optimizeAction() {
// 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 = new EntryDAO();
$entryDAO->optimizeTable();
touch(DATA_PATH . '/touch.txt');
$notif = array (
'type' => 'good',
'content' => Translate::t ('optimization_complete')
);
Session::_param ('notification', $notif);
Request::forward(array(
'c' => 'configure',
'a' => 'display'
), true);
}
}