/**
  * checks whether a feed exists or not
  *
  * @return boolean
  * @param int $value feed id
  */
 public function isValid($value)
 {
     $feeds = new application_models_feeds();
     if ($feeds->fetchAll($feeds->select()->where("id=?", $value))->count() == 0) {
         $this->_error(application_validate_feedid::NOT_EXISTS);
         return false;
     }
     return true;
 }
 /**
  * checks whether a feed entry already exists or not
  *
  * @return boolean
  * @param string $value url
  */
 public function isValid($value)
 {
     $feeds = new application_models_feeds();
     $select = $feeds->select()->where("url=?", $value)->where("source=?", $this->source);
     if ($this->id) {
         $select->where("id!=?", $this->id);
     }
     if ($feeds->fetchAll($select)->count() > 0) {
         $this->_error(application_validate_duplicatefeed::ALREADY_EXISTS);
         return false;
     }
     return true;
 }
 /**
  * test add new message
  */
 public function testAdd()
 {
     $feedModel = new application_models_feeds();
     $currentDatetime = date('Y-m-d H:i:s');
     $this->model->add($feedModel->find(1)->current(), 'testmessage no 1');
     // error in feed set
     $this->assertEquals('1', $feedModel->find(1)->current()->error);
     // correct error message added
     $this->assertGreaterThan(0, $this->model->fetchAll()->count());
     $result = $this->model->fetchAll($this->model->select()->order('id DESC'))->current();
     $this->assertEquals($currentDatetime, $result->datetime);
     $this->assertEquals('testmessage no 1', $result->message);
     $this->assertEquals('1', $result->feed);
 }
 /**
  * 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);
 }
 /**
  * test validation
  */
 public function testValidation()
 {
     $newfeed = array('name' => 'Tobis Blog', 'url' => 'http://blog.aditu.de/feed', 'category' => '1', 'priority' => '3', 'favicon' => '', 'filter' => '', 'source' => 'plugins_rss_feed');
     // invalid name
     $testfeed = array_merge($newfeed, array('name' => ''));
     $this->assertTrue(is_array($this->model->add($testfeed)));
     $testfeed = $newfeed;
     unset($testfeed['name']);
     $this->assertTrue(is_array($this->model->add($testfeed)));
     // invalid url
     $testfeed = array_merge($newfeed, array('url' => 'http://www.n-tv.de/wirtschaft/rss'));
     $this->assertTrue(is_array($this->model->add($testfeed)));
     // url optional => no error
     $testfeed = array_merge($newfeed, array('source' => 'plugins_images_visualizeus', 'url' => ''));
     $id = $this->model->add($testfeed);
     $this->assertTrue(is_numeric($id));
     $this->assertGreaterThan(0, $id);
     $this->model->remove($id);
     // url not optional => error
     $testfeed = array_merge($newfeed, array('url' => ''));
     $this->assertTrue(is_array($this->model->add($testfeed)));
     $testfeed = $newfeed;
     unset($testfeed['url']);
     $this->assertTrue(is_array($this->model->add($testfeed)));
     // invalid category
     $testfeed = array_merge($newfeed, array('category' => 'abc'));
     $this->assertTrue(is_array($this->model->add($testfeed)));
     $testfeed = array_merge($newfeed, array('category' => '222'));
     $this->assertTrue(is_array($this->model->add($testfeed)));
     // invalid priority
     $testfeed = array_merge($newfeed, array('priority' => 'abc'));
     $this->assertTrue(is_array($this->model->add($testfeed)));
     $testfeed = $newfeed;
     unset($testfeed['priority']);
     $this->assertTrue(is_array($this->model->add($testfeed)));
     // invalid source
     $testfeed = $newfeed;
     unset($testfeed['source']);
     $this->assertTrue(is_array($this->model->add($testfeed)));
     $testfeed = array_merge($newfeed, array('source' => 'abc'));
     $this->assertTrue(is_array($this->model->add($testfeed)));
     // validation of id
     $editfeed = array('id' => '1111', 'name' => 'n-tv all news', 'url' => 'http://www.n-tv.de/rss', 'category' => '2', 'priority' => '1', 'favicon' => '467321.ico', 'filter' => '/.*4711.*/', 'source' => 'plugins_rss_multimedia');
     $this->assertTrue(is_array($this->model->edit($editfeed)));
 }
 /**
  * set feedlist data for the current view
  *
  * @return void
  */
 protected function feedlistData()
 {
     // check whether uncategorized exists or not (add it if not)
     $categoriesModel = new application_models_categories();
     $categoriesModel->checkUncategorized();
     // categories and feeds (target template param)
     $this->view->categories = array();
     // load unread items
     $itemCounter = Zend_Controller_Action_HelperBroker::getStaticHelper('itemcounter');
     $unreadCategory = $itemCounter->unreadItemsCategories();
     $unreadFeed = $itemCounter->unreadItemsFeeds();
     // get open categories
     if (Zend_Registry::get('session')->saveOpenCategories == 1) {
         $open = explode(',', Zend_Registry::get('session')->openCategories);
     } else {
         $open = array();
     }
     // load categories
     $categoriesDb = $categoriesModel->fetchAll($categoriesModel->select()->order('position ASC'));
     $feedPositions = Zend_Controller_Action_HelperBroker::getStaticHelper('icon')->getFeedsIconPosition();
     // read feeds and count items of the loaded categories
     $feedsModel = new application_models_feeds();
     foreach ($categoriesDb as $cat) {
         $newcat = $cat->toArray();
         // get feeds of cat
         $feedRowset = $cat->findDependentRowset('application_models_feeds', null, $feedsModel->select()->order('position ASC'));
         $newcat['feeds'] = array();
         foreach ($feedRowset as $feed) {
             $newfeed = $feed->toArray();
             $newfeed['unread'] = isset($unreadFeed[$feed->id]) ? $unreadFeed[$feed->id] : 0;
             $newfeed['iconposition'] = $feedPositions[$feed->id];
             $newcat['feeds'][] = $newfeed;
         }
         // get unread items of cat
         $newcat['unread'] = isset($unreadCategory[$cat->id]) ? $unreadCategory[$cat->id] : 0;
         // set open (feeds visible) or not
         if (in_array($cat->id, $open)) {
             $newcat['open'] = true;
         } else {
             $newcat['open'] = false;
         }
         // append category
         $this->view->categories[] = $newcat;
     }
     // count starred items
     $this->view->starred = $itemCounter->starredItems();
     // count unread items
     $this->view->unread = $unreadCategory[0];
     // count all items
     $this->view->all = $itemCounter->allItems();
     // count read items
     $this->view->read = $this->view->all - $this->view->unread;
     // count feeds
     $this->view->amountfeeds = $feedsModel->count(Zend_Registry::get('session')->currentPriorityStart, Zend_Registry::get('session')->currentPriorityEnd, Zend_Registry::get('session')->view);
 }
 /**
  * updates a given feed (for executing via ajax call)
  *
  * @return void
  */
 public function feedAction()
 {
     // timeout bigger than 0 = no feed refresh needed
     $updater = Zend_Controller_Action_HelperBroker::getStaticHelper('updater');
     if ($updater->timeout() != 0) {
         $this->finishAction();
         return;
     }
     // get and check feed
     $feedModel = new application_models_feeds();
     $feeds = $feedModel->find($this->getRequest()->getParam('id'));
     if ($feeds->count() == 0) {
         $this->_helper->json(array('error' => $this->view->translate('No feed with given ID found')));
     }
     // update feed (fetch new data from source)
     $feed = $feeds->current();
     $result = $updater->feed($feed);
     // if necessary update icon
     $updateIcon = $feed->dirtyicon == 1;
     if ($updateIcon) {
         $feedModel->saveIcon($feed);
     }
     // create answer
     if (!is_numeric($result)) {
         $this->_helper->json(array('error' => $result));
     } else {
         // return category and feed unread items
         $this->_helper->json(array('success' => true, 'icon' => $updateIcon, 'lastrefresh' => $result));
     }
 }
 /**
  * test the fix position routine
  * setUp will insert feeds with position 0 and 2
  * fixPosition corrects to 0 and 1
  */
 public function testFixPositions()
 {
     $this->model->fixPositions($this->model->find(1)->current());
     $feedModel = new application_models_feeds();
     $positions = $feedModel->fetchAll($feedModel->select()->order('position ASC')->from($feedModel, 'position'))->toArray();
     $expected = array(array('position' => 0), array('position' => 1));
     $this->assertEquals($expected, $positions);
 }
Beispiel #9
0
 /**
  * return feed positions
  *
  * @return array of feed positions
  */
 public function getFeedsIconPosition()
 {
     if ($this->iconPositions == false) {
         $feedsModel = new application_models_feeds();
         $feeds = $feedsModel->fetchAll($feedsModel->select()->order('id ASC'));
         $feedPositions = array();
         $count = 0;
         foreach ($feeds as $feed) {
             $feedPositions[$feed->id] = $count++;
         }
         $this->iconPositions = $feedPositions;
     }
     return $this->iconPositions;
 }
 /**
  * test thumbnail cleanup
  */
 public function testCleanupThumbnails()
 {
     $this->model->cleanupThumbnails();
     $this->assertTrue(file_exists(Zend_Registry::get('config')->thumbnails->path . "thumb1.jpg"));
     $this->assertFalse(file_exists(Zend_Registry::get('config')->thumbnails->path . "thumb2.jpg"));
 }
 /**
  * insert given feeds
  * 
  * @return void
  * @param int $category id
  * @param array $feeds as array
  */
 protected function insertFeeds($category, $feeds)
 {
     $feedsModel = new application_models_feeds();
     // insert unkown feeds
     foreach ($feeds as $feed) {
         // search existing feed
         $moreFeeds = $feedsModel->fetchAll($feedsModel->select()->where($feedsModel->getAdapter()->quoteInto('url=?', trim($feed['link']))));
         // if feed doesn't exists
         if ($moreFeeds->count() == 0) {
             $feedsModel->add(array('name' => trim($feed['title']), 'url' => trim($feed['link']), 'category' => $category, 'priority' => 1, 'source' => 'plugins_rss_feed'));
         }
     }
     // fix positions
     $categoriesModel = new application_models_categories();
     $categoriesModel->fixPositions($categoriesModel->find($category)->current());
 }
 /**
  * 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;
 }