Ejemplo n.º 1
0
 /**
  * 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)));
 }
Ejemplo n.º 2
0
 /**
  * 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());
 }
 /**
  * save feed
  *
  * @return void
  */
 public function saveAction()
 {
     // get data
     $data = $this->getRequest()->getPost();
     // get feed model for db access
     $feedModel = new application_models_feeds();
     if (strlen(trim($data['id'])) == 0) {
         $new = true;
     } else {
         $new = false;
     }
     // validate and write/add feed
     if ($new) {
         $result = $feedModel->add($data);
     } else {
         $result = $feedModel->edit($data);
     }
     // error
     if (is_array($result)) {
         $this->_helper->json(array('success' => false, 'errors' => $result));
         // success
     } else {
         // get new feed
         $newFeed = $feedModel->find($result)->current();
         // update items of new feed
         if ($new) {
             $updater = Zend_Controller_Action_HelperBroker::getStaticHelper('updater');
             $updater->feed($newFeed);
             // delete old icon (on edit feed)
         } else {
             $feedModel->deleteIcon($newFeed);
         }
         // save new icon
         $feedModel->saveIcon($newFeed);
         // set new priorities
         $newSettings = $this->resetPriorities();
         // disable icon caching if user added a feed
         Zend_Registry::get('config')->cache->iconcaching = 0;
         // renew iconcache
         Zend_Controller_Action_HelperBroker::getStaticHelper('icon')->resetIconImage();
         // build result
         $result = array('success' => true, 'feed' => array('id' => $newFeed->id, 'category' => $newFeed->category, 'position' => $newFeed->position, 'html' => $this->view->partial('feed/feed.' . Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->getViewSuffix(), $newFeed->toArray())), 'categories' => Zend_Controller_Action_HelperBroker::getStaticHelper('itemcounter')->unreadItemsCategories(), 'all' => Zend_Controller_Action_HelperBroker::getStaticHelper('itemcounter')->allItems(), 'settings' => $newSettings, 'feeds' => $feedModel->count(Zend_Registry::get('session')->currentPriorityStart, Zend_Registry::get('session')->currentPriorityEnd, Zend_Registry::get('session')->view));
         $this->_helper->json($result);
     }
 }