/** * checks whether a user needs a login and is loggedin * otherwise redirect to login page * * @return void */ public function preDispatch(Zend_Controller_Request_Abstract $request) { // allways allow silent update (for easy cronjob) if ($request->getControllerName() == 'update' && $request->getActionName() == 'silent') { return; } // show login if ($request->getParam('login', false) !== false) { $request->setControllerName('index'); $request->setActionName('login'); return; } // logout? if ($request->getParam('logout', false) !== false) { Zend_Registry::get('session')->__unset('authenticated'); $request->setControllerName('index'); $request->setActionName('login'); return; } // disallow readonly mode if user has option public not set if (Zend_Registry::get('session')->authenticated === 'readonly' && Zend_Registry::get('session')->public != 1) { Zend_Registry::get('session')->authenticated = false; } // check whether user loggedin or public access allowed if (Zend_Registry::get('session')->authenticated !== true && Zend_Registry::get('session')->authenticated !== 'readonly') { // no login required? $users = new application_models_users(); if (!$users->getUsername()) { Zend_Registry::get('session')->authenticated = true; // public access allowed? start public mode } elseif (Zend_Registry::get('session')->public == 1) { Zend_Registry::get('session')->authenticated = 'readonly'; // unallowed access -> show login window } else { $request->setControllerName('index'); $request->setActionName('login'); return; } } // load default values 4 readonly mode if (Zend_Registry::get('session')->authenticated === 'readonly') { $priorityStart = Zend_Registry::get('session')->priorityStart; $priorityEnd = Zend_Registry::get('session')->priorityEnd; // reset session with default config from config.ini Zend_Registry::get('bootstrap')->resetSession(false); // set priority slider Zend_Registry::get('session')->currentPriorityStart = $priorityStart; Zend_Registry::get('session')->currentPriorityEnd = $priorityEnd; Zend_Registry::get('session')->priorityStart = $priorityStart; Zend_Registry::get('session')->priorityEnd = $priorityEnd; } // don't allow any changings in readonly mode if (Zend_Registry::get('session')->authenticated !== true) { if ($request->getControllerName() != 'error' && $request->getControllerName() != 'index' && $request->getControllerName() != 'patch' && !($request->getControllerName() == 'item' && $request->getActionName() == 'list') && !($request->getControllerName() == 'item' && $request->getActionName() == 'listmore') && !($request->getControllerName() == 'update' && $request->getActionName() == 'silent')) { die('access denied'); } } }
/** * Save new settings * * @return void */ public function saveAction() { // suppress view rendering Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true); // save username password $activateLogin = $this->getRequest()->getParam('activate_login'); $username = $this->getRequest()->getParam('username', false); $password = $this->getRequest()->getParam('password', false); $passwordAgain = $this->getRequest()->getParam('password_again', false); $result = array(); // deactivate login if ($activateLogin == '0') { $this->removeLogin(); // activate login } else { // any data changed? $user = new application_models_users(); if ($username != $user->getUsername() || strlen($password) != 0) { if ($password != $passwordAgain) { $result = array('password_again' => Zend_Registry::get('language')->translate('given passwords not equal')); } else { if (strlen(trim($password)) != 0 && strlen(trim($username)) == 0) { $result = array('username' => Zend_Registry::get('language')->translate('if you set a password you must set an username')); } else { $this->saveLogin($username, $password); } } } } $newSettings = $this->getRequest()->getPost(); // save new settings if (count($result) == 0) { $settingsModel = new application_models_settings(); $result = $settingsModel->save($newSettings); } // delete cached js files (for language settings) $target = Zend_Registry::get('config')->pub->path . 'javascript/' . Zend_Registry::get('config')->cache->minifiedjsfile; if (file_exists($target)) { } unlink($target); // return result (errors or success) $this->_helper->json($result); }
/** * show main window * * @return void */ public function indexAction() { // include DetectMobile lib require_once Zend_Registry::get('config')->includePaths->library . '/rsslounge/DetectMobile.php'; // prepare icon cache Zend_Controller_Action_HelperBroker::getStaticHelper('icon')->generateIconImage(); // stop if ie is current browser $browser = @get_browser(); if (isset($browser->browser) && get_browser()->browser == 'IE' && get_browser()->majorver == 6) { $this->_redirect('index/ie'); } // update $this->checkDatabase(); // load feedlist $this->feedlistData(); // set unread if setting firstUnread is set and unread available if (Zend_Registry::get('session')->firstUnread == 1 && $this->view->unread > 0) { Zend_Registry::get('session')->unread = 1; } // convert session into array (for loading items) $settings = Zend_Controller_Action_HelperBroker::getStaticHelper('itemcounter')->getSessionAsArray(); // get list template vars $listHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('list'); try { $listHelper->readItems($settings); $listHelper->setTemplateVars($this->view); } catch (Exception $e) { $this->view->messages = $e->getMessage(); } // set new timeout for rss refresh in session settings Zend_Controller_Action_HelperBroker::getStaticHelper('updater')->timeout(); // logout/login available? $users = new application_models_users(); if ($users->getUsername() !== false && Zend_Registry::get('session')->authenticated === true) { $this->view->logout = true; } elseif (Zend_Registry::get('session')->authenticated === 'readonly') { $this->view->login = true; } // add new feed? Then show the dialog (for add feed bookmark) $this->view->newfeed = $this->getRequest()->getParam('url', ''); // ipad detection $this->view->isIpad = (bool) strpos($_SERVER['HTTP_USER_AGENT'], 'iPad'); }