/** * list more items * will be executed on clicking on more * * @return void */ public function listmoreAction() { // 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()->getParams(); $settings = array_merge($currentSettings, $settings); // get items $result = $this->listItems($settings); // show items $this->_helper->json($result); }
/** * 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())); }
/** * reads settings from database * * @return value for this setting * @param name the name of the setting * @param default the default value of this setting */ protected function initializeSessionValue($name, $default) { // get database settings object $settings = new application_models_settings(); // get value from database $result = $settings->fetchAll($settings->select()->where('name=?', $name)); // value found? if ($result->count() > 0) { return $result->current()->value; // value not found } else { // save default value in database $settings->insert(array('name' => $name, 'value' => $default)); // return default value return $default; } }
/** * validate wrong settings value * * @return void * @param string $name of the setting * @param string $value of the setting */ private function checkWrongValue($name, $value) { $result = $this->model->validate(array_merge($this->settings, array($name => $value))); $this->assertTrue(is_array($result)); }
/** * set timeout in the session and * returns the timeout for the next refresh * * @return int timeout */ public function timeout() { // load lastrefresh from database $settings = new application_models_settings(); $lastrefresh = $settings->get('lastrefresh'); if ($lastrefresh !== false) { Zend_Registry::get('session')->lastrefresh = $lastrefresh; } // no lastrefresh set if (Zend_Registry::get('session')->lastrefresh == 0) { Zend_Registry::get('session')->timeout = 0; } else { // calc seconds between now and last refresh $now = Zend_Date::now(); $last = new Zend_Date(); $last->set(Zend_Registry::get('session')->lastrefresh, Zend_Date::TIMESTAMP); $diff = $now->sub($last)->toValue(); $diff = Zend_Registry::get('session')->refresh * 60 - $diff; // set timeout 0 if refresh intervall was exceed if ($diff < 0) { $diff = 0; } // set timeout in session Zend_Registry::get('session')->timeout = $diff; } return Zend_Registry::get('session')->timeout; }
/** * 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)); }
/** * reset priorities depending on the current * max and min priorities of all feeds * * @return array new settings */ protected function resetPriorities() { // set min and max priority $feedModel = new application_models_feeds(); $min = $feedModel->minPriority(); $max = $feedModel->maxPriority(); $newSettings = array('priorityStart' => $min, 'priorityEnd' => $max); // reset current priority if necessary if (Zend_Registry::get('session')->currentPriorityStart < $min) { $newSettings['currentPriorityStart'] = $min; } if (Zend_Registry::get('session')->currentPriorityEnd > $max) { $newSettings['currentPriorityEnd'] = $max; } if (Zend_Registry::get('session')->currentPriorityEnd < $min) { $newSettings['currentPriorityEnd'] = $min; } // save new settings $settings = new application_models_settings(); $settings->set($newSettings); return $newSettings; }