public function searchAction() { if ($datas = $this->getRequest()->getPost()) { $html = ''; try { if (empty($datas['link']) or !Zend_Uri::check($datas['link'])) { throw new Exception($this->_('Please enter a valid url')); } $result = Zend_Feed_Reader::findFeedLinks($datas['link']); //On a soit un flux directement, soit une URL sans flux trouvable if (count($result) == 0) { try { $feed = Zend_Feed_Reader::import($datas['link']); $html = $this->_saveFeed($datas); } catch (Exception $e) { $html = array('message' => $this->_("No RSS feed could be found"), 'message_button' => 1, 'message_loader' => 1); } //On a une adresse avec des flux } else { $feeds = array(); foreach ($result as $feed) { if (!empty($feed['href'])) { $feeds[] = $feed['href']; } } if (!isset($datas['feed_id'])) { $id = 'new'; } else { $id = $datas['feed_id']; } $html = array('links' => $feeds, 'id' => $id); } } catch (Exception $e) { $html = array('message' => $this->_("No RSS feed could be found"), 'message_button' => 1, 'message_loader' => 1); } $this->getLayout()->setHtml(Zend_Json::encode($html)); } }
/** * @group ZF-8330 */ public function testGetsFeedLinksAndNormalisesRelativeUrlsOnUriWithPath() { try { $currClient = Zend_Feed_Reader::getHttpClient(); $testAdapter = new Zend_Http_Client_Adapter_Test(); $testAdapter->setResponse(new Zend_Http_Response(200, array(), '<!DOCTYPE html><html><head><link rel="alternate" type="application/rss+xml" href="../test.rss"><link rel="alternate" type="application/atom+xml" href="/test.atom"></head><body></body></html>')); Zend_Feed_Reader::setHttpClient(new Zend_Http_Client(null, array('adapter' => $testAdapter))); $links = Zend_Feed_Reader::findFeedLinks('http://foo/bar'); Zend_Feed_Reader::setHttpClient($currClient); } catch (Exception $e) { $this->fail($e->getMessage()); } $this->assertEquals('http://foo/test.rss', $links->rss); $this->assertEquals('http://foo/test.atom', $links->atom); }