From 35be1769de28df3fff1a26e40d1d6b1e587a2847 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Fri, 1 Aug 2014 20:20:25 +0200 Subject: Basic protection against XSRF using Referer https://github.com/marienfressinaud/FreshRSS/issues/554 Also edited the error controler to use the log message passed in Minz_Error::error(). --- app/Controllers/errorController.php | 52 +++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 20 deletions(-) (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index dc9a2ee25..922650b3d 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -1,26 +1,38 @@ view->code = 'Error 403 - Forbidden'; - break; - case 404: - $this->view->code = 'Error 404 - Not found'; - break; - case 500: - $this->view->code = 'Error 500 - Internal Server Error'; - break; - case 503: - $this->view->code = 'Error 503 - Service Unavailable'; - break; - default: - $this->view->code = 'Error 404 - Not found'; + public function indexAction() { + switch (Minz_Request::param('code')) { + case 403: + $this->view->code = 'Error 403 - Forbidden'; + break; + case 404: + $this->view->code = 'Error 404 - Not found'; + break; + case 500: + $this->view->code = 'Error 500 - Internal Server Error'; + break; + case 503: + $this->view->code = 'Error 503 - Service Unavailable'; + break; + default: + $this->view->code = 'Error 404 - Not found'; } - - $this->view->logs = Minz_Request::param ('logs'); - - Minz_View::prependTitle ($this->view->code . ' · '); + + $errors = Minz_Request::param('logs', array()); + $this->view->errorMessage = trim(implode($errors)); + if ($this->view->errorMessage == '') { + switch(Minz_Request::param('code')) { + case 403: + $this->view->errorMessage = Minz_Translate::t('forbidden_access'); + break; + case 404: + default: + $this->view->errorMessage = Minz_Translate::t('page_not_found'); + break; + } + } + + Minz_View::prependTitle($this->view->code . ' · '); } } -- cgit v1.2.3 From 6c8b36f04ea1bc2c022c331bb0980b6c9dccb83c Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 5 Oct 2014 15:55:20 +0200 Subject: Let's begin the big refactoring! Minz_Translate::t\s? replaces by _t See https://github.com/marienfressinaud/FreshRSS/issues/655 --- app/Controllers/entryController.php | 8 ++-- app/Controllers/errorController.php | 4 +- app/Controllers/feedController.php | 30 ++++++------- app/Controllers/indexController.php | 22 +++++----- app/Controllers/statsController.php | 4 +- app/Controllers/usersController.php | 8 ++-- app/FreshRSS.php | 2 +- app/Models/CategoryDAO.php | 2 +- app/Models/StatsDAO.php | 2 +- app/Models/UserDAO.php | 4 +- app/layout/aside_stats.phtml | 14 +++--- app/views/configure/archiving.phtml | 36 ++++++++-------- app/views/configure/display.phtml | 44 +++++++++---------- app/views/configure/reading.phtml | 64 +++++++++++++-------------- app/views/configure/sharing.phtml | 24 +++++------ app/views/configure/users.phtml | 74 ++++++++++++++++---------------- app/views/error/index.phtml | 2 +- app/views/feed/add.phtml | 34 +++++++-------- app/views/helpers/feed/update.phtml | 60 +++++++++++++------------- app/views/helpers/javascript_vars.phtml | 8 ++-- app/views/helpers/logs_pagination.phtml | 8 ++-- app/views/helpers/view/normal_view.phtml | 14 +++--- app/views/helpers/view/reader_view.phtml | 2 +- app/views/helpers/view/rss_view.phtml | 2 +- app/views/index/about.phtml | 26 +++++------ app/views/index/logs.phtml | 8 ++-- lib/lib_rss.php | 8 ++-- 27 files changed, 256 insertions(+), 258 deletions(-) (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php index ab66d9198..048ac1c69 100755 --- a/app/Controllers/entryController.php +++ b/app/Controllers/entryController.php @@ -5,7 +5,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { if (!$this->view->loginOk) { Minz_Error::error ( 403, - array ('error' => array (Minz_Translate::t ('access_denied'))) + array ('error' => array (_t('access_denied'))) ); } @@ -75,7 +75,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { $notif = array ( 'type' => 'good', - 'content' => Minz_Translate::t ('feeds_marked_read') + 'content' => _t('feeds_marked_read') ); Minz_Session::_param ('notification', $notif); } else { @@ -111,7 +111,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { $notif = array ( 'type' => 'good', - 'content' => Minz_Translate::t ('optimization_complete') + 'content' => _t('optimization_complete') ); Minz_Session::_param ('notification', $notif); } @@ -155,7 +155,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { $notif = array( 'type' => 'good', - 'content' => Minz_Translate::t('purge_completed', $nbTotal) + 'content' => _t('purge_completed', $nbTotal) ); Minz_Session::_param('notification', $notif); diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index 922650b3d..64a5c06fd 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -24,11 +24,11 @@ class FreshRSS_error_Controller extends Minz_ActionController { if ($this->view->errorMessage == '') { switch(Minz_Request::param('code')) { case 403: - $this->view->errorMessage = Minz_Translate::t('forbidden_access'); + $this->view->errorMessage = _t('forbidden_access'); break; case 404: default: - $this->view->errorMessage = Minz_Translate::t('page_not_found'); + $this->view->errorMessage = _t('page_not_found'); break; } } diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index 92ce40634..029f9fa68 100755 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -15,7 +15,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { ) { Minz_Error::error ( 403, - array ('error' => array (Minz_Translate::t ('access_denied'))) + array ('error' => array (_t('access_denied'))) ); } } @@ -84,7 +84,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // on est déjà abonné à ce flux $notif = array ( 'type' => 'bad', - 'content' => Minz_Translate::t ('already_subscribed', $feed->name ()) + 'content' => _t('already_subscribed', $feed->name ()) ); Minz_Session::_param ('notification', $notif); } else { @@ -93,7 +93,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // problème au niveau de la base de données $notif = array ( 'type' => 'bad', - 'content' => Minz_Translate::t ('feed_not_added', $feed->name ()) + 'content' => _t('feed_not_added', $feed->name ()) ); Minz_Session::_param ('notification', $notif); } else { @@ -131,7 +131,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // ok, ajout terminé $notif = array ( 'type' => 'good', - 'content' => Minz_Translate::t ('feed_added', $feed->name ()) + 'content' => _t('feed_added', $feed->name ()) ); Minz_Session::_param ('notification', $notif); @@ -143,14 +143,14 @@ class FreshRSS_feed_Controller extends Minz_ActionController { Minz_Log::record ($e->getMessage (), Minz_Log::WARNING); $notif = array ( 'type' => 'bad', - 'content' => Minz_Translate::t ('invalid_url', $url) + 'content' => _t('invalid_url', $url) ); Minz_Session::_param ('notification', $notif); } catch (FreshRSS_Feed_Exception $e) { Minz_Log::record ($e->getMessage (), Minz_Log::WARNING); $notif = array ( 'type' => 'bad', - 'content' => Minz_Translate::t ('internal_problem_feed', Minz_Url::display(array('a' => 'logs'))) + 'content' => _t('internal_problem_feed', Minz_Url::display(array('a' => 'logs'))) ); Minz_Session::_param ('notification', $notif); } catch (Minz_FileNotExistException $e) { @@ -158,7 +158,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { Minz_Log::record ($e->getMessage (), Minz_Log::ERROR); $notif = array ( 'type' => 'bad', - 'content' => Minz_Translate::t ('internal_problem_feed', Minz_Url::display(array('a' => 'logs'))) + 'content' => _t('internal_problem_feed', Minz_Url::display(array('a' => 'logs'))) ); Minz_Session::_param ('notification', $notif); } @@ -170,7 +170,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { } else { // GET request so we must ask confirmation to user - Minz_View::prependTitle(Minz_Translate::t('add_rss_feed') . ' · '); + Minz_View::prependTitle(_t('add_rss_feed') . ' · '); $this->view->categories = $this->catDAO->listCategories(false); $this->view->feed = new FreshRSS_Feed($url); try { @@ -186,9 +186,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // Already subscribe so we redirect to the feed configuration page $notif = array( 'type' => 'bad', - 'content' => Minz_Translate::t( - 'already_subscribed', $feed->name() - ) + 'content' => _t('already_subscribed', $feed->name()) ); Minz_Session::_param('notification', $notif); @@ -210,7 +208,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $n = $feedDAO->truncate($id); $notif = array( 'type' => $n === false ? 'bad' : 'good', - 'content' => Minz_Translate::t ('n_entries_deleted', $n) + 'content' => _t('n_entries_deleted', $n) ); Minz_Session::_param ('notification', $notif); invalidateHttpCache(); @@ -336,19 +334,19 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $feed = reset ($feeds); $notif = array ( 'type' => 'good', - 'content' => Minz_Translate::t ('feed_actualized', $feed->name ()) + 'content' => _t('feed_actualized', $feed->name ()) ); } elseif ($flux_update > 1) { // plusieurs flux on été mis à jour $notif = array ( 'type' => 'good', - 'content' => Minz_Translate::t ('n_feeds_actualized', $flux_update) + 'content' => _t('n_feeds_actualized', $flux_update) ); } else { // aucun flux n'a été mis à jour, oups $notif = array ( 'type' => 'good', - 'content' => Minz_Translate::t ('no_feed_to_refresh') + 'content' => _t('no_feed_to_refresh') ); } @@ -370,7 +368,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // ressenti utilisateur $notif = array ( 'type' => 'good', - 'content' => Minz_Translate::t ('feeds_actualized') + 'content' => _t('feeds_actualized') ); Minz_Session::_param ('notification', $notif); // et on désactive le layout car ne sert à rien diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index 1b6563bb3..346739523 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -14,7 +14,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { if ($output === 'rss' && !$token_is_ok) { Minz_Error::error ( 403, - array ('error' => array (Minz_Translate::t ('access_denied'))) + array ('error' => array (_t('access_denied'))) ); return; } elseif ($output !== 'rss') { @@ -62,7 +62,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { Minz_Log::record ('Not found [' . $getType . '][' . $getId . ']', Minz_Log::DEBUG); Minz_Error::error ( 404, - array ('error' => array (Minz_Translate::t ('page_not_found'))) + array ('error' => array (_t('page_not_found'))) ); return; } @@ -145,7 +145,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { Minz_Log::record ($e->getMessage (), Minz_Log::NOTICE); Minz_Error::error ( 404, - array ('error' => array (Minz_Translate::t ('page_not_found'))) + array ('error' => array (_t('page_not_found'))) ); } } @@ -158,12 +158,12 @@ class FreshRSS_index_Controller extends Minz_ActionController { private function checkAndProcessType ($getType, $getId) { switch ($getType) { case 'a': - $this->view->currentName = Minz_Translate::t ('your_rss_feeds'); + $this->view->currentName = _t('your_rss_feeds'); $this->nb_not_read_cat = $this->view->nb_not_read; $this->view->get_c = $getType; return true; case 's': - $this->view->currentName = Minz_Translate::t ('your_favorites'); + $this->view->currentName = _t('your_favorites'); $this->nb_not_read_cat = $this->view->nb_favorites['unread']; $this->view->get_c = $getType; return true; @@ -202,18 +202,18 @@ class FreshRSS_index_Controller extends Minz_ActionController { } public function aboutAction () { - Minz_View::prependTitle (Minz_Translate::t ('about') . ' · '); + Minz_View::prependTitle (_t('about') . ' · '); } public function logsAction () { if (!$this->view->loginOk) { Minz_Error::error ( 403, - array ('error' => array (Minz_Translate::t ('access_denied'))) + array ('error' => array (_t('access_denied'))) ); } - Minz_View::prependTitle (Minz_Translate::t ('logs') . ' · '); + Minz_View::prependTitle (_t('logs') . ' · '); if (Minz_Request::isPost ()) { FreshRSS_LogDAO::truncate(); @@ -279,7 +279,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { } else { $res = array (); $res['status'] = 'failure'; - $res['reason'] = $reason == '' ? Minz_Translate::t ('invalid_login') : $reason; + $res['reason'] = $reason == '' ? _t('invalid_login') : $reason; Minz_Log::record ('Persona: ' . $res['reason'], Minz_Log::WARNING); } @@ -368,7 +368,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { if (!$ok) { $notif = array( 'type' => 'bad', - 'content' => Minz_Translate::t('invalid_login') + 'content' => _t('invalid_login') ); Minz_Session::_param('notification', $notif); } @@ -403,7 +403,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { } elseif (!Minz_Configuration::canLogIn()) { Minz_Error::error ( 403, - array ('error' => array (Minz_Translate::t ('access_denied'))) + array ('error' => array (_t('access_denied'))) ); } invalidateHttpCache(); diff --git a/app/Controllers/statsController.php b/app/Controllers/statsController.php index 3069be34d..4adb5e75d 100644 --- a/app/Controllers/statsController.php +++ b/app/Controllers/statsController.php @@ -120,11 +120,11 @@ class FreshRSS_stats_Controller extends Minz_ActionController { public function firstAction() { if (!$this->view->loginOk) { Minz_Error::error( - 403, array('error' => array(Minz_Translate::t('access_denied'))) + 403, array('error' => array(_t('access_denied'))) ); } - Minz_View::prependTitle(Minz_Translate::t('stats') . ' · '); + Minz_View::prependTitle(_t('stats') . ' · '); } } diff --git a/app/Controllers/usersController.php b/app/Controllers/usersController.php index a9e6c32bc..8eb82f5d5 100644 --- a/app/Controllers/usersController.php +++ b/app/Controllers/usersController.php @@ -8,7 +8,7 @@ class FreshRSS_users_Controller extends Minz_ActionController { if (!$this->view->loginOk) { Minz_Error::error( 403, - array('error' => array(Minz_Translate::t('access_denied'))) + array('error' => array(_t('access_denied'))) ); } } @@ -90,7 +90,7 @@ class FreshRSS_users_Controller extends Minz_ActionController { $notif = array( 'type' => $ok ? 'good' : 'bad', - 'content' => Minz_Translate::t($ok ? 'configuration_updated' : 'error_occurred') + 'content' => _t($ok ? 'configuration_updated' : 'error_occurred') ); Minz_Session::_param('notification', $notif); } @@ -162,7 +162,7 @@ class FreshRSS_users_Controller extends Minz_ActionController { $notif = array( 'type' => $ok ? 'good' : 'bad', - 'content' => Minz_Translate::t($ok ? 'user_created' : 'error_occurred', $new_user_name) + 'content' => _t($ok ? 'user_created' : 'error_occurred', $new_user_name) ); Minz_Session::_param('notification', $notif); } @@ -194,7 +194,7 @@ class FreshRSS_users_Controller extends Minz_ActionController { $notif = array( 'type' => $ok ? 'good' : 'bad', - 'content' => Minz_Translate::t($ok ? 'user_deleted' : 'error_occurred', $username) + 'content' => _t($ok ? 'user_deleted' : 'error_occurred', $username) ); Minz_Session::_param('notification', $notif); } diff --git a/app/FreshRSS.php b/app/FreshRSS.php index 58aac4059..16f64fd8b 100644 --- a/app/FreshRSS.php +++ b/app/FreshRSS.php @@ -10,7 +10,7 @@ class FreshRSS extends Minz_FrontController { $loginOk = false; //Basic protection against XSRF attacks Minz_Error::error( 403, - array('error' => array(Minz_Translate::t('access_denied') . ' [HTTP_REFERER=' . + array('error' => array(_t('access_denied') . ' [HTTP_REFERER=' . htmlspecialchars(empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER']) . ']')) ); } diff --git a/app/Models/CategoryDAO.php b/app/Models/CategoryDAO.php index f11f87f47..5def50a26 100644 --- a/app/Models/CategoryDAO.php +++ b/app/Models/CategoryDAO.php @@ -134,7 +134,7 @@ class FreshRSS_CategoryDAO extends Minz_ModelPdo { $def_cat = $this->searchById (1); if ($def_cat == null) { - $cat = new FreshRSS_Category (Minz_Translate::t ('default_category')); + $cat = new FreshRSS_Category (_t('default_category')); $cat->_id (1); $values = array ( diff --git a/app/Models/StatsDAO.php b/app/Models/StatsDAO.php index 08dd4cd5c..113944508 100644 --- a/app/Models/StatsDAO.php +++ b/app/Models/StatsDAO.php @@ -416,7 +416,7 @@ SQL; */ private function convertToTranslatedJson($data = array()) { $translated = array_map(function ($a) { - return Minz_Translate::t($a); + return _t($a); }, $data); return json_encode($translated); diff --git a/app/Models/UserDAO.php b/app/Models/UserDAO.php index 9f64fb4a7..0c96d7175 100644 --- a/app/Models/UserDAO.php +++ b/app/Models/UserDAO.php @@ -9,7 +9,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo { $ok = false; if (defined('SQL_CREATE_TABLES')) { //E.g. MySQL - $sql = sprintf(SQL_CREATE_TABLES, $db['prefix'] . $username . '_', Minz_Translate::t('default_category')); + $sql = sprintf(SQL_CREATE_TABLES, $db['prefix'] . $username . '_', _t('default_category')); $stm = $userPDO->bd->prepare($sql); $ok = $stm && $stm->execute(); } else { //E.g. SQLite @@ -17,7 +17,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo { if (is_array($SQL_CREATE_TABLES)) { $ok = true; foreach ($SQL_CREATE_TABLES as $instruction) { - $sql = sprintf($instruction, '', Minz_Translate::t('default_category')); + $sql = sprintf($instruction, '', _t('default_category')); $stm = $userPDO->bd->prepare($sql); $ok &= ($stm && $stm->execute()); } diff --git a/app/layout/aside_stats.phtml b/app/layout/aside_stats.phtml index fbfb9d84d..1cd31a99c 100644 --- a/app/layout/aside_stats.phtml +++ b/app/layout/aside_stats.phtml @@ -1,12 +1,12 @@ diff --git a/app/views/configure/archiving.phtml b/app/views/configure/archiving.phtml index c9cc7fe02..3180fe933 100644 --- a/app/views/configure/archiving.phtml +++ b/app/views/configure/archiving.phtml @@ -1,31 +1,31 @@ partial('aside_configure'); ?>
- +
- -

+ +

- +
- -   + +  
- +
() + ?> ()
- +
() + ?> ()
- - + +
- +
-

+

-

nb_total), ' ', Minz_Translate::t('articles'), ', ', formatBytes($this->size_user); ?>

+

nb_total), ' ', _t('articles'), ', ', formatBytes($this->size_user); ?>

- - + +
-

+

size_total); ?>

diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index 8eb3a156b..f1b80ab15 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -1,13 +1,13 @@ partial ('aside_configure'); ?>
- + - +
- +
themes as $theme) { ?>conf->content_width; ?>
- +
- + - - - - - + + + + + - + @@ -80,7 +80,7 @@ - + @@ -93,16 +93,16 @@
- +
- +
- - + +
diff --git a/app/views/configure/reading.phtml b/app/views/configure/reading.phtml index 8b2da2a28..7e4efc264 100644 --- a/app/views/configure/reading.phtml +++ b/app/views/configure/reading.phtml @@ -1,13 +1,13 @@ partial ('aside_configure'); ?>
- +
- +
- +
@@ -15,22 +15,22 @@
- +
- +
@@ -50,7 +50,7 @@
@@ -59,8 +59,8 @@
@@ -69,8 +69,8 @@
@@ -79,8 +79,8 @@
@@ -89,8 +89,8 @@
@@ -99,8 +99,8 @@
@@ -109,48 +109,48 @@
- +
- +
- - + +
diff --git a/app/views/configure/sharing.phtml b/app/views/configure/sharing.phtml index 02ce331da..ee276a94e 100644 --- a/app/views/configure/sharing.phtml +++ b/app/views/configure/sharing.phtml @@ -1,7 +1,7 @@ partial ('aside_configure'); ?>
- + @@ -9,28 +9,28 @@ data-advanced='
- - + +
- +
'> - + conf->sharing as $key => $sharing): ?> conf->shares[$sharing['type']]; ?>
' />
- - + +
- + @@ -42,7 +42,7 @@
@@ -51,8 +51,8 @@
- - + +
diff --git a/app/views/configure/users.phtml b/app/views/configure/users.phtml index 272896fb2..04e662fa3 100644 --- a/app/views/configure/users.phtml +++ b/app/views/configure/users.phtml @@ -1,36 +1,36 @@ partial('aside_configure'); ?>
- +
- +
- +
- +
/>
- +
- +
/> @@ -41,36 +41,36 @@
- + conf->mail_login; ?>
placeholder="alice@example.net" /> - +
- - + +
- +
- +
@@ -80,7 +80,7 @@
@@ -90,7 +90,7 @@
@@ -100,7 +100,7 @@
@@ -108,12 +108,12 @@
- + conf->token; ?>
- /> - +
@@ -123,24 +123,24 @@
- - + +
- +
- +
conf->availableLanguages (); ?> @@ -173,25 +173,25 @@
- +
- +
- +
- + conf->mail_login; ?>
@@ -200,8 +200,8 @@
- - + +
diff --git a/app/views/error/index.phtml b/app/views/error/index.phtml index ef4fbd39d..5e1949800 100644 --- a/app/views/error/index.phtml +++ b/app/views/error/index.phtml @@ -3,7 +3,7 @@

code; ?>

errorMessage; ?>
- +

diff --git a/app/views/feed/add.phtml b/app/views/feed/add.phtml index 849dacac6..17e52a571 100644 --- a/app/views/feed/add.phtml +++ b/app/views/feed/add.phtml @@ -1,16 +1,16 @@ feed) { ?>
-

+

load_ok) { ?> -

+

- + load_ok) { ?>
- +
@@ -18,7 +18,7 @@ feed->description(); if ($desc != '') { ?>
- +
@@ -26,7 +26,7 @@
- +
feed->website(); ?> @@ -35,17 +35,17 @@
- +
- +
- +
- +
- + feed->httpAuth(false); ?>
- +
- +
- +
- - + +
diff --git a/app/views/helpers/feed/update.phtml b/app/views/helpers/feed/update.phtml index 678c5f132..8bd645d11 100644 --- a/app/views/helpers/feed/update.phtml +++ b/app/views/helpers/feed/update.phtml @@ -12,27 +12,27 @@ feed->nbEntries (); ?> feed->inError ()) { ?> -

+

-

+

- +
- +
- +
- +
@@ -41,18 +41,18 @@
- +
- +
- +
feed->priority () > 0 ? ' checked="checked"' : ''; ?> /> - +
@@ -83,7 +83,7 @@
- +
@@ -96,21 +96,21 @@
- +
- +
- +
- +
@@ -150,24 +150,24 @@
- - + +
- +
- +
- - + +
- - + +
diff --git a/app/views/helpers/javascript_vars.phtml b/app/views/helpers/javascript_vars.phtml index 4f7e3db0c..ba02b9fad 100644 --- a/app/views/helpers/javascript_vars.phtml +++ b/app/views/helpers/javascript_vars.phtml @@ -52,10 +52,10 @@ echo 'authType="', $authType, '",', 'url_login="', _url ('index', 'login'), '",', 'url_logout="', _url ('index', 'logout'), '",'; -echo 'str_confirmation_default="', Minz_Translate::t('confirm_action'), '"', ",\n"; -echo 'str_notif_title_articles="', Minz_Translate::t('notif_title_new_articles'), '"', ",\n"; -echo 'str_notif_body_articles="', Minz_Translate::t('notif_body_new_articles'), '"', ",\n"; -echo 'str_category_empty="', Minz_Translate::t('category_empty'), '"', ",\n"; +echo 'str_confirmation_default="', _t('confirm_action'), '"', ",\n"; +echo 'str_notif_title_articles="', _t('notif_title_new_articles'), '"', ",\n"; +echo 'str_notif_body_articles="', _t('notif_body_new_articles'), '"', ",\n"; +echo 'str_category_empty="', _t('category_empty'), '"', ",\n"; echo 'html5_notif_timeout=', $this->conf->html5_notif_timeout,",\n"; diff --git a/app/views/helpers/logs_pagination.phtml b/app/views/helpers/logs_pagination.phtml index e3d14810e..191cfa8de 100755 --- a/app/views/helpers/logs_pagination.phtml +++ b/app/views/helpers/logs_pagination.phtml @@ -9,14 +9,14 @@
  • currentPage > 1) { ?> - « + «
  • currentPage - 1; ?>
  • currentPage > 1) { ?> - +
  • @@ -34,13 +34,13 @@ currentPage + 1; ?>
  • currentPage < $this->nbPage) { ?> - +
  • nbPage; ?>
  • currentPage < $this->nbPage) { ?> - » + »
  • diff --git a/app/views/helpers/view/normal_view.phtml b/app/views/helpers/view/normal_view.phtml index e469edf58..ee745144f 100644 --- a/app/views/helpers/view/normal_view.phtml +++ b/app/views/helpers/view/normal_view.phtml @@ -30,12 +30,12 @@ if (!empty($this->entries)) {
    - +
    entries as $item) { if ($display_today && $item->isDay (FreshRSS_Days::TODAY, $this->today)) { ?>
    currentName; ?>
    entries)) { } if ($display_yesterday && $item->isDay (FreshRSS_Days::YESTERDAY, $this->today)) { ?>
    currentName; ?>
    entries)) { } if ($display_others && $item->isDay (FreshRSS_Days::BEFORE_YESTERDAY, $this->today)) { ?>
    currentName; ?>
    entries)) {

    title (); ?>

    author(); - echo $author != '' ? '
    ' . Minz_Translate::t('by_author', $author) . '
    ' : '', + echo $author != '' ? '
    ' . _t('by_author', $author) . '
    ' : '', $lazyload && $hidePosts ? lazyimg($item->content()) : $item->content(); ?>
    @@ -133,7 +133,7 @@ if (!empty($this->entries)) { - +
    diff --git a/lib/lib_rss.php b/lib/lib_rss.php index 31c9cdbc1..4f6beb9fd 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -77,11 +77,11 @@ function formatBytes($bytes, $precision = 2, $system = 'IEC') { } function timestamptodate ($t, $hour = true) { - $month = Minz_Translate::t (date('M', $t)); + $month = _t(date('M', $t)); if ($hour) { - $date = Minz_Translate::t ('format_date_hour', $month); + $date = _t('format_date_hour', $month); } else { - $date = Minz_Translate::t ('format_date', $month); + $date = _t('format_date', $month); } return @date ($date, $t); @@ -107,7 +107,7 @@ function html_only_entity_decode($text) { function customSimplePie() { $simplePie = new SimplePie(); - $simplePie->set_useragent(Minz_Translate::t('freshrss') . '/' . FRESHRSS_VERSION . ' (' . PHP_OS . '; ' . FRESHRSS_WEBSITE . ') ' . SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION); + $simplePie->set_useragent(_t('freshrss') . '/' . FRESHRSS_VERSION . ' (' . PHP_OS . '; ' . FRESHRSS_WEBSITE . ') ' . SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION); $simplePie->set_cache_location(CACHE_PATH); $simplePie->set_cache_duration(800); $simplePie->strip_htmltags(array( -- cgit v1.2.3 From 9a0d01be0cb627b30424e9f938face34c6c3814d Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 5 Oct 2014 18:24:28 +0200 Subject: Coding style Remove spaces before parenthesis. See https://github.com/marienfressinaud/FreshRSS/issues/655 --- app/Controllers/entryController.php | 78 +++++------ app/Controllers/errorController.php | 28 ++-- app/Controllers/feedController.php | 184 +++++++++++++------------ app/Controllers/indexController.php | 229 ++++++++++++++++--------------- app/Controllers/javascriptController.php | 6 +- app/Controllers/statsController.php | 2 +- 6 files changed, 269 insertions(+), 258 deletions(-) (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php index 048ac1c69..ec90666ed 100755 --- a/app/Controllers/entryController.php +++ b/app/Controllers/entryController.php @@ -1,47 +1,47 @@ view->loginOk) { - Minz_Error::error ( + Minz_Error::error( 403, - array ('error' => array (_t('access_denied'))) + array('error' => array(_t('access_denied'))) ); } - $this->params = array (); + $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'); + $ajax = Minz_Request::param('ajax'); if ($ajax) { - $this->view->_useLayout (false); + $this->view->_useLayout(false); } } - public function lastAction () { - $ajax = Minz_Request::param ('ajax'); + public function lastAction() { + $ajax = Minz_Request::param('ajax'); if (!$ajax && $this->redirect) { - Minz_Request::forward (array ( + Minz_Request::forward(array( 'c' => 'index', 'a' => 'index', 'params' => $this->params ), true); } else { - Minz_Request::_param ('ajax'); + Minz_Request::_param('ajax'); } } - public function readAction () { + 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); + $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) { @@ -50,47 +50,47 @@ class FreshRSS_entry_Controller extends Minz_ActionController { } if (!$get) { - $entryDAO->markReadEntries ($idMax); + $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; + $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 ( + $notif = array( 'type' => 'good', 'content' => _t('feeds_marked_read') ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); } else { - $is_read = (bool)(Minz_Request::param ('is_read', true)); - $entryDAO->markRead ($id, $is_read); + $is_read = (bool)(Minz_Request::param('is_read', true)); + $entryDAO->markRead($id, $is_read); } } - public function bookmarkAction () { + public function bookmarkAction() { $this->redirect = true; - $id = Minz_Request::param ('id'); + $id = Minz_Request::param('id'); if ($id) { $entryDAO = FreshRSS_Factory::createEntryDao(); - $entryDAO->markFavorite ($id, (bool)(Minz_Request::param ('is_favorite', true))); + $entryDAO->markFavorite($id, (bool)(Minz_Request::param('is_favorite', true))); } } @@ -109,11 +109,11 @@ class FreshRSS_entry_Controller extends Minz_ActionController { invalidateHttpCache(); - $notif = array ( + $notif = array( 'type' => 'good', 'content' => _t('optimization_complete') ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); } Minz_Request::forward(array( diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index 64a5c06fd..36312b56c 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -3,20 +3,20 @@ class FreshRSS_error_Controller extends Minz_ActionController { public function indexAction() { switch (Minz_Request::param('code')) { - case 403: - $this->view->code = 'Error 403 - Forbidden'; - break; - case 404: - $this->view->code = 'Error 404 - Not found'; - break; - case 500: - $this->view->code = 'Error 500 - Internal Server Error'; - break; - case 503: - $this->view->code = 'Error 503 - Service Unavailable'; - break; - default: - $this->view->code = 'Error 404 - Not found'; + case 403: + $this->view->code = 'Error 403 - Forbidden'; + break; + case 404: + $this->view->code = 'Error 404 - Not found'; + break; + case 500: + $this->view->code = 'Error 500 - Internal Server Error'; + break; + case 503: + $this->view->code = 'Error 503 - Service Unavailable'; + break; + default: + $this->view->code = 'Error 404 - Not found'; } $errors = Minz_Request::param('logs', array()); diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index 029f9fa68..93a8d7c2e 100755 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -1,27 +1,27 @@ view->loginOk) { // Token is useful in the case that anonymous refresh is forbidden // and CRON task cannot be used with php command so the user can // set a CRON task to refresh his feeds by using token inside url $token = $this->view->conf->token; - $token_param = Minz_Request::param ('token', ''); + $token_param = Minz_Request::param('token', ''); $token_is_ok = ($token != '' && $token == $token_param); - $action = Minz_Request::actionName (); + $action = Minz_Request::actionName(); if (!(($token_is_ok || Minz_Configuration::allowAnonymousRefresh()) && $action === 'actualize') ) { - Minz_Error::error ( + Minz_Error::error( 403, - array ('error' => array (_t('access_denied'))) + array('error' => array(_t('access_denied'))) ); } } } - public function addAction () { + public function addAction() { $url = Minz_Request::param('url_rss', false); if ($url === false) { @@ -32,16 +32,16 @@ class FreshRSS_feed_Controller extends Minz_ActionController { } $feedDAO = FreshRSS_Factory::createFeedDao(); - $this->catDAO = new FreshRSS_CategoryDAO (); - $this->catDAO->checkDefault (); + $this->catDAO = new FreshRSS_CategoryDAO(); + $this->catDAO->checkDefault(); if (Minz_Request::isPost()) { @set_time_limit(300); - $cat = Minz_Request::param ('category', false); + $cat = Minz_Request::param('category', false); if ($cat === 'nc') { - $new_cat = Minz_Request::param ('new_category'); + $new_cat = Minz_Request::param('new_category'); if (empty($new_cat['name'])) { $cat = false; } else { @@ -49,55 +49,55 @@ class FreshRSS_feed_Controller extends Minz_ActionController { } } if ($cat === false) { - $def_cat = $this->catDAO->getDefault (); - $cat = $def_cat->id (); + $def_cat = $this->catDAO->getDefault(); + $cat = $def_cat->id(); } - $user = Minz_Request::param ('http_user'); - $pass = Minz_Request::param ('http_pass'); - $params = array (); + $user = Minz_Request::param('http_user'); + $pass = Minz_Request::param('http_pass'); + $params = array(); $transactionStarted = false; try { - $feed = new FreshRSS_Feed ($url); - $feed->_category ($cat); + $feed = new FreshRSS_Feed($url); + $feed->_category($cat); $httpAuth = ''; if ($user != '' || $pass != '') { $httpAuth = $user . ':' . $pass; } - $feed->_httpAuth ($httpAuth); + $feed->_httpAuth($httpAuth); $feed->load(true); - $values = array ( - 'url' => $feed->url (), - 'category' => $feed->category (), - 'name' => $feed->name (), - 'website' => $feed->website (), - 'description' => $feed->description (), - 'lastUpdate' => time (), - 'httpAuth' => $feed->httpAuth (), + $values = array( + 'url' => $feed->url(), + 'category' => $feed->category(), + 'name' => $feed->name(), + 'website' => $feed->website(), + 'description' => $feed->description(), + 'lastUpdate' => time(), + 'httpAuth' => $feed->httpAuth(), ); - if ($feedDAO->searchByUrl ($values['url'])) { + if ($feedDAO->searchByUrl($values['url'])) { // on est déjà abonné à ce flux - $notif = array ( + $notif = array( 'type' => 'bad', - 'content' => _t('already_subscribed', $feed->name ()) + 'content' => _t('already_subscribed', $feed->name()) ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); } else { - $id = $feedDAO->addFeed ($values); + $id = $feedDAO->addFeed($values); if (!$id) { // problème au niveau de la base de données - $notif = array ( + $notif = array( 'type' => 'bad', - 'content' => _t('feed_not_added', $feed->name ()) + 'content' => _t('feed_not_added', $feed->name()) ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); } else { - $feed->_id ($id); + $feed->_id($id); $feed->faviconPrepare(); $is_read = $this->view->conf->mark_when['reception'] ? 1 : 0; @@ -107,7 +107,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // on calcule la date des articles les plus anciens qu'on accepte $nb_month_old = $this->view->conf->old_entries; - $date_min = time () - (3600 * 24 * 30 * $nb_month_old); + $date_min = time() - (3600 * 24 * 30 * $nb_month_old); //MySQL: http://docs.oracle.com/cd/E17952_01/refman-5.5-en/optimizing-innodb-transaction-management.html //SQLite: http://stackoverflow.com/questions/1711631/how-do-i-improve-the-performance-of-sqlite @@ -129,44 +129,50 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $transactionStarted = false; // ok, ajout terminé - $notif = array ( + $notif = array( 'type' => 'good', - 'content' => _t('feed_added', $feed->name ()) + 'content' => _t('feed_added', $feed->name()) ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); // permet de rediriger vers la page de conf du flux - $params['id'] = $feed->id (); + $params['id'] = $feed->id(); } } } catch (FreshRSS_BadUrl_Exception $e) { - Minz_Log::record ($e->getMessage (), Minz_Log::WARNING); - $notif = array ( + Minz_Log::record($e->getMessage(), Minz_Log::WARNING); + $notif = array( 'type' => 'bad', 'content' => _t('invalid_url', $url) ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); } catch (FreshRSS_Feed_Exception $e) { - Minz_Log::record ($e->getMessage (), Minz_Log::WARNING); - $notif = array ( + Minz_Log::record($e->getMessage(), Minz_Log::WARNING); + $notif = array( 'type' => 'bad', - 'content' => _t('internal_problem_feed', Minz_Url::display(array('a' => 'logs'))) + 'content' => _t('internal_problem_feed', + Minz_Url::display(array('a' => 'logs'))) ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); } catch (Minz_FileNotExistException $e) { // Répertoire de cache n'existe pas - Minz_Log::record ($e->getMessage (), Minz_Log::ERROR); - $notif = array ( + Minz_Log::record($e->getMessage(), Minz_Log::ERROR); + $notif = array( 'type' => 'bad', - 'content' => _t('internal_problem_feed', Minz_Url::display(array('a' => 'logs'))) + 'content' => _t('internal_problem_feed', + Minz_Url::display(array('a' => 'logs'))) ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); } if ($transactionStarted) { - $feedDAO->rollBack (); + $feedDAO->rollBack(); } - Minz_Request::forward (array ('c' => 'subscription', 'a' => 'index', 'params' => $params), true); + Minz_Request::forward(array( + 'c' => 'subscription', + 'a' => 'index', + 'params' => $params + ), true); } else { // GET request so we must ask confirmation to user @@ -201,41 +207,43 @@ class FreshRSS_feed_Controller extends Minz_ActionController { } } - public function truncateAction () { - if (Minz_Request::isPost ()) { - $id = Minz_Request::param ('id'); + public function truncateAction() { + if (Minz_Request::isPost()) { + $id = Minz_Request::param('id'); $feedDAO = FreshRSS_Factory::createFeedDao(); $n = $feedDAO->truncate($id); $notif = array( 'type' => $n === false ? 'bad' : 'good', 'content' => _t('n_entries_deleted', $n) ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); invalidateHttpCache(); - Minz_Request::forward (array ('c' => 'subscription', - 'a' => 'index', - 'params' => array('id' => $id)), true); + Minz_Request::forward(array( + 'c' => 'subscription', + 'a' => 'index', + 'params' => array('id' => $id) + ), true); } } - public function actualizeAction () { + public function actualizeAction() { @set_time_limit(300); $feedDAO = FreshRSS_Factory::createFeedDao(); $entryDAO = FreshRSS_Factory::createEntryDao(); Minz_Session::_param('actualize_feeds', false); - $id = Minz_Request::param ('id'); - $force = Minz_Request::param ('force', false); + $id = Minz_Request::param('id'); + $force = Minz_Request::param('force', false); // on créé la liste des flux à mettre à actualiser // si on veut mettre un flux à jour spécifiquement, on le met // dans la liste, mais seul (permet d'automatiser le traitement) - $feeds = array (); + $feeds = array(); if ($id) { - $feed = $feedDAO->searchById ($id); + $feed = $feedDAO->searchById($id); if ($feed) { - $feeds = array ($feed); + $feeds = array($feed); } } else { $feeds = $feedDAO->listFeedsOrderUpdate($this->view->conf->ttl_default); @@ -243,7 +251,7 @@ 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->old_entries, 1); - $date_min = time () - (3600 * 24 * 30 * $nb_month_old); + $date_min = time() - (3600 * 24 * 30 * $nb_month_old); $i = 0; $flux_update = 0; @@ -263,7 +271,9 @@ class FreshRSS_feed_Controller extends Minz_ActionController { if (count($entries) > 0) { //For this feed, check last n entry GUIDs already in database - $existingGuids = array_fill_keys ($entryDAO->listLastGuidsByFeed ($feed->id (), count($entries) + 10), 1); + $existingGuids = array_fill_keys( + $entryDAO->listLastGuidsByFeed($feed->id(), + count($entries) + 10), 1); $useDeclaredDate = empty($existingGuids); if ($feedHistory == -2) { //default @@ -295,14 +305,14 @@ class FreshRSS_feed_Controller extends Minz_ActionController { if (!$hasTransaction) { $feedDAO->beginTransaction(); } - $nb = $feedDAO->cleanOldEntries ($feed->id (), $date_min, max($feedHistory, count($entries) + 10)); + $nb = $feedDAO->cleanOldEntries($feed->id(), $date_min, max($feedHistory, count($entries) + 10)); if ($nb > 0) { - Minz_Log::record ($nb . ' old entries cleaned in feed [' . $feed->url() . ']', Minz_Log::DEBUG); + Minz_Log::record($nb . ' old entries cleaned in feed [' . $feed->url() . ']', Minz_Log::DEBUG); } } // on indique que le flux vient d'être mis à jour en BDD - $feedDAO->updateLastUpdate ($feed->id (), 0, $hasTransaction); + $feedDAO->updateLastUpdate($feed->id(), 0, $hasTransaction); if ($hasTransaction) { $feedDAO->commit(); } @@ -312,8 +322,8 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $feedDAO->updateFeed($feed->id(), array('url' => $feed->url())); } } catch (FreshRSS_Feed_Exception $e) { - Minz_Log::record ($e->getMessage (), Minz_Log::NOTICE); - $feedDAO->updateLastUpdate ($feed->id (), 1); + Minz_Log::record($e->getMessage(), Minz_Log::NOTICE); + $feedDAO->updateLastUpdate($feed->id(), 1); } $feed->faviconPrepare(); @@ -328,23 +338,23 @@ class FreshRSS_feed_Controller extends Minz_ActionController { } } - $url = array (); + $url = array(); if ($flux_update === 1) { // on a mis un seul flux à jour - $feed = reset ($feeds); - $notif = array ( + $feed = reset($feeds); + $notif = array( 'type' => 'good', - 'content' => _t('feed_actualized', $feed->name ()) + 'content' => _t('feed_actualized', $feed->name()) ); } elseif ($flux_update > 1) { // plusieurs flux on été mis à jour - $notif = array ( + $notif = array( 'type' => 'good', 'content' => _t('n_feeds_actualized', $flux_update) ); } else { // aucun flux n'a été mis à jour, oups - $notif = array ( + $notif = array( 'type' => 'good', 'content' => _t('no_feed_to_refresh') ); @@ -353,26 +363,26 @@ class FreshRSS_feed_Controller extends Minz_ActionController { if ($i === 1) { // Si on a voulu mettre à jour qu'un flux // on filtre l'affichage par ce flux - $feed = reset ($feeds); - $url['params'] = array ('get' => 'f_' . $feed->id ()); + $feed = reset($feeds); + $url['params'] = array('get' => 'f_' . $feed->id()); } - if (Minz_Request::param ('ajax', 0) === 0) { - Minz_Session::_param ('notification', $notif); - Minz_Request::forward ($url, true); + if (Minz_Request::param('ajax', 0) === 0) { + Minz_Session::_param('notification', $notif); + Minz_Request::forward($url, true); } else { // Une requête Ajax met un seul flux à jour. // Comme en principe plusieurs requêtes ont lieu, // on indique que "plusieurs flux ont été mis à jour". // Cela permet d'avoir une notification plus proche du // ressenti utilisateur - $notif = array ( + $notif = array( 'type' => 'good', 'content' => _t('feeds_actualized') ); - Minz_Session::_param ('notification', $notif); + Minz_Session::_param('notification', $notif); // et on désactive le layout car ne sert à rien - $this->view->_useLayout (false); + $this->view->_useLayout(false); } } diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index 346739523..73638acb3 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -3,18 +3,18 @@ class FreshRSS_index_Controller extends Minz_ActionController { private $nb_not_read_cat = 0; - public function indexAction () { - $output = Minz_Request::param ('output'); + public function indexAction() { + $output = Minz_Request::param('output'); $token = $this->view->conf->token; // check if user is logged in if (!$this->view->loginOk && !Minz_Configuration::allowAnonymous()) { - $token_param = Minz_Request::param ('token', ''); + $token_param = Minz_Request::param('token', ''); $token_is_ok = ($token != '' && $token === $token_param); if ($output === 'rss' && !$token_is_ok) { - Minz_Error::error ( + Minz_Error::error( 403, - array ('error' => array (_t('access_denied'))) + array('error' => array(_t('access_denied'))) ); return; } elseif ($output !== 'rss') { @@ -25,12 +25,12 @@ class FreshRSS_index_Controller extends Minz_ActionController { } } - $params = Minz_Request::params (); - if (isset ($params['search'])) { - $params['search'] = urlencode ($params['search']); + $params = Minz_Request::params(); + if (isset($params['search'])) { + $params['search'] = urlencode($params['search']); } - $this->view->url = array ( + $this->view->url = array( 'c' => 'index', 'a' => 'index', 'params' => $params @@ -38,31 +38,31 @@ class FreshRSS_index_Controller extends Minz_ActionController { if ($output === 'rss') { // no layout for RSS output - $this->view->_useLayout (false); + $this->view->_useLayout(false); header('Content-Type: application/rss+xml; charset=utf-8'); } elseif ($output === 'global') { - Minz_View::appendScript (Minz_Url::display ('/scripts/global_view.js?' . @filemtime(PUBLIC_PATH . '/scripts/global_view.js'))); + Minz_View::appendScript(Minz_Url::display('/scripts/global_view.js?' . @filemtime(PUBLIC_PATH . '/scripts/global_view.js'))); } $catDAO = new FreshRSS_CategoryDAO(); $entryDAO = FreshRSS_Factory::createEntryDao(); - $this->view->cat_aside = $catDAO->listCategories (); - $this->view->nb_favorites = $entryDAO->countUnreadReadFavorites (); + $this->view->cat_aside = $catDAO->listCategories(); + $this->view->nb_favorites = $entryDAO->countUnreadReadFavorites(); $this->view->nb_not_read = FreshRSS_CategoryDAO::CountUnreads($this->view->cat_aside, 1); $this->view->currentName = ''; $this->view->get_c = ''; $this->view->get_f = ''; - $get = Minz_Request::param ('get', 'a'); + $get = Minz_Request::param('get', 'a'); $getType = $get[0]; - $getId = substr ($get, 2); - if (!$this->checkAndProcessType ($getType, $getId)) { - Minz_Log::record ('Not found [' . $getType . '][' . $getId . ']', Minz_Log::DEBUG); - Minz_Error::error ( + $getId = substr($get, 2); + if (!$this->checkAndProcessType($getType, $getId)) { + Minz_Log::record('Not found [' . $getType . '][' . $getId . ']', Minz_Log::DEBUG); + Minz_Error::error( 404, - array ('error' => array (_t('page_not_found'))) + array('error' => array(_t('page_not_found'))) ); return; } @@ -77,11 +77,11 @@ class FreshRSS_index_Controller extends Minz_ActionController { // On récupère les différents éléments de filtrage $this->view->state = Minz_Request::param('state', $this->view->conf->default_view); - $state_param = Minz_Request::param ('state', null); - $filter = Minz_Request::param ('search', ''); - $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', ''); + $state_param = Minz_Request::param('state', null); + $filter = Minz_Request::param('search', ''); + $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', ''); $ajax_request = Minz_Request::param('ajax', false); if ($output === 'reader') { @@ -90,23 +90,24 @@ class FreshRSS_index_Controller extends Minz_ActionController { if ($this->view->state === FreshRSS_Entry::STATE_NOT_READ) { //Any unread article in this category at all? switch ($getType) { - case 'a': - $hasUnread = $this->view->nb_not_read > 0; - break; - case 's': - // This is deprecated. The favorite button does not exist anymore - $hasUnread = $this->view->nb_favorites['unread'] > 0; - break; - case 'c': - $hasUnread = (!isset($this->view->cat_aside[$getId])) || ($this->view->cat_aside[$getId]->nbNotRead() > 0); - break; - case 'f': - $myFeed = FreshRSS_CategoryDAO::findFeed($this->view->cat_aside, $getId); - $hasUnread = ($myFeed === null) || ($myFeed->nbNotRead() > 0); - break; - default: - $hasUnread = true; - break; + case 'a': + $hasUnread = $this->view->nb_not_read > 0; + break; + case 's': + // This is deprecated. The favorite button does not exist anymore + $hasUnread = $this->view->nb_favorites['unread'] > 0; + break; + case 'c': + $hasUnread = (!isset($this->view->cat_aside[$getId]) || + $this->view->cat_aside[$getId]->nbNotRead() > 0); + break; + case 'f': + $myFeed = FreshRSS_CategoryDAO::findFeed($this->view->cat_aside, $getId); + $hasUnread = ($myFeed === null) || ($myFeed->nbNotRead() > 0); + break; + default: + $hasUnread = true; + break; } if (!$hasUnread && ($state_param === null)) { $this->view->state = FreshRSS_Entry::STATE_ALL; @@ -142,10 +143,10 @@ class FreshRSS_index_Controller extends Minz_ActionController { $this->view->entries = $entries; } catch (FreshRSS_EntriesGetter_Exception $e) { - Minz_Log::record ($e->getMessage (), Minz_Log::NOTICE); - Minz_Error::error ( + Minz_Log::record($e->getMessage(), Minz_Log::NOTICE); + Minz_Error::error( 404, - array ('error' => array (_t('page_not_found'))) + array('error' => array(_t('page_not_found'))) ); } } @@ -155,98 +156,98 @@ class FreshRSS_index_Controller extends Minz_ActionController { * + Initialise correctement les variables de vue get_c et get_f * + Met à jour la variable $this->nb_not_read_cat */ - private function checkAndProcessType ($getType, $getId) { - switch ($getType) { - case 'a': - $this->view->currentName = _t('your_rss_feeds'); - $this->nb_not_read_cat = $this->view->nb_not_read; - $this->view->get_c = $getType; + private function checkAndProcessType($getType, $getId) { + switch($getType) { + case 'a': + $this->view->currentName = _t('your_rss_feeds'); + $this->nb_not_read_cat = $this->view->nb_not_read; + $this->view->get_c = $getType; + return true; + case 's': + $this->view->currentName = _t('your_favorites'); + $this->nb_not_read_cat = $this->view->nb_favorites['unread']; + $this->view->get_c = $getType; + return true; + case 'c': + $cat = isset($this->view->cat_aside[$getId]) ? $this->view->cat_aside[$getId] : null; + if ($cat === null) { + $catDAO = new FreshRSS_CategoryDAO(); + $cat = $catDAO->searchById($getId); + } + if ($cat) { + $this->view->currentName = $cat->name(); + $this->nb_not_read_cat = $cat->nbNotRead(); + $this->view->get_c = $getId; return true; - case 's': - $this->view->currentName = _t('your_favorites'); - $this->nb_not_read_cat = $this->view->nb_favorites['unread']; - $this->view->get_c = $getType; + } else { + return false; + } + case 'f': + $feed = FreshRSS_CategoryDAO::findFeed($this->view->cat_aside, $getId); + if (empty($feed)) { + $feedDAO = FreshRSS_Factory::createFeedDao(); + $feed = $feedDAO->searchById($getId); + } + if ($feed) { + $this->view->currentName = $feed->name(); + $this->nb_not_read_cat = $feed->nbNotRead(); + $this->view->get_f = $getId; + $this->view->get_c = $feed->category(); return true; - case 'c': - $cat = isset($this->view->cat_aside[$getId]) ? $this->view->cat_aside[$getId] : null; - if ($cat === null) { - $catDAO = new FreshRSS_CategoryDAO(); - $cat = $catDAO->searchById($getId); - } - if ($cat) { - $this->view->currentName = $cat->name (); - $this->nb_not_read_cat = $cat->nbNotRead (); - $this->view->get_c = $getId; - return true; - } else { - return false; - } - case 'f': - $feed = FreshRSS_CategoryDAO::findFeed($this->view->cat_aside, $getId); - if (empty($feed)) { - $feedDAO = FreshRSS_Factory::createFeedDao(); - $feed = $feedDAO->searchById($getId); - } - if ($feed) { - $this->view->currentName = $feed->name (); - $this->nb_not_read_cat = $feed->nbNotRead (); - $this->view->get_f = $getId; - $this->view->get_c = $feed->category (); - return true; - } else { - return false; - } - default: + } else { return false; + } + default: + return false; } } - public function aboutAction () { - Minz_View::prependTitle (_t('about') . ' · '); + public function aboutAction() { + Minz_View::prependTitle(_t('about') . ' · '); } - public function logsAction () { + public function logsAction() { if (!$this->view->loginOk) { - Minz_Error::error ( + Minz_Error::error( 403, - array ('error' => array (_t('access_denied'))) + array('error' => array(_t('access_denied'))) ); } - Minz_View::prependTitle (_t('logs') . ' · '); + Minz_View::prependTitle(_t('logs') . ' · '); - if (Minz_Request::isPost ()) { + if (Minz_Request::isPost()) { FreshRSS_LogDAO::truncate(); } $logs = FreshRSS_LogDAO::lines(); //TODO: ask only the necessary lines //gestion pagination - $page = Minz_Request::param ('page', 1); - $this->view->logsPaginator = new Minz_Paginator ($logs); - $this->view->logsPaginator->_nbItemsPerPage (50); - $this->view->logsPaginator->_currentPage ($page); + $page = Minz_Request::param('page', 1); + $this->view->logsPaginator = new Minz_Paginator($logs); + $this->view->logsPaginator->_nbItemsPerPage(50); + $this->view->logsPaginator->_currentPage($page); } - public function loginAction () { - $this->view->_useLayout (false); + public function loginAction() { + $this->view->_useLayout(false); $url = 'https://verifier.login.persona.org/verify'; - $assert = Minz_Request::param ('assertion'); + $assert = Minz_Request::param('assertion'); $params = 'assertion=' . $assert . '&audience=' . - urlencode (Minz_Url::display (null, 'php', true)); - $ch = curl_init (); - $options = array ( + urlencode(Minz_Url::display(null, 'php', true)); + $ch = curl_init(); + $options = array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_POST => 2, CURLOPT_POSTFIELDS => $params ); - curl_setopt_array ($ch, $options); - $result = curl_exec ($ch); - curl_close ($ch); + curl_setopt_array($ch, $options); + $result = curl_exec($ch); + curl_close($ch); - $res = json_decode ($result, true); + $res = json_decode($result, true); $loginOk = false; $reason = ''; @@ -273,21 +274,21 @@ class FreshRSS_index_Controller extends Minz_ActionController { } if ($loginOk) { Minz_Session::_param('currentUser', $currentUser); - Minz_Session::_param ('mail', $email); + Minz_Session::_param('mail', $email); $this->view->loginOk = true; invalidateHttpCache(); } else { - $res = array (); + $res = array(); $res['status'] = 'failure'; $res['reason'] = $reason == '' ? _t('invalid_login') : $reason; - Minz_Log::record ('Persona: ' . $res['reason'], Minz_Log::WARNING); + Minz_Log::record('Persona: ' . $res['reason'], Minz_Log::WARNING); } header('Content-Type: application/json; charset=UTF-8'); - $this->view->res = json_encode ($res); + $this->view->res = json_encode($res); } - public function logoutAction () { + public function logoutAction() { $this->view->_useLayout(false); invalidateHttpCache(); Minz_Session::_param('currentUser'); @@ -330,7 +331,7 @@ class FreshRSS_index_Controller extends Minz_ActionController { } } - public function formLoginAction () { + public function formLoginAction() { if ($this->view->loginOk) { Minz_Request::forward(array('c' => 'index', 'a' => 'index'), true); } @@ -401,15 +402,15 @@ class FreshRSS_index_Controller extends Minz_ActionController { } Minz_Request::forward(array('c' => 'index', 'a' => 'index'), true); } elseif (!Minz_Configuration::canLogIn()) { - Minz_Error::error ( + Minz_Error::error( 403, - array ('error' => array (_t('access_denied'))) + array('error' => array(_t('access_denied'))) ); } invalidateHttpCache(); } - public function formLogoutAction () { + public function formLogoutAction() { $this->view->_useLayout(false); invalidateHttpCache(); Minz_Session::_param('currentUser'); diff --git a/app/Controllers/javascriptController.php b/app/Controllers/javascriptController.php index 67148350f..2a0dbd3d9 100755 --- a/app/Controllers/javascriptController.php +++ b/app/Controllers/javascriptController.php @@ -1,11 +1,11 @@ view->_useLayout (false); + public function firstAction() { + $this->view->_useLayout(false); } - public function actualizeAction () { + public function actualizeAction() { header('Content-Type: text/javascript; charset=UTF-8'); $feedDAO = FreshRSS_Factory::createFeedDao(); $this->view->feeds = $feedDAO->listFeedsOrderUpdate($this->view->conf->ttl_default); diff --git a/app/Controllers/statsController.php b/app/Controllers/statsController.php index 4adb5e75d..99c57c809 100644 --- a/app/Controllers/statsController.php +++ b/app/Controllers/statsController.php @@ -99,7 +99,7 @@ class FreshRSS_stats_Controller extends Minz_ActionController { $categoryDAO = new FreshRSS_CategoryDAO(); $feedDAO = FreshRSS_Factory::createFeedDao(); Minz_View::appendScript(Minz_Url::display('/scripts/flotr2.min.js?' . @filemtime(PUBLIC_PATH . '/scripts/flotr2.min.js'))); - $id = Minz_Request::param ('id', null); + $id = Minz_Request::param('id', null); $this->view->categories = $categoryDAO->listCategories(); $this->view->feed = $feedDAO->searchById($id); $this->view->days = $statsDAO->getDays(); -- cgit v1.2.3 From f5a95d383c056fddd86e34024cba3444b527730d Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 5 Oct 2014 21:16:06 +0200 Subject: Coding style errorController --- app/Controllers/errorController.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index 36312b56c..bb3431c2b 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -23,13 +23,13 @@ class FreshRSS_error_Controller extends Minz_ActionController { $this->view->errorMessage = trim(implode($errors)); if ($this->view->errorMessage == '') { switch(Minz_Request::param('code')) { - case 403: - $this->view->errorMessage = _t('forbidden_access'); - break; - case 404: - default: - $this->view->errorMessage = _t('page_not_found'); - break; + case 403: + $this->view->errorMessage = _t('forbidden_access'); + break; + case 404: + default: + $this->view->errorMessage = _t('page_not_found'); + break; } } -- cgit v1.2.3 From 34151ea1ae2107d4b5d96cefe8f4b2dc1ae3b70f Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Mon, 6 Oct 2014 13:12:36 +0200 Subject: Add comments in error and importExport controllers See https://github.com/marienfressinaud/FreshRSS/issues/655 --- app/Controllers/errorController.php | 17 +++- app/Controllers/importExportController.php | 149 ++++++++++++++++++++++++----- 2 files changed, 140 insertions(+), 26 deletions(-) (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index bb3431c2b..76ab930e0 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -1,8 +1,21 @@ view->code = 'Error 403 - Forbidden'; break; @@ -22,7 +35,7 @@ class FreshRSS_error_Controller extends Minz_ActionController { $errors = Minz_Request::param('logs', array()); $this->view->errorMessage = trim(implode($errors)); if ($this->view->errorMessage == '') { - switch(Minz_Request::param('code')) { + switch($code_int) { case 403: $this->view->errorMessage = _t('forbidden_access'); break; diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index f329766b8..57759f277 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -1,6 +1,14 @@ view->loginOk) { Minz_Error::error( @@ -16,13 +24,23 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $this->feedDAO = FreshRSS_Factory::createFeedDao(); } + /** + * This action displays the main page for import / export system. + */ public function indexAction() { - $this->view->categories = $this->catDAO->listCategories(); $this->view->feeds = $this->feedDAO->listFeeds(); - Minz_View::prependTitle(_t('import_export') . ' · '); } + /** + * This action handles import action. + * + * It must be reached by a POST request. + * + * Parameter is: + * - file (default: nothing!) + * Available file types are: zip, json or xml. + */ public function importAction() { if (!Minz_Request::isPost()) { Minz_Request::forward(array('c' => 'importExport', 'a' => 'index'), true); @@ -92,10 +110,10 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $error = $this->importOpml($opml_file); } foreach ($list_files['json_starred'] as $article_file) { - $error = $this->importArticles($article_file, true); + $error = $this->importJson($article_file, true); } foreach ($list_files['json_feed'] as $article_file) { - $error = $this->importArticles($article_file); + $error = $this->importJson($article_file); } // And finally, we get import status and redirect to the home page @@ -105,11 +123,15 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { Minz_Request::good($content_notif); } + /** + * This method tries to guess the file type based on its name. + * + * Itis a *very* basic guess file type function. Only based on filename. + * That's could be improved but should be enough for what we have to do. + * + * @todo move into lib_rss.php + */ private function guessFileType($filename) { - // A *very* basic guess file type function. Only based on filename - // That's could be improved but should be enough, at least for a first - // implementation. - if (substr_compare($filename, '.zip', -4) === 0) { return 'zip'; } elseif (substr_compare($filename, '.opml', -5) === 0 || @@ -125,6 +147,12 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { } } + /** + * This method parses and imports an OPML file. + * + * @param string $opml_file the OPML file content. + * @return boolean true if an error occured, false else. + */ private function importOpml($opml_file) { $opml_array = array(); try { @@ -139,13 +167,22 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $this->addOpmlElements($opml_array['body']); } + /** + * This method imports an OPML file based on its body. + * + * @param array $opml_elements an OPML element (body or outline). + * @param string $parent_cat the name of the parent category. + * @return boolean true if an error occured, false else. + */ private function addOpmlElements($opml_elements, $parent_cat = null) { $error = false; foreach ($opml_elements as $elt) { $res = false; if (isset($elt['xmlUrl'])) { + // If xmlUrl exists, it means it is a feed $res = $this->addFeedOpml($elt, $parent_cat); } else { + // No xmlUrl? It should be a category! $res = $this->addCategoryOpml($elt, $parent_cat); } @@ -158,6 +195,13 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $error; } + /** + * This method imports an OPML feed element. + * + * @param array $feed_elt an OPML element (must be a feed element). + * @param string $parent_cat the name of the parent category. + * @return boolean true if an error occured, false else. + */ private function addFeedOpml($feed_elt, $parent_cat) { if (is_null($parent_cat)) { // This feed has no parent category so we get the default one @@ -165,8 +209,9 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { } $cat = $this->catDAO->searchByName($parent_cat); - if (!$cat) { + // If there is not $cat, it means parent category does not exist in + // database. It should not happened! return true; } @@ -203,6 +248,13 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $error; } + /** + * This method imports an OPML category element. + * + * @param array $cat_elt an OPML element (must be a category element). + * @param string $parent_cat the name of the parent category. + * @return boolean true if an error occured, false else. + */ private function addCategoryOpml($cat_elt, $parent_cat) { // Create a new Category object $cat = new FreshRSS_Category(Minz_Helper::htmlspecialchars_utf8($cat_elt['text'])); @@ -223,7 +275,14 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $error; } - private function importArticles($article_file, $starred = false) { + /** + * This method import a JSON-based file (Google Reader format). + * + * @param string $article_file the JSON file content. + * @param boolean $starred true if articles from the file must be starred. + * @return boolean true if an error occured, false else. + */ + private function importJson($article_file, $starred = false) { $article_object = json_decode($article_file, true); if (is_null($article_object)) { Minz_Log::warning('Try to import a non-JSON file'); @@ -232,16 +291,14 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $is_read = $this->view->conf->mark_when['reception'] ? 1 : 0; - $google_compliant = ( - strpos($article_object['id'], 'com.google') !== false - ); + $google_compliant = strpos($article_object['id'], 'com.google') !== false; $error = false; $article_to_feed = array(); // First, we check feeds of articles are in DB (and add them if needed). foreach ($article_object['items'] as $item) { - $feed = $this->addFeedArticles($item['origin'], $google_compliant); + $feed = $this->addFeedJson($item['origin'], $google_compliant); if (is_null($feed)) { $error = true; } else { @@ -254,6 +311,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $this->entryDAO->beginTransaction(); foreach ($article_object['items'] as $item) { if (!isset($article_to_feed[$item['id']])) { + // Related feed does not exist for this entry, do nothing. continue; } @@ -263,6 +321,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { 'summary' : 'content'; $tags = $item['categories']; if ($google_compliant) { + // Remove tags containing "/state/com.google" which are useless. $tags = array_filter($tags, function($var) { return strpos($var, '/state/com.google') === false; }); @@ -288,7 +347,15 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $error; } - private function addFeedArticles($origin, $google_compliant) { + /** + * This method import a JSON-based feed (Google Reader format). + * + * @param array $origin represents a feed. + * @param boolean $google_compliant takes care of some specific values if true. + * @return FreshRSS_Feed if feed is in database at the end of the process, + * else null. + */ + private function addFeedJson($origin, $google_compliant) { $default_cat = $this->catDAO->getDefault(); $return = null; @@ -298,14 +365,14 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $website = $origin['htmlUrl']; try { - // Create a Feed object and add it in DB + // Create a Feed object and add it in database. $feed = new FreshRSS_Feed($url); $feed->_category($default_cat->id()); $feed->_name($name); $feed->_website($website); // addFeedObject checks if feed is already in DB so nothing else to - // check here + // check here. $id = $this->feedDAO->addFeedObject($feed); if ($id !== false) { @@ -319,6 +386,16 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $return; } + /** + * This action handles export action. + * + * This action must be reached by a POST request. + * + * Parameters are: + * - export_opml (default: false) + * - export_starred (default: false) + * - export_feeds (default: array()) a list of feed ids + */ public function exportAction() { if (!Minz_Request::isPost()) { Minz_Request::forward(array('c' => 'importExport', 'a' => 'index'), true); @@ -336,7 +413,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { } if ($export_starred) { - $export_files['starred.json'] = $this->generateArticles('starred'); + $export_files['starred.json'] = $this->generateEntries('starred'); } foreach ($export_feeds as $feed_id) { @@ -344,9 +421,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { if ($feed) { $filename = 'feed_' . $feed->category() . '_' . $feed->id() . '.json'; - $export_files[$filename] = $this->generateArticles( - 'feed', $feed - ); + $export_files[$filename] = $this->generateEntries('feed', $feed); } } @@ -366,10 +441,16 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $type = $this->guessFileType($filename); $this->exportFile('freshrss_' . $filename, $export_files[$filename], $type); } else { + // Nothing to do... Minz_Request::forward(array('c' => 'importExport', 'a' => 'index'), true); } } + /** + * This method returns the OPML file based on user subscriptions. + * + * @return string the OPML file content. + */ private function generateOpml() { $list = array(); foreach ($this->catDAO->listCategories() as $key => $cat) { @@ -381,7 +462,14 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $this->view->helperToString('export/opml'); } - private function generateArticles($type, $feed = NULL) { + /** + * This method returns a JSON file content. + * + * @param string $type must be "starred" or "feed" + * @param FreshRSS_Feed $feed feed of which we want to get entries. + * @return string the JSON file content. + */ + private function generateEntries($type, $feed = NULL) { $this->view->categories = $this->catDAO->listCategories(); if ($type == 'starred') { @@ -389,8 +477,7 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { $this->view->type = 'starred'; $unread_fav = $this->entryDAO->countUnreadReadFavorites(); $this->view->entries = $this->entryDAO->listWhere( - 's', '', FreshRSS_Entry::STATE_ALL, 'ASC', - $unread_fav['all'] + 's', '', FreshRSS_Entry::STATE_ALL, 'ASC', $unread_fav['all'] ); } elseif ($type == 'feed' && !is_null($feed)) { $this->view->list_title = _t('feed_list', $feed->name()); @@ -405,6 +492,12 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { return $this->view->helperToString('export/articles'); } + /** + * This method zips a list of files and returns it by HTTP. + * + * @param array $files list of files where key is filename and value the content. + * @throws Exception if Zip extension is not loaded. + */ private function exportZip($files) { if (!extension_loaded('zip')) { throw new Exception(); @@ -428,6 +521,14 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { unlink($zip_file); } + /** + * This method returns a single file (OPML or JSON) by HTTP. + * + * @param string $filename + * @param string $content + * @param string $type the file type (opml, json_feed or json_starred). + * If equals to unknown, nothing happens. + */ private function exportFile($filename, $content, $type) { if ($type === 'unknown') { return; -- cgit v1.2.3 From 8a7bab3a55442f85553ab1d897084e89c10f7e05 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Mon, 20 Oct 2014 19:35:22 +0200 Subject: Refactoring of indexController Global view has been moved to a different action (all is not working) See https://github.com/marienfressinaud/FreshRSS/issues/634 and https://github.com/marienfressinaud/FreshRSS/issues/655 --- app/Controllers/errorController.php | 2 +- app/Controllers/indexController.php | 33 +++++++++++++++----- app/layout/nav_menu.phtml | 2 +- app/views/helpers/view/global_view.phtml | 53 -------------------------------- app/views/index/global.phtml | 46 +++++++++++++++++++++++++++ app/views/index/index.phtml | 2 -- lib/lib_rss.php | 4 +++ p/scripts/global_view.js | 3 +- 8 files changed, 79 insertions(+), 66 deletions(-) delete mode 100644 app/views/helpers/view/global_view.phtml create mode 100644 app/views/index/global.phtml (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index 76ab930e0..6c080bea8 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -37,7 +37,7 @@ class FreshRSS_error_Controller extends Minz_ActionController { if ($this->view->errorMessage == '') { switch($code_int) { case 403: - $this->view->errorMessage = _t('forbidden_access'); + $this->view->errorMessage = _t('access_denied'); break; case 404: default: diff --git a/app/Controllers/indexController.php b/app/Controllers/indexController.php index f994e257c..e1ce71b28 100755 --- a/app/Controllers/indexController.php +++ b/app/Controllers/indexController.php @@ -1,5 +1,8 @@ array(_t('access_denied'))) - ); + Minz_Error::error(403); return; } elseif ($output !== 'rss') { // "hard" redirection is not required, just ask dispatcher to @@ -201,17 +201,34 @@ class FreshRSS_index_Controller extends Minz_ActionController { return false; } } + + /** + * This action displays the global view of FreshRSS. + */ + public function globalAction() { + if (!FreshRSS_Auth::hasAccess() && !Minz_Configuration::allowAnonymous()) { + Minz_Error::error(403); + } + + Minz_View::appendScript(Minz_Url::display('/scripts/global_view.js?' . @filemtime(PUBLIC_PATH . '/scripts/global_view.js'))); + + $catDAO = new FreshRSS_CategoryDAO(); + $this->view->categories = $catDAO->listCategories(); + } + /** + * This action displays the about page of FreshRSS. + */ public function aboutAction() { Minz_View::prependTitle(_t('about') . ' · '); } + /** + * This action displays logs of FreshRSS for the current user. + */ public function logsAction() { if (!FreshRSS_Auth::hasAccess()) { - Minz_Error::error( - 403, - array('error' => array(_t('access_denied'))) - ); + Minz_Error::error(403); } Minz_View::prependTitle(_t('logs') . ' · '); diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index bb9468ab1..1a26422df 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -240,7 +240,7 @@ - + diff --git a/app/views/helpers/view/global_view.phtml b/app/views/helpers/view/global_view.phtml deleted file mode 100644 index ae8af820d..000000000 --- a/app/views/helpers/view/global_view.phtml +++ /dev/null @@ -1,53 +0,0 @@ -partial('nav_menu'); ?> - -entries)) { ?> -
    - 'index', 'a' => 'index', 'params' => array()); - if (FreshRSS_Context::$conf->view_mode !== 'normal') { - $arUrl['params']['output'] = 'normal'; - } - $p = Minz_Request::param('state', ''); - if (($p != '') && (FreshRSS_Context::$conf->default_view !== $p)) { - $arUrl['params']['state'] = $p; - } - - foreach ($this->cat_aside as $cat) { - $feeds = $cat->feeds(); - if (!empty($feeds)) { -?> -
    - - -
    - -
    - -
    -
    display_posts ? '' : ' class="hide_posts"'; ?>> - -
    - - -
    -

    -

    -
    - diff --git a/app/views/index/global.phtml b/app/views/index/global.phtml new file mode 100644 index 000000000..a72e431df --- /dev/null +++ b/app/views/index/global.phtml @@ -0,0 +1,46 @@ +partial('nav_menu'); ?> + +
    + 'index', + 'a' => 'index', + 'params' => array( + 'state' => FreshRSS_Context::$state + ) + ); + + foreach ($this->categories as $cat) { + $feeds = $cat->feeds(); + $url_base['params']['get'] = 'c_' . $cat->id(); + + if (!empty($feeds)) { +?> +
    + + +
      + nbNotRead(); + $error = $feed->inError() ? 'error ' : ''; + $empty = $feed->nbEntries() === 0 ? 'empty ' : ''; + $url_base['params']['get'] = 'f_' . $feed->id(); + ?> +
    • + ✇ + name(); ?> +
    • + +
    +
    + +
    + +
    +
    display_posts ? '' : ' class="hide_posts"'; ?>> + +
    diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml index a59063557..8b93461dd 100644 --- a/app/views/index/index.phtml +++ b/app/views/index/index.phtml @@ -7,8 +7,6 @@ if (FreshRSS_Auth::hasAccess() || Minz_Configuration::allowAnonymous()) { $this->renderHelper('view/normal_view'); } elseif ($output === 'reader') { $this->renderHelper('view/reader_view'); - } elseif ($output === 'global') { - $this->renderHelper('view/global_view'); } elseif ($output === 'rss') { $this->renderHelper('view/rss_view'); } else { diff --git a/lib/lib_rss.php b/lib/lib_rss.php index 9abdf18ce..80eb206d2 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -60,6 +60,10 @@ function formatNumber($n, $precision = 0) { return str_replace(' ', ' ', //Espace insécable //TODO: remplacer par une espace _fine_ insécable number_format($n, $precision, '.', ' ')); //number_format does not seem to be Unicode-compatible } +function format_number($n, $precision = 0) { + // TODO: coding style, prefer THIS function. Remove formatNumber. + return formatNumber($n, $precision); +} function formatBytes($bytes, $precision = 2, $system = 'IEC') { if ($system === 'IEC') { diff --git a/p/scripts/global_view.js b/p/scripts/global_view.js index 6e1f61066..8c2e6c1a2 100644 --- a/p/scripts/global_view.js +++ b/p/scripts/global_view.js @@ -50,7 +50,8 @@ function init_close_panel() { } function init_global_view() { - $("#stream .box-category a").click(function () { + // TODO: should be based on generic classes. + $(".box a").click(function () { var link = $(this).attr("href"); load_panel(link); -- cgit v1.2.3 From fee1ae997af678cb834d9db25a636032f43a5674 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 11 Dec 2014 19:02:05 +0100 Subject: Fix i18n for conf, entry, error, feed Controllers --- app/Controllers/authController.php | 8 +++---- app/Controllers/configureController.php | 30 ++++++++++++------------ app/Controllers/entryController.php | 6 ++--- app/Controllers/errorController.php | 4 ++-- app/Controllers/feedController.php | 37 ++++++++++++++++-------------- app/Controllers/subscriptionController.php | 4 ++-- app/i18n/en/admin.php | 4 ++++ app/i18n/en/conf.php | 21 ++++++++++++++++- app/i18n/en/feedback.php | 26 +++++++++++++++++++-- app/i18n/en/gen.php | 20 ---------------- app/i18n/en/sub.php | 1 + app/i18n/fr/admin.php | 4 ++++ app/i18n/fr/conf.php | 21 ++++++++++++++++- app/i18n/fr/feedback.php | 28 +++++++++++++++++++--- app/i18n/fr/gen.php | 23 +------------------ app/i18n/fr/sub.php | 1 + 16 files changed, 146 insertions(+), 92 deletions(-) (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/authController.php b/app/Controllers/authController.php index 55481f859..ccc32ec0d 100644 --- a/app/Controllers/authController.php +++ b/app/Controllers/authController.php @@ -22,7 +22,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { Minz_Error::error(403); } - Minz_View::prependTitle(_t('gen.auth.title') . ' · '); + Minz_View::prependTitle(_t('admin.auth.title') . ' · '); if (Minz_Request::isPost()) { $ok = true; @@ -56,10 +56,10 @@ class FreshRSS_auth_Controller extends Minz_ActionController { invalidateHttpCache(); if ($ok) { - Minz_Request::good(_t('feedback.configuration.updated'), + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'auth', 'a' => 'index')); } else { - Minz_Request::bad(_t('feedback.configuration.error'), + Minz_Request::bad(_t('feedback.conf.error'), array('c' => 'auth', 'a' => 'index')); } } @@ -285,7 +285,7 @@ class FreshRSS_auth_Controller extends Minz_ActionController { * After reseting, form auth is set by default. */ public function resetAction() { - Minz_View::prependTitle(_t('feedback.auth.title_reset') . ' · '); + Minz_View::prependTitle(_t('admin.auth.title_reset') . ' · '); Minz_View::appendScript(Minz_Url::display( '/scripts/bcrypt.min.js?' . @filemtime(PUBLIC_PATH . '/scripts/bcrypt.min.js') diff --git a/app/Controllers/configureController.php b/app/Controllers/configureController.php index 561544578..feb5483fb 100755 --- a/app/Controllers/configureController.php +++ b/app/Controllers/configureController.php @@ -61,13 +61,13 @@ class FreshRSS_configure_Controller extends Minz_ActionController { Minz_Translate::reset(); invalidateHttpCache(); - Minz_Request::good(_t('configuration_updated'), + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'configure', 'a' => 'display')); } $this->view->themes = FreshRSS_Themes::get(); - Minz_View::prependTitle(_t('display_configuration') . ' · '); + Minz_View::prependTitle(_t('conf.display.title') . ' · '); } /** @@ -125,11 +125,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController { Minz_Translate::reset(); invalidateHttpCache(); - Minz_Request::good(_t('configuration_updated'), + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'configure', 'a' => 'reading')); } - Minz_View::prependTitle(_t('reading_configuration') . ' · '); + Minz_View::prependTitle(_t('conf.reading.title') . ' · '); } /** @@ -146,11 +146,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController { FreshRSS_Context::$conf->save(); invalidateHttpCache(); - Minz_Request::good(_t('configuration_updated'), + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'configure', 'a' => 'sharing')); } - Minz_View::prependTitle(_t('sharing') . ' · '); + Minz_View::prependTitle(_t('conf.sharing.title') . ' · '); } /** @@ -188,11 +188,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController { FreshRSS_Context::$conf->save(); invalidateHttpCache(); - Minz_Request::good(_t('shortcuts_updated'), + Minz_Request::good(_t('feedback.conf.shortcuts_updated'), array('c' => 'configure', 'a' => 'shortcut')); } - Minz_View::prependTitle(_t('shortcuts') . ' · '); + Minz_View::prependTitle(_t('conf.shortcut.title') . ' · '); } /** @@ -218,11 +218,11 @@ class FreshRSS_configure_Controller extends Minz_ActionController { FreshRSS_Context::$conf->save(); invalidateHttpCache(); - Minz_Request::good(_t('configuration_updated'), + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'configure', 'a' => 'archiving')); } - Minz_View::prependTitle(_t('archiving_configuration') . ' · '); + Minz_View::prependTitle(_t('conf.archiving.title') . ' · '); $entryDAO = FreshRSS_Factory::createEntryDao(); $this->view->nb_total = $entryDAO->count(); @@ -249,13 +249,13 @@ class FreshRSS_configure_Controller extends Minz_ActionController { foreach ($queries as $key => $query) { if (!$query['name']) { - $query['name'] = _t('query_number', $key + 1); + $query['name'] = _t('conf.query.number', $key + 1); } } FreshRSS_Context::$conf->_queries($queries); FreshRSS_Context::$conf->save(); - Minz_Request::good(_t('configuration_updated'), + Minz_Request::good(_t('feedback.conf.updated'), array('c' => 'configure', 'a' => 'queries')); } else { $this->view->query_get = array(); @@ -317,7 +317,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController { } } - Minz_View::prependTitle(_t('queries') . ' · '); + Minz_View::prependTitle(_t('conf.query.title') . ' · '); } /** @@ -331,7 +331,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController { $whitelist = array('get', 'order', 'name', 'search', 'state'); $queries = FreshRSS_Context::$conf->queries; $query = Minz_Request::params(); - $query['name'] = _t('query_number', count($queries) + 1); + $query['name'] = _t('conf.query.number', count($queries) + 1); foreach ($query as $key => $value) { if (!in_array($key, $whitelist)) { unset($query[$key]); @@ -341,7 +341,7 @@ class FreshRSS_configure_Controller extends Minz_ActionController { FreshRSS_Context::$conf->_queries($queries); FreshRSS_Context::$conf->save(); - Minz_Request::good(_t('query_created', $query['name']), + Minz_Request::good(_t('feedback.conf.query_created', $query['name']), array('c' => 'configure', 'a' => 'queries')); } } diff --git a/app/Controllers/entryController.php b/app/Controllers/entryController.php index b4beed619..c894ae9aa 100755 --- a/app/Controllers/entryController.php +++ b/app/Controllers/entryController.php @@ -85,7 +85,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { } if (!$this->ajax) { - Minz_Request::good(_t('feeds_marked_read'), array( + Minz_Request::good(_t('feedback.sub.feed.marked_read'), array( 'c' => 'index', 'a' => 'index', 'params' => $params, @@ -144,7 +144,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { $feedDAO->updateCachedValues(); invalidateHttpCache(); - Minz_Request::good(_t('optimization_complete'), $url_redirect); + Minz_Request::good(_t('feedback.admin.optimization_complete'), $url_redirect); } /** @@ -185,7 +185,7 @@ class FreshRSS_entry_Controller extends Minz_ActionController { $feedDAO->updateCachedValues(); invalidateHttpCache(); - Minz_Request::good(_t('purge_completed', $nb_total), array( + Minz_Request::good(_t('feedback.sub.purge_completed', $nb_total), array( 'c' => 'configure', 'a' => 'archiving' )); diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index 6c080bea8..06fa186cf 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -37,11 +37,11 @@ class FreshRSS_error_Controller extends Minz_ActionController { if ($this->view->errorMessage == '') { switch($code_int) { case 403: - $this->view->errorMessage = _t('access_denied'); + $this->view->errorMessage = _t('feedback.access.denied'); break; case 404: default: - $this->view->errorMessage = _t('page_not_found'); + $this->view->errorMessage = _t('feedback.access.not_found'); break; } } diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php index c8727c727..121cb8921 100755 --- a/app/Controllers/feedController.php +++ b/app/Controllers/feedController.php @@ -68,7 +68,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $limits = Minz_Configuration::limits(); $this->view->feeds = $feedDAO->listFeeds(); if (count($this->view->feeds) >= $limits['max_feeds']) { - Minz_Request::bad(_t('sub.feeds.over_max', $limits['max_feeds']), + Minz_Request::bad(_t('feedback.sub.feed.over_max', $limits['max_feeds']), $url_redirect); } @@ -110,7 +110,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { } catch (FreshRSS_BadUrl_Exception $e) { // Given url was not a valid url! Minz_Log::warning($e->getMessage()); - Minz_Request::bad(_t('invalid_url', $url), $url_redirect); + Minz_Request::bad(_t('feedback.sub.feed.invalid_url', $url), $url_redirect); } try { @@ -119,20 +119,23 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // Something went bad (timeout, server not found, etc.) Minz_Log::warning($e->getMessage()); Minz_Request::bad( - _t('internal_problem_feed', _url('index', 'logs')), + _t('feedback.sub.feed.internal_problem', _url('index', 'logs')), $url_redirect ); } catch (Minz_FileNotExistException $e) { // Cache directory doesn't exist! Minz_Log::error($e->getMessage()); Minz_Request::bad( - _t('internal_problem_feed', _url('index', 'logs')), + _t('feedback.sub.feed.internal_problem', _url('index', 'logs')), $url_redirect ); } if ($feedDAO->searchByUrl($feed->url())) { - Minz_Request::bad(_t('already_subscribed', $feed->name()), $url_redirect); + Minz_Request::bad( + _t('feedback.sub.feed.already_subscribed', $feed->name()), + $url_redirect + ); } $feed->_category($cat); @@ -151,7 +154,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { $id = $feedDAO->addFeed($values); if (!$id) { // There was an error in database... we cannot say what here. - Minz_Request::bad(_t('feed_not_added', $feed->name()), $url_redirect); + Minz_Request::bad(_t('feedback.sub.feed.not_added', $feed->name()), $url_redirect); } // Ok, feed has been added in database. Now we have to refresh entries. @@ -185,10 +188,10 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // Entries are in DB, we redirect to feed configuration page. $url_redirect['params']['id'] = $feed->id(); - Minz_Request::good(_t('feed_added', $feed->name()), $url_redirect); + Minz_Request::good(_t('feedback.sub.feed.added', $feed->name()), $url_redirect); } else { // GET request: we must ask confirmation to user before adding feed. - Minz_View::prependTitle(_t('add_rss_feed') . ' · '); + Minz_View::prependTitle(_t('sub.feed.title_add') . ' · '); $this->view->categories = $this->catDAO->listCategories(false); $this->view->feed = new FreshRSS_Feed($url); @@ -204,7 +207,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { if ($feed) { // Already subscribe so we redirect to the feed configuration page. $url_redirect['params']['id'] = $feed->id(); - Minz_Request::good(_t('already_subscribed', $feed->name()), $url_redirect); + Minz_Request::good(_t('feedback.sub.feed.already_subscribed', $feed->name()), $url_redirect); } } } @@ -234,9 +237,9 @@ class FreshRSS_feed_Controller extends Minz_ActionController { invalidateHttpCache(); if ($n === false) { - Minz_Request::bad(_t('error_occurred'), $url_redirect); + Minz_Request::bad(_t('feedback.sub.feed.error'), $url_redirect); } else { - Minz_Request::good(_t('n_entries_deleted', $n), $url_redirect); + Minz_Request::good(_t('feedback.sub.feed.n_entries_deleted', $n), $url_redirect); } } @@ -381,7 +384,7 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // are several updated feeds. $notif = array( 'type' => 'good', - 'content' => _t('feeds_actualized') + 'content' => _t('feedback.sub.feed.actualizeds') ); Minz_Session::_param('notification', $notif); // No layout in ajax request. @@ -392,13 +395,13 @@ class FreshRSS_feed_Controller extends Minz_ActionController { // Redirect to the main page with correct notification. if ($updated_feeds === 1) { $feed = reset($feeds); - Minz_Request::good(_t('feed_actualized', $feed->name()), array( + Minz_Request::good(_t('feedback.sub.feed.actualized', $feed->name()), array( 'params' => array('get' => 'f_' . $feed->id()) )); } elseif ($updated_feeds > 1) { - Minz_Request::good(_t('n_feeds_actualized', $updated_feeds), array()); + Minz_Request::good(_t('feedback.sub.feed.n_actualized', $updated_feeds), array()); } else { - Minz_Request::good(_t('no_feed_to_refresh'), array()); + Minz_Request::good(_t('feedback.sub.feed.no_refresh'), array()); } } @@ -476,9 +479,9 @@ class FreshRSS_feed_Controller extends Minz_ActionController { FreshRSS_Context::$conf->remove_query_by_get('f_' . $id); FreshRSS_Context::$conf->save(); - Minz_Request::good(_t('feed_deleted'), $redirect_url); + Minz_Request::good(_t('feedback.sub.feed.deleted'), $redirect_url); } else { - Minz_Request::bad(_t('error_occurred'), $redirect_url); + Minz_Request::bad(_t('feedback.sub.feed.error'), $redirect_url); } } } diff --git a/app/Controllers/subscriptionController.php b/app/Controllers/subscriptionController.php index 1ed2b6bbf..6152b7252 100644 --- a/app/Controllers/subscriptionController.php +++ b/app/Controllers/subscriptionController.php @@ -106,9 +106,9 @@ class FreshRSS_subscription_Controller extends Minz_ActionController { $this->view->feed->_category($cat); $this->view->feed->faviconPrepare(); - Minz_Request::good(_t('feedback.sub.feed_updated'), array('c' => 'subscription', 'params' => array('id' => $id))); + Minz_Request::good(_t('feedback.sub.feed.updated'), array('c' => 'subscription', 'params' => array('id' => $id))); } else { - Minz_Request::bad(_t('feedback.sub.error_occurred'), array('c' => 'subscription')); + Minz_Request::bad(_t('feedback.sub.error'), array('c' => 'subscription')); } } } diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php index 2dac57d91..05077cf66 100644 --- a/app/i18n/en/admin.php +++ b/app/i18n/en/admin.php @@ -1,6 +1,10 @@ array( + 'title' => 'Authentication', + 'title_reset' => 'Authentication reset', + ), 'check_install' => array( 'cache' => array( 'nok' => 'Check permissions on ./data/cache directory. HTTP server must have rights to write into', diff --git a/app/i18n/en/conf.php b/app/i18n/en/conf.php index 460804774..0a1aa9f8e 100644 --- a/app/i18n/en/conf.php +++ b/app/i18n/en/conf.php @@ -1,7 +1,26 @@ array( + 'archiving' => array( + 'title' => 'Archiving', + ), + 'display' => array( + 'title' => 'Display', + ), + 'query' => array( + 'number' => 'Query n°%d', + 'title' => 'User queries', + ), + 'reading' => array( + 'title' => 'Reading', + ), + 'sharing' => array( + 'title' => 'Sharing', + ), + 'shortcut' => array( + 'title' => 'Shortcuts', + ), + 'user' => array( 'articles_and_size' => '%s articles (%s)', ), ); diff --git a/app/i18n/en/feedback.php b/app/i18n/en/feedback.php index 148ec1acc..0dcbbe44d 100644 --- a/app/i18n/en/feedback.php +++ b/app/i18n/en/feedback.php @@ -1,6 +1,13 @@ array( + 'optimization_complete' => 'Optimization complete', + ), + 'access' => array( + 'denied' => 'You don’t have permission to access this page', + 'not_found' => 'You are looking for a page which doesn’t exist', + ), 'auth' => array( 'form' => array( 'not_set' => 'A problem occured during authentication system configuration. Please retry later.', @@ -16,9 +23,11 @@ return array( 'no_password_set' => 'Administrator password hasn’t been set. This feature isn’t available.', 'not_persona' => 'Only Persona system can be reset.', ), - 'configuration' => array( - 'updated' => 'Configuration has been updated', + 'conf' => array( 'error' => 'An error occurred during configuration saving', + 'query_created' => 'Query "%s" has been created.', + 'shortcuts_updated' => 'Shortcuts have been updated', + 'updated' => 'Configuration has been updated', ), 'import_export' => array( 'export_no_zip_extension' => 'Zip extension is not present on your server. Please try to export files one by one.', @@ -43,10 +52,23 @@ return array( 'updated' => 'Category has been updated.', ), 'feed' => array( + 'actualized' => '%s has been updated', + 'actualizeds' => 'RSS feeds have been updated', + 'added' => 'RSS feed %s has been added', + 'already_subscribed' => 'You have already subscribed to %s', + 'deleted' => 'Feed has been deleted', 'error' => 'Feed cannot be updated', + 'internal_problem_feed' => 'The RSS feed could not be added. Check FressRSS logs for details.', + 'invalid_url' => 'URL %s is invalid', + 'marked_read' => 'Feeds have been marked as read', + 'n_actualized' => '%d feeds have been updated', + 'n_entries_deleted' => '%d articles have been deleted', + 'no_refresh' => 'There is no feed to refresh…', + 'not_added' => '%s could not be added', 'over_max' => 'You have reached your limit of feeds (%d)', 'updated' => 'Feed has been updated', ), + 'purge_completed' => 'Purge completed (%d articles deleted)', ), 'user_profile' => array( 'updated' => 'Your profile has been modified', diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 48bda04a1..2a858d6a6 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -130,12 +130,10 @@ return array( 'user_profile' => 'Profile', ), 'freshrss' => 'FreshRSS', - 'access_denied' => 'You don’t have permission to access this page', 'activate_sharing' => 'Activate sharing', 'after_onread' => 'After “mark all as read”,', 'allow_anonymous' => 'Allow anonymous reading of the articles of the default user (%s)', 'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles', - 'already_subscribed' => 'You have already subscribed to %s', 'api_enabled' => 'Allow API access (required for mobile apps)', 'archiving_configuration_help' => 'More options are available in the individual stream settings', 'article' => 'Article', @@ -150,7 +148,6 @@ return array( 'auth_form' => 'Web form (traditional, requires JavaScript)', 'auth_none' => 'None (dangerous)', 'auth_persona' => 'Mozilla Persona (modern, requires JavaScript)', - 'auth_reset' => 'Authentication reset', 'auth_token' => 'Authentication token', 'auth_type' => 'Authentication method', 'auth_will_reset' => 'Authentication system will be reset: a form will be used instead of Persona.', @@ -205,13 +202,7 @@ return array( 'explain_token' => 'Allows to access RSS output of the default user without authentication.
    %s?output=rss&token=%s', 'favicons_is_ok' => 'Permissions on favicons directory are good', 'feed' => 'Feed', - 'feed_actualized' => '%s has been updated', - 'feed_added' => 'RSS feed %s has been added', - 'feed_deleted' => 'Feed has been deleted', - 'feed_not_added' => '%s could not be added', 'feeds' => 'Feeds', - 'feeds_actualized' => 'RSS feeds have been updated', - 'feeds_marked_read' => 'Feeds have been marked as read', 'file_is_nok' => 'Check permissions on %s directory. HTTP server must have rights to write into', 'finish_installation' => 'Complete installation', 'first_article' => 'Skip to the first article', @@ -231,8 +222,6 @@ return array( 'install_not_deleted' => 'Something went wrong; you must delete the file %s manually.', 'installation_is_ok' => 'The installation process was successful.
    The final step will now attempt to delete any file and database backup created during the update process.
    You may choose to skip this step by deleting ./data/do-install.txt manually.', 'installation_step' => 'Installation — step %d · FreshRSS', - 'internal_problem_feed' => 'The RSS feed could not be added. Check FressRSS logs for details.', - 'invalid_url' => 'URL %s is invalid', 'is_admin' => 'is administrator', 'javascript_for_shortcuts' => 'JavaScript must be enabled in order to use shortcuts', 'javascript_is_better' => 'FreshRSS is more pleasant with JavaScript enabled', @@ -253,13 +242,10 @@ return array( 'minz_is_ok' => 'You have the Minz framework', 'month' => 'months', 'more_information' => 'More information', - 'n_entries_deleted' => '%d articles have been deleted', - 'n_feeds_actualized' => '%d feeds have been updated', 'next_article' => 'Skip to the next article', 'next_page' => 'Skip to the next page', 'next_step' => 'Go to the next step', 'no_feed_actualized' => 'No RSS feed has been updated', - 'no_feed_to_refresh' => 'There is no feed to refresh…', 'no_query' => 'You haven’t created any user query yet.', 'no_query_filter' => 'No filter', 'no_rss_feed' => 'No RSS feed', @@ -270,10 +256,8 @@ return array( 'not_yet_implemented' => 'Not yet implemented', 'number_divided_when_reader' => 'Divided by 2 in the reading view.', 'number_feeds' => '%d feeds', - 'optimization_complete' => 'Optimization complete', 'optimize_bdd' => 'Optimize database', 'optimize_todo_sometimes' => 'To do occasionally to reduce the size of the database', - 'page_not_found' => 'You are looking for a page which doesn’t exist', 'password' => 'Password', 'password_api' => 'Password API
    (e.g., for mobile apps)', 'password_form' => 'Password
    (for the Web-form login method)', @@ -290,16 +274,13 @@ return array( 'previous_page' => 'Skip to the previous page', 'public' => 'Public', 'publication_date' => 'Date of publication', - 'purge_completed' => 'Purge completed (%d articles deleted)', 'purge_now' => 'Purge now', - 'query_created' => 'Query "%s" has been created.', 'query_deprecated' => 'This query is no longer valid. The referenced category or feed has been deleted.', 'query_filter' => 'Filter applied:', 'query_get_all' => 'Display all articles', 'query_get_category' => 'Display "%s" category', 'query_get_favorite' => 'Display favorite articles', 'query_get_feed' => 'Display "%s" feed', - 'query_number' => 'Query n°%d', 'query_order_asc' => 'Display oldest articles first', 'query_order_desc' => 'Display newest articles first', 'query_search' => 'Search for "%s"', @@ -332,7 +313,6 @@ return array( 'shortcuts_navigation' => 'Navigation', 'shortcuts_navigation_help' => 'With the "Shift" modifier, navigation shortcuts apply on feeds.
    With the "Alt" modifier, navigation shortcuts apply on categories.', 'shortcuts_other_action' => 'Other actions', - 'shortcuts_updated' => 'Shortcuts have been updated', 'show_adaptive' => 'Adjust showing', 'show_all_articles' => 'Show all articles', 'sort_order' => 'Sort order', diff --git a/app/i18n/en/sub.php b/app/i18n/en/sub.php index 14268c72c..27559bbc4 100644 --- a/app/i18n/en/sub.php +++ b/app/i18n/en/sub.php @@ -30,6 +30,7 @@ return array( 'number_entries' => '%d articles', 'stats' => 'Statistics', 'title' => 'Title', + 'title_add' => 'Add a RSS feed', 'ttl' => 'Do not automatically refresh more often than', 'url' => 'Feed URL', 'validator' => 'Check the validity of the feed', diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php index 3132458b9..25c62c6ea 100644 --- a/app/i18n/fr/admin.php +++ b/app/i18n/fr/admin.php @@ -1,6 +1,10 @@ array( + 'title' => 'Authentification', + 'title_reset' => 'Réinitialisation de l’authentification', + ), 'check_install' => array( 'cache' => array( 'nok' => 'Veuillez vérifier les droits sur le répertoire ./data/cache. Le serveur HTTP doit être capable d’écrire dedans', diff --git a/app/i18n/fr/conf.php b/app/i18n/fr/conf.php index 460804774..deba4509e 100644 --- a/app/i18n/fr/conf.php +++ b/app/i18n/fr/conf.php @@ -1,7 +1,26 @@ array( + 'archiving' => array( + 'title' => 'Archivage', + ), + 'display' => array( + 'title' => 'Affichage', + ), + 'query' => array( + 'number' => 'Filtre n°%d', + 'title' => 'Filtres utilisateurs', + ), + 'reading' => array( + 'title' => 'Lecture', + ), + 'sharing' => array( + 'title' => 'Partage', + ), + 'shortcut' => array( + 'title' => 'Raccourcis', + ), + 'user' => array( 'articles_and_size' => '%s articles (%s)', ), ); diff --git a/app/i18n/fr/feedback.php b/app/i18n/fr/feedback.php index d79d3eccd..539fce55d 100644 --- a/app/i18n/fr/feedback.php +++ b/app/i18n/fr/feedback.php @@ -1,6 +1,13 @@ array( + 'optimization_complete' => 'Optimisation terminée.', + ), + 'access' => array( + 'denied' => 'Vous n’avez pas le droit d’accéder à cette page !', + 'not_found' => 'La page que vous cherchez n’existe pas !', + ), 'auth' => array( 'form' => array( 'not_set' => 'Un problème est survenu lors de la configuration de votre système d’authentification. Veuillez réessayer plus tard.', @@ -16,9 +23,11 @@ return array( 'no_password_set' => 'Aucun mot de passe administrateur n’a été précisé. Cette fonctionnalité n’est pas disponible.', 'not_persona' => 'Seul le système d’authentification Persona peut être réinitialisé.', ), - 'configuration' => array( + 'conf' => array( + 'error' => 'Une erreur est survenue durant la sauvegarde de la configuration', + 'query_created' => 'Le filtre "%s" a bien été créé.', + 'shortcuts_updated' => 'Les raccourcis ont été mis à jour.', 'updated' => 'La configuration a été mise à jour', - 'error' => 'Une erreur est survenue en sauvegardant la configuration', ), 'import_export' => array( 'export_no_zip_extension' => 'L’extension Zip n’est pas présente sur votre serveur. Veuillez essayer d’exporter les fichiers un par un.', @@ -43,10 +52,23 @@ return array( 'updated' => 'La catégorie a été mise à jour.', ), 'feed' => array( - 'error' => 'Le flux n’a pas pu être modifié', + 'actualized' => '%s a été mis à jour.', + 'actualizeds' => 'Les flux ont été mis à jour.', + 'added' => 'Le flux %s a bien été ajouté.', + 'already_subscribed' => 'Vous êtes déjà abonné à %s', + 'deleted' => 'Le flux a été supprimé.', + 'error' => 'Une erreur est survenue', + 'internal_problem' => 'Le flux ne peut pas être ajouté. Consulter les logs de FreshRSS pour plus de détails.', + 'invalid_url' => 'L’url %s est invalide.', + 'marked_read' => 'Les flux ont été marqués comme lus.', + 'n_actualized' => '%d flux ont été mis à jour.', + 'n_entries_deleted' => '%d articles ont été supprimés.', + 'no_refresh' => 'Il n’y a aucun flux à actualiser…', + 'not_added' => '%s n’a pas pu être ajouté.', 'over_max' => 'Vous avez atteint votre limite de flux (%d)', 'updated' => 'Le flux a été mis à jour', ), + 'purge_completed' => 'Purge effectuée (%d articles supprimés).', ), 'user_profile' => array( 'updated' => 'Votre profil a été mis à jour', diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 55941c39d..f67ee3d52 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -15,14 +15,12 @@ return array( 'mark_read' => 'Marquer comme lu', 'remove' => 'Supprimer', 'see_website' => 'Voir le site', - 'truncate' => 'Supprimer tous les articles', 'submit' => 'Valider', + 'truncate' => 'Supprimer tous les articles', ), 'auth' => array( 'login' => 'Connexion', 'logout' => 'Déconnexion', - 'title' => 'Authentification', - 'title_reset' => 'Réinitialisation de l’authentification', ), 'date' => array( 'Apr' => '\\a\\v\\r\\i\\l', @@ -131,12 +129,10 @@ return array( 'user_profile' => 'Profil', ), 'freshrss' => 'FreshRSS', - 'access_denied' => 'Vous n’avez pas le droit d’accéder à cette page !', 'activate_sharing' => 'Activer le partage', 'after_onread' => 'Après “marquer tout comme lu”,', 'allow_anonymous' => 'Autoriser la lecture anonyme des articles de l’utilisateur par défaut (%s)', 'allow_anonymous_refresh' => 'Autoriser le rafraîchissement anonyme des flux', - 'already_subscribed' => 'Vous êtes déjà abonné à %s', 'api_enabled' => 'Autoriser l’accès par API (nécessaire pour les applis mobiles)', 'archiving_configuration_help' => 'D’autres options sont disponibles dans la configuration individuelle des flux.', 'article' => 'Article', @@ -205,13 +201,7 @@ return array( 'explain_token' => 'Permet d’accéder à la sortie RSS de l’utilisateur par défaut sans besoin de s’authentifier.
    %s?output=rss&token=%s', 'favicons_is_ok' => 'Les droits sur le répertoire des favicons sont bons', 'feed' => 'Flux', - 'feed_actualized' => '%s a été mis à jour.', - 'feed_added' => 'Le flux %s a bien été ajouté.', - 'feed_deleted' => 'Le flux a été supprimé.', - 'feed_not_added' => '%s n’a pas pu être ajouté.', 'feeds' => 'Flux', - 'feeds_actualized' => 'Les flux ont été mis à jour.', - 'feeds_marked_read' => 'Les flux ont été marqués comme lus.', 'file_is_nok' => 'Veuillez vérifier les droits sur le répertoire %s. Le serveur HTTP doit être capable d’écrire dedans', 'finish_installation' => 'Terminer l’installation', 'first_article' => 'Passer au premier article', @@ -231,8 +221,6 @@ return array( 'install_not_deleted' => 'Quelque chose s’est mal passé, vous devez supprimer le fichier %s à la main.', 'installation_is_ok' => 'L’installation s’est bien passée.
    La dernière étape va maintenant tenter de supprimer les fichiers ainsi que d’éventuelles copies de base de données créés durant le processus de mise à jour.
    Vous pouvez choisir de sauter cette étape en supprimant ./data/do-install.txt manuellement.', 'installation_step' => 'Installation — étape %d · FreshRSS', - 'internal_problem_feed' => 'Le flux ne peut pas être ajouté. Consulter les logs de FreshRSS pour plus de détails.', - 'invalid_url' => 'L’url %s est invalide.', 'is_admin' => 'est administrateur', 'javascript_for_shortcuts' => 'Le JavaScript doit être activé pour pouvoir profiter des raccourcis.', 'javascript_is_better' => 'FreshRSS est plus agréable à utiliser avec JavaScript activé', @@ -253,13 +241,10 @@ return array( 'minz_is_ok' => 'Vous disposez du framework Minz', 'month' => 'mois', 'more_information' => 'Plus d’informations', - 'n_entries_deleted' => '%d articles ont été supprimés.', - 'n_feeds_actualized' => '%d flux ont été mis à jour.', 'next_article' => 'Passer à l’article suivant', 'next_page' => 'Passer à la page suivante', 'next_step' => 'Passer à l’étape suivante', 'no_feed_actualized' => 'Aucun flux n’a pu être mis à jour.', - 'no_feed_to_refresh' => 'Il n’y a aucun flux à actualiser…', 'no_query' => 'Vous n’avez pas encore créé de filtre.', 'no_query_filter' => 'Aucun filtre appliqué', 'no_rss_feed' => 'Aucun flux RSS', @@ -270,10 +255,8 @@ return array( 'not_yet_implemented' => 'Pas encore implémenté', 'number_divided_when_reader' => 'Divisé par 2 dans la vue de lecture.', 'number_feeds' => '%d flux', - 'optimization_complete' => 'Optimisation terminée.', 'optimize_bdd' => 'Optimiser la base de données', 'optimize_todo_sometimes' => 'À faire de temps en temps pour réduire la taille de la BDD', - 'page_not_found' => 'La page que vous cherchez n’existe pas !', 'password' => 'Mot de passe', 'password_api' => 'Mot de passe API
    (ex. : pour applis mobiles)', 'password_form' => 'Mot de passe
    (pour connexion par formulaire)', @@ -290,16 +273,13 @@ return array( 'previous_page' => 'Passer à la page précédente', 'public' => 'Public', 'publication_date' => 'Date de publication', - 'purge_completed' => 'Purge effectuée (%d articles supprimés).', 'purge_now' => 'Purger maintenant', - 'query_created' => 'Le filtre "%s" a bien été créé.', 'query_deprecated' => 'Ce filtre n’est plus valide. La catégorie ou le flux concerné a été supprimé.', 'query_filter' => 'Filtres appliqués :', 'query_get_all' => 'Afficher tous les articles', 'query_get_category' => 'Afficher la catégorie "%s"', 'query_get_favorite' => 'Afficher les articles favoris', 'query_get_feed' => 'Afficher le flux "%s"', - 'query_number' => 'Filtre n°%d', 'query_order_asc' => 'Afficher les articles les plus anciens en premier', 'query_order_desc' => 'Afficher les articles les plus récents en premier', 'query_search' => 'Recherche de "%s"', @@ -332,7 +312,6 @@ return array( 'shortcuts_navigation' => 'Navigation', 'shortcuts_navigation_help' => 'Avec le modificateur "Shift", les raccourcis de navigation s’appliquent aux flux.
    Avec le modificateur "Alt", les raccourcis de navigation s’appliquent aux catégories.', 'shortcuts_other_action' => 'Autres actions', - 'shortcuts_updated' => 'Les raccourcis ont été mis à jour.', 'show_adaptive' => 'Adapter l’affichage', 'show_all_articles' => 'Afficher tous les articles', 'sort_order' => 'Ordre de tri', diff --git a/app/i18n/fr/sub.php b/app/i18n/fr/sub.php index 0257c8b4d..b9d9f4bc2 100644 --- a/app/i18n/fr/sub.php +++ b/app/i18n/fr/sub.php @@ -30,6 +30,7 @@ return array( 'number_entries' => '%d articles', 'stats' => 'Statistiques', 'title' => 'Titre', + 'title_add' => 'Ajouter un flux RSS', 'ttl' => 'Ne pas automatiquement rafraîchir plus souvent que', 'url' => 'URL du flux', 'validator' => 'Vérifier la valididé du flux', -- cgit v1.2.3 From d91a92434f516a9e25bf0dca608a0221094d0489 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 18 Jan 2015 11:47:16 +0100 Subject: Fix Minz_Error and error_Controller - Error code and logs was not propagated from Minz_Error to the controller - header was bad (200 instead of 404 or 403) Related to https://github.com/FreshRSS/FreshRSS/issues/751 --- app/Controllers/errorController.php | 40 +++++++++++++++++++------------------ lib/Minz/Error.php | 39 +++++------------------------------- 2 files changed, 26 insertions(+), 53 deletions(-) (limited to 'app/Controllers/errorController.php') diff --git a/app/Controllers/errorController.php b/app/Controllers/errorController.php index 06fa186cf..b0bafda72 100644 --- a/app/Controllers/errorController.php +++ b/app/Controllers/errorController.php @@ -9,41 +9,43 @@ class FreshRSS_error_Controller extends Minz_ActionController { * * It is called by Minz_Error::error() method. * - * Parameters are: - * - code (default: 404) - * - logs (default: array()) + * Parameters are passed by Minz_Session to have a proper url: + * - error_code (default: 404) + * - error_logs (default: array()) */ public function indexAction() { - $code_int = Minz_Request::param('code', 404); + $code_int = Minz_Session::param('error_code', 404); + $error_logs = Minz_Session::param('error_logs', array()); + Minz_Session::_param('error_code'); + Minz_Session::_param('error_logs'); + switch ($code_int) { + case 200 : + header('HTTP/1.1 200 OK'); + break; case 403: + header('HTTP/1.1 403 Forbidden'); $this->view->code = 'Error 403 - Forbidden'; - break; - case 404: - $this->view->code = 'Error 404 - Not found'; + $this->view->errorMessage = _t('feedback.access.denied'); break; case 500: + header('HTTP/1.1 500 Internal Server Error'); $this->view->code = 'Error 500 - Internal Server Error'; break; case 503: + header('HTTP/1.1 503 Service Unavailable'); $this->view->code = 'Error 503 - Service Unavailable'; break; + case 404: default: + header('HTTP/1.1 404 Not Found'); $this->view->code = 'Error 404 - Not found'; + $this->view->errorMessage = _t('feedback.access.not_found'); } - $errors = Minz_Request::param('logs', array()); - $this->view->errorMessage = trim(implode($errors)); - if ($this->view->errorMessage == '') { - switch($code_int) { - case 403: - $this->view->errorMessage = _t('feedback.access.denied'); - break; - case 404: - default: - $this->view->errorMessage = _t('feedback.access.not_found'); - break; - } + $error_message = trim(implode($error_logs)); + if ($error_message !== '') { + $this->view->errorMessage = $error_message; } Minz_View::prependTitle($this->view->code . ' · '); diff --git a/lib/Minz/Error.php b/lib/Minz/Error.php index 3eadc6d98..3e4a3e8f3 100644 --- a/lib/Minz/Error.php +++ b/lib/Minz/Error.php @@ -23,42 +23,13 @@ class Minz_Error { $logs = self::processLogs ($logs); $error_filename = APP_PATH . '/Controllers/errorController.php'; - switch ($code) { - case 200 : - header('HTTP/1.1 200 OK'); - break; - case 403 : - header('HTTP/1.1 403 Forbidden'); - break; - case 404 : - header('HTTP/1.1 404 Not Found'); - break; - case 500 : - header('HTTP/1.1 500 Internal Server Error'); - break; - case 503 : - header('HTTP/1.1 503 Service Unavailable'); - break; - default : - header('HTTP/1.1 500 Internal Server Error'); - } - if (file_exists ($error_filename)) { - $params = array ( - 'code' => $code, - 'logs' => $logs - ); + Minz_Session::_param('error_code', $code); + Minz_Session::_param('error_logs', $logs); - if ($redirect) { - Minz_Request::forward (array ( - 'c' => 'error' - ), true); - } else { - Minz_Request::forward (array ( - 'c' => 'error', - 'params' => $params - ), false); - } + Minz_Request::forward (array ( + 'c' => 'error' + ), $redirect); } else { echo '

    An error occured

    ' . "\n"; -- cgit v1.2.3
     
    conf->topline_read ? ' checked="checked"' : ''; ?> /> conf->topline_favorite ? ' checked="checked"' : ''; ?> /> conf->topline_date ? ' checked="checked"' : ''; ?> /> conf->topline_link ? ' checked="checked"' : ''; ?> />
    conf->bottomline_read ? ' checked="checked"' : ''; ?> /> conf->bottomline_favorite ? ' checked="checked"' : ''; ?> /> conf->bottomline_sharing ? ' checked="checked"' : ''; ?> />