/** * 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))); }
/** * 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); } }