/**
  * 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);
 }
예제 #6
0
 /**
  * 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));
 }