diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php
index f458cddf1..aabc3e4af 100755
--- a/app/Controllers/configureController.php
+++ b/app/Controllers/configureController.php
@@ -52,7 +52,6 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
}
}
- // notif
$notif = array (
'type' => 'good',
'content' => Minz_Translate::t ('categories_updated')
@@ -139,94 +138,40 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
}
public function displayAction () {
- if (Minz_Request::isPost ()) {
- $current_token = $this->view->conf->token ();
-
- $language = Minz_Request::param ('language', 'en');
- $nb = Minz_Request::param ('posts_per_page', 10);
- $mode = Minz_Request::param ('view_mode', 'normal');
- $view = Minz_Request::param ('default_view', 'a');
- $auto_load_more = Minz_Request::param ('auto_load_more', 'no');
- $display = Minz_Request::param ('display_posts', 'no');
- $onread_jump_next = Minz_Request::param ('onread_jump_next', 'no');
- $lazyload = Minz_Request::param ('lazyload', 'no');
- $sort = Minz_Request::param ('sort_order', 'DESC');
- $openArticle = Minz_Request::param ('mark_open_article', 'no');
- $openSite = Minz_Request::param ('mark_open_site', 'no');
- $scroll = Minz_Request::param ('mark_scroll', 'no');
- $reception = Minz_Request::param ('mark_upon_reception', 'no');
- $theme = Minz_Request::param ('theme', 'default');
- $topline_read = Minz_Request::param ('topline_read', 'no');
- $topline_favorite = Minz_Request::param ('topline_favorite', 'no');
- $topline_date = Minz_Request::param ('topline_date', 'no');
- $topline_link = Minz_Request::param ('topline_link', 'no');
- $bottomline_read = Minz_Request::param ('bottomline_read', 'no');
- $bottomline_favorite = Minz_Request::param ('bottomline_favorite', 'no');
- $bottomline_sharing = Minz_Request::param ('bottomline_sharing', 'no');
- $bottomline_tags = Minz_Request::param ('bottomline_tags', 'no');
- $bottomline_date = Minz_Request::param ('bottomline_date', 'no');
- $bottomline_link = Minz_Request::param ('bottomline_link', 'no');
-
- $this->view->conf->_language ($language);
- $this->view->conf->_postsPerPage ($nb);
- $this->view->conf->_viewMode ($mode);
- $this->view->conf->_defaultView ($view);
- $this->view->conf->_autoLoadMore ($auto_load_more);
- $this->view->conf->_displayPosts ($display);
- $this->view->conf->_onread_jump_next ($onread_jump_next);
- $this->view->conf->_lazyload ($lazyload);
- $this->view->conf->_sortOrder ($sort);
- $this->view->conf->_markWhen (array (
- 'article' => $openArticle,
- 'site' => $openSite,
- 'scroll' => $scroll,
- 'reception' => $reception,
+ if (Minz_Request::isPost()) {
+ $this->view->conf->_language(Minz_Request::param('language', 'en'));
+ $this->view->conf->_posts_per_page(Minz_Request::param('posts_per_page', 10));
+ $this->view->conf->_view_mode(Minz_Request::param('view_mode', 'normal'));
+ $this->view->conf->_default_view (Minz_Request::param('default_view', 'a'));
+ $this->view->conf->_auto_load_more(Minz_Request::param('auto_load_more', false));
+ $this->view->conf->_display_posts(Minz_Request::param('display_posts', false));
+ $this->view->conf->_onread_jump_next(Minz_Request::param('onread_jump_next', false));
+ $this->view->conf->_lazyload (Minz_Request::param('lazyload', false));
+ $this->view->conf->_sort_order(Minz_Request::param('sort_order', 'DESC'));
+ $this->view->conf->_mark_when (array(
+ 'article' => Minz_Request::param('mark_open_article', false),
+ 'site' => Minz_Request::param('mark_open_site', false),
+ 'scroll' => Minz_Request::param('mark_scroll', false),
+ 'reception' => Minz_Request::param('mark_upon_reception', false),
));
- $this->view->conf->_theme ($theme);
- $this->view->conf->_topline_read ($topline_read);
- $this->view->conf->_topline_favorite ($topline_favorite);
- $this->view->conf->_topline_date ($topline_date);
- $this->view->conf->_topline_link ($topline_link);
- $this->view->conf->_bottomline_read ($bottomline_read);
- $this->view->conf->_bottomline_favorite ($bottomline_favorite);
- $this->view->conf->_bottomline_sharing ($bottomline_sharing);
- $this->view->conf->_bottomline_tags ($bottomline_tags);
- $this->view->conf->_bottomline_date ($bottomline_date);
- $this->view->conf->_bottomline_link ($bottomline_link);
+ $this->view->conf->_theme(Minz_Request::param('theme', 'default'));
+ $this->view->conf->_topline_read(Minz_Request::param('topline_read', false));
+ $this->view->conf->_topline_favorite(Minz_Request::param('topline_favorite', false));
+ $this->view->conf->_topline_date(Minz_Request::param('topline_date', false));
+ $this->view->conf->_topline_link(Minz_Request::param('topline_link', false));
+ $this->view->conf->_bottomline_read(Minz_Request::param('bottomline_read', false));
+ $this->view->conf->_bottomline_favorite(Minz_Request::param('bottomline_favorite', false));
+ $this->view->conf->_bottomline_sharing(Minz_Request::param('bottomline_sharing', false));
+ $this->view->conf->_bottomline_tags(Minz_Request::param('bottomline_tags', false));
+ $this->view->conf->_bottomline_date(Minz_Request::param('bottomline_date', false));
+ $this->view->conf->_bottomline_link(Minz_Request::param('bottomline_link', false));
+ $this->view->conf->save();
- $values = array (
- 'language' => $this->view->conf->language (),
- 'posts_per_page' => $this->view->conf->postsPerPage (),
- 'view_mode' => $this->view->conf->viewMode (),
- 'default_view' => $this->view->conf->defaultView (),
- 'auto_load_more' => $this->view->conf->autoLoadMore (),
- 'display_posts' => $this->view->conf->displayPosts (),
- 'onread_jump_next' => $this->view->conf->onread_jump_next (),
- 'lazyload' => $this->view->conf->lazyload (),
- 'sort_order' => $this->view->conf->sortOrder (),
- 'mark_when' => $this->view->conf->markWhen (),
- 'theme' => $this->view->conf->theme (),
- 'topline_read' => $this->view->conf->toplineRead () ? 'yes' : 'no',
- 'topline_favorite' => $this->view->conf->toplineFavorite () ? 'yes' : 'no',
- 'topline_date' => $this->view->conf->toplineDate () ? 'yes' : 'no',
- 'topline_link' => $this->view->conf->toplineLink () ? 'yes' : 'no',
- 'bottomline_read' => $this->view->conf->bottomlineRead () ? 'yes' : 'no',
- 'bottomline_favorite' => $this->view->conf->bottomlineFavorite () ? 'yes' : 'no',
- 'bottomline_sharing' => $this->view->conf->bottomlineSharing () ? 'yes' : 'no',
- 'bottomline_tags' => $this->view->conf->bottomlineTags () ? 'yes' : 'no',
- 'bottomline_date' => $this->view->conf->bottomlineDate () ? 'yes' : 'no',
- 'bottomline_link' => $this->view->conf->bottomlineLink () ? 'yes' : 'no',
- );
+ Minz_Session::_param ('mail', $this->view->conf->mail_login);
- $confDAO = new FreshRSS_ConfigurationDAO ();
- $confDAO->update ($values);
- Minz_Session::_param ('conf', $this->view->conf);
- Minz_Session::_param ('mail', $this->view->conf->mailLogin ());
-
- Minz_Session::_param ('language', $this->view->conf->language ());
+ Minz_Session::_param ('language', $this->view->conf->language);
Minz_Translate::reset ();
- // notif
$notif = array (
'type' => 'good',
'content' => Minz_Translate::t ('configuration_updated')
@@ -243,22 +188,18 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
public function sharingAction () {
if (Minz_Request::isPost ()) {
- $this->view->conf->_sharing (array (
- 'shaarli' => Minz_Request::param ('shaarli', ''),
- 'poche' => Minz_Request::param ('poche', ''),
- 'diaspora' => Minz_Request::param ('diaspora', ''),
- 'twitter' => Minz_Request::param ('twitter', 'no') === 'yes',
- 'g+' => Minz_Request::param ('g+', 'no') === 'yes',
- 'facebook' => Minz_Request::param ('facebook', 'no') === 'yes',
- 'email' => Minz_Request::param ('email', 'no') === 'yes',
- 'print' => Minz_Request::param ('print', 'no') === 'yes'
+ $this->view->conf->_sharing (array(
+ 'shaarli' => Minz_Request::param ('shaarli', false),
+ 'poche' => Minz_Request::param ('poche', false),
+ 'diaspora' => Minz_Request::param ('diaspora', false),
+ 'twitter' => Minz_Request::param ('twitter', false),
+ 'g+' => Minz_Request::param ('g+', false),
+ 'facebook' => Minz_Request::param ('facebook', false),
+ 'email' => Minz_Request::param ('email', false),
+ 'print' => Minz_Request::param ('print', false),
));
+ $this->view->conf->save();
- $confDAO = new FreshRSS_ConfigurationDAO ();
- $confDAO->update ($this->view->conf->sharing ());
- Minz_Session::_param ('conf', $this->view->conf);
-
- // notif
$notif = array (
'type' => 'good',
'content' => Minz_Translate::t ('configuration_updated')
@@ -269,9 +210,6 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
}
Minz_View::prependTitle (Minz_Translate::t ('sharing_management') . ' - ');
-
- $entryDAO = new FreshRSS_EntryDAO ();
- $this->view->nb_total = $entryDAO->count ();
}
public function importExportAction () {
@@ -347,32 +285,20 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
'9', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
'f10', 'f11', 'f12');
$this->view->list_keys = $list_keys;
- $list_names = array ('mark_read', 'mark_favorite', 'go_website', 'next_entry',
- 'prev_entry', 'next_page', 'prev_page', 'collapse_entry',
- 'load_more');
if (Minz_Request::isPost ()) {
$shortcuts = Minz_Request::param ('shortcuts');
$shortcuts_ok = array ();
foreach ($shortcuts as $key => $value) {
- if (in_array ($key, $list_names)
- && in_array ($value, $list_keys)) {
+ if (in_array($value, $list_keys)) {
$shortcuts_ok[$key] = $value;
}
}
$this->view->conf->_shortcuts ($shortcuts_ok);
+ $this->view->conf->save();
- $values = array (
- 'shortcuts' => $this->view->conf->shortcuts ()
- );
-
- $confDAO = new FreshRSS_ConfigurationDAO ();
- $confDAO->update ($values);
- Minz_Session::_param ('conf', $this->view->conf);
-
- // notif
$notif = array (
'type' => 'good',
'content' => Minz_Translate::t ('shortcuts_updated')
@@ -388,26 +314,20 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
public function usersAction() {
if (Minz_Request::isPost()) {
$ok = true;
- $current_token = $this->view->conf->token();
+ $current_token = $this->view->conf->token;
$mail = Minz_Request::param('mail_login', false);
$token = Minz_Request::param('token', $current_token);
- $this->view->conf->_mailLogin($mail);
+ $this->view->conf->_mail_login($mail);
$this->view->conf->_token($token);
+ $ok &= $this->view->conf->save();
- $values = array(
- 'mail_login' => $this->view->conf->mailLogin(),
- 'token' => $this->view->conf->token(),
- );
-
- $confDAO = new FreshRSS_ConfigurationDAO();
- $ok &= $confDAO->update($values);
- Minz_Session::_param('conf', $this->view->conf);
- Minz_Session::_param('mail', $this->view->conf->mailLogin());
+ Minz_Session::_param('mail', $this->view->conf->mail_login);
if (Minz_Configuration::isAdmin()) {
- $anon = (bool)(Minz_Request::param('anon_access', false));
+ $anon = (Minz_Request::param('anon_access', false));
+ $anon = ((bool)$anon) && ($anon !== 'no');
if ($anon != Minz_Configuration::allowAnonymous()) {
Minz_Configuration::_allowAnonymous($anon);
$ok &= Minz_Configuration::writeFile();
@@ -432,20 +352,10 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
$old = Minz_Request::param('old_entries', 3);
$keepHistoryDefault = Minz_Request::param('keep_history_default', 0);
- $this->view->conf->_oldEntries($old);
- $this->view->conf->_keepHistoryDefault($keepHistoryDefault);
+ $this->view->conf->_old_entries($old);
+ $this->view->conf->_keep_history_default($keepHistoryDefault);
+ $this->view->conf->save();
- $values = array(
- 'old_entries' => $this->view->conf->oldEntries(),
- 'keep_history_default' => $this->view->conf->keepHistoryDefault(),
- );
-
- $confDAO = new FreshRSS_ConfigurationDAO();
- $confDAO->update($values);
- Minz_Session::_param('conf', $this->view->conf);
- Minz_Session::_param('mail', $this->view->conf->mailLogin ());
-
- // notif
$notif = array(
'type' => 'good',
'content' => Minz_Translate::t('configuration_updated')
diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php
index 9b5081894..b0fc37cdf 100755
--- a/app/Controllers/entryController.php
+++ b/app/Controllers/entryController.php
@@ -113,7 +113,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController {
public function purgeAction() {
@set_time_limit(300);
- $nb_month_old = max($this->view->conf->oldEntries(), 1);
+ $nb_month_old = max($this->view->conf->old_entries, 1);
$date_min = time() - (3600 * 24 * 30 * $nb_month_old);
$feedDAO = new FreshRSS_FeedDAO();
@@ -125,7 +125,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController {
foreach ($feeds as $feed) {
$feedHistory = $feed->keepHistory();
if ($feedHistory == -2) { //default
- $feedHistory = $this->view->conf->keepHistoryDefault();
+ $feedHistory = $this->view->conf->keep_history_default;
}
if ($feedHistory >= 0) {
$nb = $feedDAO->cleanOldEntries($feed->id(), $date_min, $feedHistory);
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 77d36e977..42a0dcb11 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -2,7 +2,7 @@
class FreshRSS_feed_Controller extends Minz_ActionController {
public function firstAction () {
- $token = $this->view->conf->token();
+ $token = $this->view->conf->token;
$token_param = Minz_Request::param ('token', '');
$token_is_ok = ($token != '' && $token == $token_param);
$action = Minz_Request::actionName ();
@@ -79,13 +79,13 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$feed->_id ($id);
$feed->faviconPrepare();
- $is_read = $this->view->conf->markUponReception() === 'yes' ? 1 : 0;
+ $is_read = $this->view->conf->mark_when['reception'] ? 1 : 0;
$entryDAO = new FreshRSS_EntryDAO ();
$entries = array_reverse($feed->entries()); //We want chronological order and SimplePie uses reverse order
// on calcule la date des articles les plus anciens qu'on accepte
- $nb_month_old = $this->view->conf->oldEntries ();
+ $nb_month_old = $this->view->conf->old_entries;
$date_min = time () - (3600 * 24 * 30 * $nb_month_old);
$transactionStarted = true;
@@ -182,26 +182,25 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
}
// on calcule la date des articles les plus anciens qu'on accepte
- $nb_month_old = max($this->view->conf->oldEntries(), 1);
+ $nb_month_old = max($this->view->conf->old_entries, 1);
$date_min = time () - (3600 * 24 * 30 * $nb_month_old);
$i = 0;
$flux_update = 0;
+ $is_read = $this->view->conf->mark_when['reception'] ? 1 : 0;
foreach ($feeds as $feed) {
try {
$url = $feed->url();
$feed->load(false);
$entries = array_reverse($feed->entries()); //We want chronological order and SimplePie uses reverse order
- $is_read = $this->view->conf->markUponReception() === 'yes' ? 1 : 0;
-
//For this feed, check last n entry GUIDs already in database
$existingGuids = array_fill_keys ($entryDAO->listLastGuidsByFeed ($feed->id (), count($entries) + 10), 1);
$useDeclaredDate = empty($existingGuids);
$feedHistory = $feed->keepHistory();
if ($feedHistory == -2) { //default
- $feedHistory = $this->view->conf->keepHistoryDefault();
+ $feedHistory = $this->view->conf->keep_history_default;
}
// On ne vérifie pas strictement que l'article n'est pas déjà en BDD
@@ -309,7 +308,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$this->addCategories ($categories);
// on calcule la date des articles les plus anciens qu'on accepte
- $nb_month_old = $this->view->conf->oldEntries ();
+ $nb_month_old = $this->view->conf->old_entries;
$date_min = time () - (3600 * 24 * 30 * $nb_month_old);
// la variable $error permet de savoir si une erreur est survenue
diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php
index 4677787c1..54826636f 100755
--- a/app/Controllers/indexController.php
+++ b/app/Controllers/indexController.php
@@ -17,7 +17,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
public function indexAction () {
$output = Minz_Request::param ('output');
- $token = $this->view->conf->token();
+ $token = $this->view->conf->token;
$token_param = Minz_Request::param ('token', '');
$token_is_ok = ($token != '' && $token === $token_param);
@@ -91,13 +91,13 @@ class FreshRSS_index_Controller extends Minz_ActionController {
);
// On récupère les différents éléments de filtrage
- $this->view->state = $state = Minz_Request::param ('state', $this->view->conf->defaultView ());
+ $this->view->state = $state = Minz_Request::param ('state', $this->view->conf->default_view);
$filter = Minz_Request::param ('search', '');
if (!empty($filter)) {
$state = 'all'; //Search always in read and unread articles
}
- $this->view->order = $order = Minz_Request::param ('order', $this->view->conf->sortOrder ());
- $nb = Minz_Request::param ('nb', $this->view->conf->postsPerPage ());
+ $this->view->order = $order = Minz_Request::param ('order', $this->view->conf->sort_order);
+ $nb = Minz_Request::param ('nb', $this->view->conf->posts_per_page);
$first = Minz_Request::param ('next', '');
if ($state === 'not_read') { //Any unread article in this category at all?
@@ -128,9 +128,9 @@ class FreshRSS_index_Controller extends Minz_ActionController {
$this->view->today = $today;
// on calcule la date des articles les plus anciens qu'on affiche
- $nb_month_old = $this->view->conf->oldEntries ();
+ $nb_month_old = $this->view->conf->old_entries;
$date_min = $today - (3600 * 24 * 30 * $nb_month_old); //Do not use a fast changing value such as time() to allow SQL caching
- $keepHistoryDefault = $this->view->conf->keepHistoryDefault();
+ $keepHistoryDefault = $this->view->conf->keep_history_default;
try {
$entries = $this->entryDAO->listWhere($getType, $getId, $state, $order, $nb + 1, $first, $filter, $date_min, $keepHistoryDefault);
@@ -253,7 +253,7 @@ class FreshRSS_index_Controller extends Minz_ActionController {
curl_close ($ch);
$res = json_decode ($result, true);
- if ($res['status'] === 'okay' && $res['email'] === $this->view->conf->mailLogin ()) {
+ if ($res['status'] === 'okay' && $res['email'] === $this->view->conf->mail_login) {
Minz_Session::_param ('mail', $res['email']);
invalidateHttpCache();
} else {
diff --git a/app/FreshRSS.php b/app/FreshRSS.php
index 60610e352..05c8ec8e0 100644
--- a/app/FreshRSS.php
+++ b/app/FreshRSS.php
@@ -2,7 +2,6 @@
class FreshRSS extends Minz_FrontController {
public function init () {
Minz_Session::init ('FreshRSS');
- Minz_Translate::init ();
$this->loadParamsView ();
$this->loadStylesAndScripts ();
@@ -11,26 +10,26 @@ class FreshRSS extends Minz_FrontController {
private function loadParamsView () {
try {
- $this->conf = Minz_Session::param ('conf', new FreshRSS_Configuration ());
+ $this->conf = new FreshRSS_Configuration();
} catch (Minz_Exception $e) {
// Permission denied or conf file does not exist
// it's critical!
- print $e->getMessage();
- exit();
+ die($e->getMessage());
}
Minz_View::_param ('conf', $this->conf);
- Minz_Session::_param ('language', $this->conf->language ());
+ Minz_Session::_param ('language', $this->conf->language);
+ Minz_Translate::init();
$output = Minz_Request::param ('output');
- if(!$output) {
- $output = $this->conf->viewMode();
+ if (!$output) {
+ $output = $this->conf->view_mode;
Minz_Request::_param ('output', $output);
}
}
private function loadStylesAndScripts () {
- $theme = FreshRSS_Themes::get_infos($this->conf->theme());
+ $theme = FreshRSS_Themes::get_infos($this->conf->theme);
if ($theme) {
foreach($theme["files"] as $file) {
Minz_View::appendStyle (Minz_Url::display ('/themes/' . $theme['path'] . '/' . $file . '?' . @filemtime(PUBLIC_PATH . '/themes/' . $theme['path'] . '/' . $file)));
@@ -40,7 +39,7 @@ class FreshRSS extends Minz_FrontController {
if (login_is_conf ($this->conf)) {
Minz_View::appendScript ('https://login.persona.org/include.js');
}
- $includeLazyLoad = $this->conf->lazyload () === 'yes' && ($this->conf->displayPosts () === 'yes' || Minz_Request::param ('output') === 'reader');
+ $includeLazyLoad = $this->conf->lazyload && ($this->conf->display_posts || Minz_Request::param ('output') === 'reader');
Minz_View::appendScript (Minz_Url::display ('/scripts/jquery.min.js?' . @filemtime(PUBLIC_PATH . '/scripts/jquery.min.js')), false, !$includeLazyLoad, !$includeLazyLoad);
if ($includeLazyLoad) {
Minz_View::appendScript (Minz_Url::display ('/scripts/jquery.lazyload.min.js?' . @filemtime(PUBLIC_PATH . '/scripts/jquery.lazyload.min.js')));
diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php
index 7f4be474d..b0a5d9940 100644
--- a/app/Models/Configuration.php
+++ b/app/Models/Configuration.php
@@ -1,258 +1,171 @@
'en',
+ 'old_entries' => 3,
+ 'keep_history_default' => 0,
+ 'mail_login' => '',
+ 'token' => '',
+ 'posts_per_page' => 20,
+ 'view_mode' => 'normal',
+ 'default_view' => 'not_read',
+ 'auto_load_more' => true,
+ 'display_posts' => false,
+ 'onread_jump_next' => true,
+ 'lazyload' => true,
+ 'sort_order' => 'DESC',
+ 'anon_access' => false,
+ 'mark_when' => array(
+ 'article' => true,
+ 'site' => true,
+ 'scroll' => false,
+ 'reception' => false,
+ ),
+ 'theme' => 'default',
+ 'shortcuts' => array(
+ 'mark_read' => 'r',
+ 'mark_favorite' => 'f',
+ 'go_website' => 'space',
+ 'next_entry' => 'j',
+ 'prev_entry' => 'k',
+ 'collapse_entry' => 'c',
+ 'load_more' => 'm',
+ ),
+ 'topline_read' => true,
+ 'topline_favorite' => true,
+ 'topline_date' => true,
+ 'topline_link' => true,
+ 'bottomline_read' => true,
+ 'bottomline_favorite' => true,
+ 'bottomline_sharing' => true,
+ 'bottomline_tags' => true,
+ 'bottomline_date' => true,
+ 'bottomline_link' => true,
+ 'sharing' => array(
+ 'shaarli' => '',
+ 'poche' => '',
+ 'diaspora' => '',
+ 'twitter' => true,
+ 'g+' => true,
+ 'facebook' => true,
+ 'email' => true,
+ 'print' => true,
+ ),
+ );
+
+ private $available_languages = array(
'en' => 'English',
'fr' => 'Français',
);
- private $language;
- private $posts_per_page;
- private $view_mode;
- private $default_view;
- private $display_posts;
- private $onread_jump_next;
- private $lazyload;
- private $sort_order;
- private $old_entries;
- private $keep_history_default;
- private $shortcuts = array ();
- private $mail_login = '';
- private $mark_when = array ();
- private $sharing = array ();
- private $theme;
- private $token;
- private $auto_load_more;
- private $topline_read;
- private $topline_favorite;
- private $topline_date;
- private $topline_link;
- private $bottomline_read;
- private $bottomline_favorite;
- private $bottomline_sharing;
- private $bottomline_tags;
- private $bottomline_date;
- private $bottomline_link;
- public function __construct () {
- $confDAO = new FreshRSS_ConfigurationDAO ();
- $this->_language ($confDAO->language);
- $this->_postsPerPage ($confDAO->posts_per_page);
- $this->_viewMode ($confDAO->view_mode);
- $this->_defaultView ($confDAO->default_view);
- $this->_displayPosts ($confDAO->display_posts);
- $this->_onread_jump_next ($confDAO->onread_jump_next);
- $this->_lazyload ($confDAO->lazyload);
- $this->_sortOrder ($confDAO->sort_order);
- $this->_oldEntries ($confDAO->old_entries);
- $this->_keepHistoryDefault($confDAO->keep_history_default);
- $this->_shortcuts ($confDAO->shortcuts);
- $this->_mailLogin ($confDAO->mail_login);
- $this->_markWhen ($confDAO->mark_when);
- $this->_sharing ($confDAO->sharing);
- $this->_theme ($confDAO->theme);
- FreshRSS_Themes::setThemeId ($confDAO->theme);
- $this->_token ($confDAO->token);
- $this->_autoLoadMore ($confDAO->auto_load_more);
- $this->_topline_read ($confDAO->topline_read);
- $this->_topline_favorite ($confDAO->topline_favorite);
- $this->_topline_date ($confDAO->topline_date);
- $this->_topline_link ($confDAO->topline_link);
- $this->_bottomline_read ($confDAO->bottomline_read);
- $this->_bottomline_favorite ($confDAO->bottomline_favorite);
- $this->_bottomline_sharing ($confDAO->bottomline_sharing);
- $this->_bottomline_tags ($confDAO->bottomline_tags);
- $this->_bottomline_date ($confDAO->bottomline_date);
- $this->_bottomline_link ($confDAO->bottomline_link);
+ public function __construct ($filename = '') {
+ if (empty($filename)) {
+ $filename = DATA_PATH . '/' . Minz_Configuration::currentUser () . '_user.php';
+ }
+ parent::__construct($filename);
+ $data = parent::loadArray();
+
+ foreach ($data as $key => $value) {
+ if (isset($this->data[$key])) {
+ $function = '_' . $key;
+ $this->$function($value);
+ }
+ }
}
- public function availableLanguages () {
- return $this->available_languages;
+ public function save() {
+ invalidateHttpCache();
+ return parent::writeArray($this->data);
}
- public function language () {
- return $this->language;
+
+ public function __get($name) {
+ if (array_key_exists($name, $this->data)) {
+ return $this->data[$name];
+ } else {
+ $trace = debug_backtrace();
+ trigger_error('Undefined FreshRSS_Configuration->' . $name . 'in ' . $trace[0]['file'] . ' line ' . $trace[0]['line'], E_USER_NOTICE); //TODO: Use Minz exceptions
+ return null;
+ }
}
- public function postsPerPage () {
- return $this->posts_per_page;
- }
- public function viewMode () {
- return $this->view_mode;
- }
- public function defaultView () {
- return $this->default_view;
- }
- public function displayPosts () {
- return $this->display_posts;
- }
- public function onread_jump_next () {
- return $this->onread_jump_next;
- }
- public function lazyload () {
- return $this->lazyload;
- }
- public function sortOrder () {
- return $this->sort_order;
- }
- public function oldEntries () {
- return $this->old_entries;
- }
- public function keepHistoryDefault() {
- return $this->keep_history_default;
- }
- public function shortcuts () {
- return $this->shortcuts;
- }
- public function mailLogin () {
- return $this->mail_login;
- }
- public function markWhen () {
- return $this->mark_when;
- }
- public function markWhenArticle () {
- return $this->mark_when['article'];
- }
- public function markWhenSite () {
- return $this->mark_when['site'];
- }
- public function markWhenScroll () {
- return $this->mark_when['scroll'];
- }
- public function markUponReception () {
- return $this->mark_when['reception'];
- }
- public function sharing ($key = false) {
+
+ public function sharing($key = false) {
if ($key === false) {
- return $this->sharing;
- } elseif (isset ($this->sharing[$key])) {
- return $this->sharing[$key];
+ return $this->data['sharing'];
+ }
+ if (isset($this->data['sharing'][$key])) {
+ return $this->data['sharing'][$key];
}
return false;
}
- public function theme () {
- return $this->theme;
- }
- public function token () {
- return $this->token;
- }
- public function autoLoadMore () {
- return $this->auto_load_more;
- }
- public function toplineRead () {
- return $this->topline_read;
- }
- public function toplineFavorite () {
- return $this->topline_favorite;
- }
- public function toplineDate () {
- return $this->topline_date;
- }
- public function toplineLink () {
- return $this->topline_link;
- }
- public function bottomlineRead () {
- return $this->bottomline_read;
- }
- public function bottomlineFavorite () {
- return $this->bottomline_favorite;
- }
- public function bottomlineSharing () {
- return $this->bottomline_sharing;
- }
- public function bottomlineTags () {
- return $this->bottomline_tags;
- }
- public function bottomlineDate () {
- return $this->bottomline_date;
- }
- public function bottomlineLink () {
- return $this->bottomline_link;
+
+ public function availableLanguages() {
+ return $this->available_languages;
}
- public function _language ($value) {
- if (!isset ($this->available_languages[$value])) {
+ public function _language($value) {
+ if (!isset($this->available_languages[$value])) {
$value = 'en';
}
- $this->language = $value;
+ $this->data['language'] = $value;
}
- public function _postsPerPage ($value) {
+ public function _posts_per_page ($value) {
$value = intval($value);
- $this->posts_per_page = $value > 0 ? $value : 10;
+ $this->data['posts_per_page'] = $value > 0 ? $value : 10;
}
- public function _viewMode ($value) {
- if ($value == 'global' || $value == 'reader') {
- $this->view_mode = $value;
+ public function _view_mode ($value) {
+ if ($value === 'global' || $value === 'reader') {
+ $this->data['view_mode'] = $value;
} else {
- $this->view_mode = 'normal';
+ $this->data['view_mode'] = 'normal';
}
}
- public function _defaultView ($value) {
- if ($value == 'not_read') {
- $this->default_view = 'not_read';
- } else {
- $this->default_view = 'all';
- }
+ public function _default_view ($value) {
+ $this->data['default_view'] = $value === 'all' ? 'all' : 'not_read';
}
- public function _displayPosts ($value) {
- if ($value == 'yes') {
- $this->display_posts = 'yes';
- } else {
- $this->display_posts = 'no';
- }
+ public function _display_posts ($value) {
+ $this->data['display_posts'] = ((bool)$value) && $value !== 'no';
}
public function _onread_jump_next ($value) {
- if ($value == 'no') {
- $this->onread_jump_next = 'no';
- } else {
- $this->onread_jump_next = 'yes';
- }
+ $this->data['onread_jump_next'] = ((bool)$value) && $value !== 'no';
}
public function _lazyload ($value) {
- if ($value == 'no') {
- $this->lazyload = 'no';
- } else {
- $this->lazyload = 'yes';
- }
+ $this->data['lazyload'] = ((bool)$value) && $value !== 'no';
}
- public function _sortOrder ($value) {
- $this->sort_order = $value === 'ASC' ? 'ASC' : 'DESC';
+ public function _sort_order ($value) {
+ $this->data['sort_order'] = $value === 'ASC' ? 'ASC' : 'DESC';
}
- public function _oldEntries($value) {
+ public function _old_entries($value) {
$value = intval($value);
- $this->old_entries = $value > 0 ? $value : 3;
+ $this->data['old_entries'] = $value > 0 ? $value : 3;
}
- public function _keepHistoryDefault($value) {
+ public function _keep_history_default($value) {
$value = intval($value);
- $this->keep_history_default = $value >= -1 ? $value : 0;
+ $this->data['keep_history_default'] = $value >= -1 ? $value : 0;
}
public function _shortcuts ($values) {
foreach ($values as $key => $value) {
- $this->shortcuts[$key] = $value;
+ if (isset($this->data['shortcuts'][$key])) {
+ $this->data['shortcuts'][$key] = $value;
+ }
}
}
- public function _mailLogin ($value) {
- if (filter_var ($value, FILTER_VALIDATE_EMAIL)) {
+ public function _mail_login ($value) {
+ if (filter_var($value, FILTER_VALIDATE_EMAIL)) {
$this->mail_login = $value;
- } elseif ($value == false) {
- $this->mail_login = false;
+ } else {
+ $this->mail_login = '';
}
}
- public function _markWhen ($values) {
- if(!isset($values['article'])) {
- $values['article'] = 'yes';
+ public function _anon_access ($value) {
+ $this->data['anon_access'] = ((bool)$value) && $value !== 'no';
+ }
+ public function _mark_when ($values) {
+ foreach ($values as $key => $value) {
+ if (isset($this->data['mark_when'][$key])) {
+ $this->data['mark_when'][$key] = ((bool)$value) && $value !== 'no';
+ }
}
- if(!isset($values['site'])) {
- $values['site'] = 'yes';
- }
- if(!isset($values['scroll'])) {
- $values['scroll'] = 'yes';
- }
- if(!isset($values['reception'])) {
- $values['reception'] = 'no';
- }
-
- $this->mark_when['article'] = $values['article'];
- $this->mark_when['site'] = $values['site'];
- $this->mark_when['scroll'] = $values['scroll'];
- $this->mark_when['reception'] = $values['reception'];
}
public function _sharing ($values) {
$are_url = array ('shaarli', 'poche', 'diaspora');
@@ -268,54 +181,50 @@ class FreshRSS_Configuration extends Minz_Model {
if (!$is_url) {
$value = '';
}
- } elseif(!is_bool ($value)) {
+ } elseif (!is_bool($value)) {
$value = true;
}
- $this->sharing[$key] = $value;
+ $this->data['sharing'][$key] = $value;
}
}
- public function _theme ($value) {
- $this->theme = $value;
+ public function _theme($value) {
+ $this->data['theme'] = $value;
}
- public function _token ($value) {
- $this->token = $value;
+ public function _token($value) {
+ $this->data['token'] = $value;
}
- public function _autoLoadMore ($value) {
- if ($value == 'yes') {
- $this->auto_load_more = 'yes';
- } else {
- $this->auto_load_more = 'no';
- }
+ public function _auto_load_more($value) {
+ $this->data['auto_load_more'] = ((bool)$value) && $value !== 'no';
}
- public function _topline_read ($value) {
- $this->topline_read = $value === 'yes';
+ public function _topline_read($value) {
+ $this->data['topline_read'] = ((bool)$value) && $value !== 'no';
}
- public function _topline_favorite ($value) {
- $this->topline_favorite = $value === 'yes';
+ public function _topline_favorite($value) {
+ $this->data['topline_favorite'] = ((bool)$value) && $value !== 'no';
}
- public function _topline_date ($value) {
- $this->topline_date = $value === 'yes';
+ public function _topline_date($value) {
+ $this->data['topline_date'] = ((bool)$value) && $value !== 'no';
}
- public function _topline_link ($value) {
- $this->topline_link = $value === 'yes';
+ public function _topline_link($value) {
+ $this->data['topline_link'] = ((bool)$value) && $value !== 'no';
}
- public function _bottomline_read ($value) {
- $this->bottomline_read = $value === 'yes';
+ public function _bottomline_read($value) {
+ $this->data['bottomline_read'] = ((bool)$value) && $value !== 'no';
}
- public function _bottomline_favorite ($value) {
- $this->bottomline_favorite = $value === 'yes';
+ public function _bottomline_favorite($value) {
+ $this->data['bottomline_favorite'] = ((bool)$value) && $value !== 'no';
}
- public function _bottomline_sharing ($value) {
- $this->bottomline_sharing = $value === 'yes';
+ public function _bottomline_sharing($value) {
+ $this->data['bottomline_sharing'] = ((bool)$value) && $value !== 'no';
}
- public function _bottomline_tags ($value) {
- $this->bottomline_tags = $value === 'yes';
+ public function _bottomline_tags($value) {
+ $this->data['bottomline_tags'] = ((bool)$value) && $value !== 'no';
}
- public function _bottomline_date ($value) {
- $this->bottomline_date = $value === 'yes';
+ public function _bottomline_date($value) {
+ $this->data['bottomline_date'] = ((bool)$value) && $value !== 'no';
}
- public function _bottomline_link ($value) {
- $this->bottomline_link = $value === 'yes';
+ public function _bottomline_link($value) {
+ $this->data['bottomline_link'] = ((bool)$value) && $value !== 'no';
}
}
diff --git a/app/Models/ConfigurationDAO.php b/app/Models/ConfigurationDAO.php
deleted file mode 100644
index 53312f043..000000000
--- a/app/Models/ConfigurationDAO.php
+++ /dev/null
@@ -1,154 +0,0 @@
- 'r',
- 'mark_favorite' => 'f',
- 'go_website' => 'space',
- 'next_entry' => 'j',
- 'prev_entry' => 'k',
- 'collapse_entry' => 'c',
- 'load_more' => 'm'
- );
- public $mail_login = '';
- public $mark_when = array (
- 'article' => 'yes',
- 'site' => 'yes',
- 'scroll' => 'no',
- 'reception' => 'no'
- );
- public $sharing = array (
- 'shaarli' => '',
- 'poche' => '',
- 'diaspora' => '',
- 'twitter' => true,
- 'g+' => true,
- 'facebook' => true,
- 'email' => true,
- 'print' => true
- );
- public $theme = 'default';
- public $token = '';
- public $auto_load_more = 'yes';
- public $topline_read = 'yes';
- public $topline_favorite = 'yes';
- public $topline_date = 'yes';
- public $topline_link = 'yes';
- public $bottomline_read = 'yes';
- public $bottomline_favorite = 'yes';
- public $bottomline_sharing = 'yes';
- public $bottomline_tags = 'yes';
- public $bottomline_date = 'yes';
- public $bottomline_link = 'yes';
-
- public function __construct ($nameFile = '') {
- if (empty($nameFile)) {
- $nameFile = DATA_PATH . '/' . Minz_Configuration::currentUser () . '_user.php';
- }
- parent::__construct ($nameFile);
-
- // TODO : simplifier ce code, une boucle for() devrait suffire !
- if (isset ($this->array['language'])) {
- $this->language = $this->array['language'];
- }
- if (isset ($this->array['posts_per_page'])) {
- $this->posts_per_page = intval($this->array['posts_per_page']);
- }
- if (isset ($this->array['view_mode'])) {
- $this->view_mode = $this->array['view_mode'];
- }
- if (isset ($this->array['default_view'])) {
- $this->default_view = $this->array['default_view'];
- }
- if (isset ($this->array['display_posts'])) {
- $this->display_posts = $this->array['display_posts'];
- }
- if (isset ($this->array['onread_jump_next'])) {
- $this->onread_jump_next = $this->array['onread_jump_next'];
- }
- if (isset ($this->array['lazyload'])) {
- $this->lazyload = $this->array['lazyload'];
- }
- if (isset ($this->array['sort_order'])) {
- $this->sort_order = $this->array['sort_order'];
- }
- if (isset ($this->array['old_entries'])) {
- $this->old_entries = intval($this->array['old_entries']);
- }
- if (isset ($this->array['keep_history_default'])) {
- $this->keep_history_default = intval($this->array['keep_history_default']);
- }
- if (isset ($this->array['shortcuts'])) {
- $this->shortcuts = array_merge (
- $this->shortcuts, $this->array['shortcuts']
- );
- }
- if (isset ($this->array['mail_login'])) {
- $this->mail_login = $this->array['mail_login'];
- }
- if (isset ($this->array['mark_when'])) {
- $this->mark_when = $this->array['mark_when'];
- }
- if (isset ($this->array['sharing'])) {
- $this->sharing = array_merge (
- $this->sharing, $this->array['sharing']
- );
- }
- if (isset ($this->array['theme'])) {
- $this->theme = $this->array['theme'];
- }
- if (isset ($this->array['token'])) {
- $this->token = $this->array['token'];
- }
- if (isset ($this->array['auto_load_more'])) {
- $this->auto_load_more = $this->array['auto_load_more'];
- }
-
- if (isset ($this->array['topline_read'])) {
- $this->topline_read = $this->array['topline_read'];
- }
- if (isset ($this->array['topline_favorite'])) {
- $this->topline_favorite = $this->array['topline_favorite'];
- }
- if (isset ($this->array['topline_date'])) {
- $this->topline_date = $this->array['topline_date'];
- }
- if (isset ($this->array['topline_link'])) {
- $this->topline_link = $this->array['topline_link'];
- }
- if (isset ($this->array['bottomline_read'])) {
- $this->bottomline_read = $this->array['bottomline_read'];
- }
- if (isset ($this->array['bottomline_favorite'])) {
- $this->bottomline_favorite = $this->array['bottomline_favorite'];
- }
- if (isset ($this->array['bottomline_sharing'])) {
- $this->bottomline_sharing = $this->array['bottomline_sharing'];
- }
- if (isset ($this->array['bottomline_tags'])) {
- $this->bottomline_tags = $this->array['bottomline_tags'];
- }
- if (isset ($this->array['bottomline_date'])) {
- $this->bottomline_date = $this->array['bottomline_date'];
- }
- if (isset ($this->array['bottomline_link'])) {
- $this->bottomline_link = $this->array['bottomline_link'];
- }
- }
-
- public function update($values) {
- $this->array = array_merge($this->array, $values);
- invalidateHttpCache();
- return parent::writeFile();
- }
-}
diff --git a/app/i18n/en.php b/app/i18n/en.php
index c7ac16ae0..65afc11e5 100644
--- a/app/i18n/en.php
+++ b/app/i18n/en.php
@@ -159,7 +159,7 @@ return array (
'current_user' => 'Current user',
'default_user' => 'Username of the default user (maximum 16 alphanumeric characters)',
'persona_connection_email' => 'Login mail address (use Mozilla Persona)',
- 'allow_anonymous' => 'Allow anonymous reading',
+ 'allow_anonymous' => 'Allow anonymous reading for the default user (%s)',
'auth_token' => 'Authentication token',
'explain_token' => 'Allows to access RSS output without authentication.
%s?token=%s',
'login_configuration' => 'Login',
diff --git a/app/i18n/fr.php b/app/i18n/fr.php
index e8da1c603..adc38acbe 100644
--- a/app/i18n/fr.php
+++ b/app/i18n/fr.php
@@ -159,7 +159,7 @@ return array (
'current_user' => 'Utilisateur actuel',
'default_user' => 'Nom de l’utilisateur par défaut (16 caractères alphanumériques maximum)',
'persona_connection_email' => 'Adresse courriel de connexion (utilise Mozilla Persona)',
- 'allow_anonymous' => 'Autoriser la lecture anonyme',
+ 'allow_anonymous' => 'Autoriser la lecture anonyme pour l’utilisateur par défaut (%s)',
'auth_token' => 'Jeton d’identification',
'explain_token' => 'Permet d’accéder à la sortie RSS sans besoin de s’authentifier.
%s?output=rss&token=%s',
'login_configuration' => 'Identification',
diff --git a/app/layout/layout.phtml b/app/layout/layout.phtml
index b7c34f04e..ae75c9bdb 100644
--- a/app/layout/layout.phtml
+++ b/app/layout/layout.phtml
@@ -1,5 +1,5 @@
-
+