/** * test set without validating */ public function testSet() { $settings = array('language' => 'en', 'new value' => '123', 'imagesHeight' => 3); $this->model->save($settings); $this->model->save($settings); // double set = no two values $this->assertEquals(1, $this->model->find('language')->count()); $this->assertEquals('en', $this->model->find('language')->current()->value); $this->assertEquals('en', Zend_Registry::get('session')->language); // check session update $this->assertEquals(0, $this->model->find('new value')->count()); // don't add new values }
/** * 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); }
/** * will be executed by the javascript ajax call * and signals that it finished successfully a complete * update using ajax * * @return void */ public function finishAction() { $logger = Zend_Registry::get('logger'); // set lastrefresh if timeout is already 0 $updater = Zend_Controller_Action_HelperBroker::getStaticHelper('updater'); if ($updater->timeout() == 0) { // save last refresh (current session will also be updated by models save) $lastrefresh = Zend_Date::now()->get(Zend_Date::TIMESTAMP); $settingsModel = new application_models_settings(); $settingsModel->save(array('lastrefresh' => $lastrefresh)); // delete orphaned thumbnails $updater->cleanupThumbnails(); $logger->log('delete orphaned thumbnails', Zend_Log::DEBUG); // optimize database application_models_base::optimizeDatabase(); $logger->log('database successfully optimized', Zend_Log::DEBUG); $logger->log('finished ajax update', Zend_Log::DEBUG); } // return new timeout and unread items $itemCounter = Zend_Controller_Action_HelperBroker::getStaticHelper('itemcounter'); $this->_helper->json(array('timeout' => $updater->timeout(), 'lastrefresh' => isset($lastrefresh) ? $lastrefresh : Zend_Registry::get('session')->lastrefresh, 'categories' => $itemCounter->unreadItemsCategories(), 'feeds' => $itemCounter->unreadItemsFeeds())); }
/** * shows a list of items * will be called on every change of settings and * returns the messages and images * * @return void */ public function listAction() { $isJson = $this->getRequest()->getParam('json', false); // load current settings $settingsModel = new application_models_settings(); $currentSettings = array(); foreach ($settingsModel->fetchAll() as $setting) { $currentSettings[$setting->name] = $setting->value; } // read settings $settings = $this->getRequest()->getPost(); $settings = array_merge($currentSettings, $settings); // get list template vars $listHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('list'); try { $listHelper->readItems($settings); $listHelper->setTemplateVars($this->view); } catch (Exception $e) { $this->_helper->json(array('error' => $e->getMessage())); } // save settings if (Zend_Registry::get('config')->demomode != "1" && Zend_Registry::get('session')->authenticated === true) { $settingsModel->save(array('currentPriorityStart' => $settings['currentPriorityStart'], 'currentPriorityEnd' => $settings['currentPriorityEnd'], 'view' => $settings['view'], 'selected' => $settings['selected'], 'unread' => $settings['unread'], 'starred' => $settings['starred'], 'sort' => $settings['sort'])); } // get unread items $itemCounter = Zend_Controller_Action_HelperBroker::getStaticHelper('itemcounter'); // return items $feedModel = new application_models_feeds(); $result = array('html' => utf8_encode(utf8_decode($this->view->render('item/list.' . Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->getViewSuffix()))), 'categories' => $itemCounter->unreadItemsCategories($settings), 'feeds' => $itemCounter->unreadItemsFeeds($settings), 'starred' => $itemCounter->starredItems($settings), 'all' => $itemCounter->allItems($settings), 'countfeeds' => $feedModel->count(Zend_Registry::get('session')->currentPriorityStart, Zend_Registry::get('session')->currentPriorityEnd, Zend_Registry::get('session')->view)); if ($isJson == true) { unset($result['html']); $result['messages'] = $listHelper->getMessages(); $result['moremessages'] = $listHelper->hasMoreMessages(); $result['multimedia'] = $listHelper->getMultimedia(); $result['moremultimedia'] = $listHelper->hasMoreMultimedia(); } $this->_helper->json($result); }
/** * saves open categories * * @return void */ public function openAction() { $settingsModel = new application_models_settings(); $settingsModel->save($this->getRequest()->getParams()); $this->_helper->json(true); }
/** * import given opml file * * @return void */ public function importAction() { // parse given opml file $xml = simplexml_load_string(file_get_contents($_FILES['userfile']['tmp_name'])); if (!$xml) { echo Zend_Json::encode(array('error' => Zend_Registry::get('language')->translate('opml file parse error'))); return; } // load first instance $parsedFeeds = array('-1' => array()); foreach ($xml->body->outline as $outline) { // category? if (!isset($outline['xmlUrl'])) { // read category title $categoryTitle = ""; if (isset($outline['text'])) { $categoryTitle = (string) $outline['text']; } elseif (isset($outline['title'])) { $categoryTitle = (string) $outline['title']; } if (strlen($categoryTitle) == 0) { continue; } $parsedFeeds[$categoryTitle] = $this->importAllOutline($outline); } else { $parsedFeeds['-1'][] = $this->readFeed($outline); } } // insert new categories, get existing category id foreach ($parsedFeeds as $category => $feeds) { // insert or get existing category $category = $this->insertCategory($category); // insert feeds $this->insertFeeds($category, $feeds); } // reset timeout $settingsModel = new application_models_settings(); $settingsModel->save(array('lastrefresh' => 0)); echo Zend_Json::encode(array('success' => true)); }