import v2.0.0.0_RC3 | 2012-07-01
https://github.com/lucanos/CommunityID -> http://www.itadmins.net/archives/357
This commit is contained in:
@ -16,7 +16,7 @@
|
||||
* @package Zend_Feed_Reader
|
||||
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: Reader.php 17391 2009-08-05 11:27:52Z padraic $
|
||||
* @version $Id: Reader.php 19120 2009-11-20 17:58:59Z padraic $
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -34,6 +34,11 @@ require_once 'Zend/Feed/Reader/Feed/Rss.php';
|
||||
*/
|
||||
require_once 'Zend/Feed/Reader/Feed/Atom.php';
|
||||
|
||||
/**
|
||||
* @see Zend_Feed_Reader_FeedSet
|
||||
*/
|
||||
require_once 'Zend/Feed/Reader/FeedSet.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Feed_Reader
|
||||
@ -42,20 +47,20 @@ require_once 'Zend/Feed/Reader/Feed/Atom.php';
|
||||
*/
|
||||
class Zend_Feed_Reader
|
||||
{
|
||||
/**
|
||||
* Namespace constants
|
||||
*/
|
||||
const NAMESPACE_ATOM_03 = 'http://purl.org/atom/ns#';
|
||||
/**
|
||||
* Namespace constants
|
||||
*/
|
||||
const NAMESPACE_ATOM_03 = 'http://purl.org/atom/ns#';
|
||||
const NAMESPACE_ATOM_10 = 'http://www.w3.org/2005/Atom';
|
||||
const NAMESPACE_RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
|
||||
const NAMESPACE_RSS_090 = 'http://my.netscape.com/rdf/simple/0.9/';
|
||||
const NAMESPACE_RSS_10 = 'http://purl.org/rss/1.0/';
|
||||
|
||||
/**
|
||||
* Feed type constants
|
||||
*/
|
||||
const TYPE_ANY = 'any';
|
||||
const TYPE_ATOM_03 = 'atom-03';
|
||||
* Feed type constants
|
||||
*/
|
||||
const TYPE_ANY = 'any';
|
||||
const TYPE_ATOM_03 = 'atom-03';
|
||||
const TYPE_ATOM_10 = 'atom-10';
|
||||
const TYPE_ATOM_ANY = 'atom';
|
||||
const TYPE_RSS_090 = 'rss-090';
|
||||
@ -208,13 +213,13 @@ class Zend_Feed_Reader
|
||||
}
|
||||
|
||||
/**
|
||||
* Import a feed by providing a URL
|
||||
*
|
||||
* @param string $url The URL to the feed
|
||||
* Import a feed by providing a URL
|
||||
*
|
||||
* @param string $url The URL to the feed
|
||||
* @param string $etag OPTIONAL Last received ETag for this resource
|
||||
* @param string $lastModified OPTIONAL Last-Modified value for this resource
|
||||
* @return Zend_Feed_Reader_Feed_Interface
|
||||
*/
|
||||
* @return Zend_Feed_Reader_FeedInterface
|
||||
*/
|
||||
public static function import($uri, $etag = null, $lastModified = null)
|
||||
{
|
||||
$cache = self::getCache();
|
||||
@ -288,8 +293,8 @@ class Zend_Feed_Reader
|
||||
* Import a feed by providing a Zend_Feed_Abstract object
|
||||
*
|
||||
* @param Zend_Feed_Abstract $feed A fully instantiated Zend_Feed object
|
||||
* @return Zend_Feed_Reader_Feed_Interface
|
||||
*/
|
||||
* @return Zend_Feed_Reader_FeedInterface
|
||||
*/
|
||||
public static function importFeed(Zend_Feed_Abstract $feed)
|
||||
{
|
||||
$dom = $feed->getDOM()->ownerDocument;
|
||||
@ -298,7 +303,7 @@ class Zend_Feed_Reader
|
||||
if (substr($type, 0, 3) == 'rss') {
|
||||
$reader = new Zend_Feed_Reader_Feed_Rss($dom, $type);
|
||||
} else {
|
||||
$reader = new Zend_Feed_Reader_Feed_Atom($dom, $type);
|
||||
$reader = new Zend_Feed_Reader_Feed_Atom($dom, $type);
|
||||
}
|
||||
|
||||
return $reader;
|
||||
@ -308,7 +313,7 @@ class Zend_Feed_Reader
|
||||
* Import a feed froma string
|
||||
*
|
||||
* @param string $string
|
||||
* @return Zend_Feed_Reader_Feed_Interface
|
||||
* @return Zend_Feed_Reader_FeedInterface
|
||||
*/
|
||||
public static function importString($string)
|
||||
{
|
||||
@ -321,9 +326,9 @@ class Zend_Feed_Reader
|
||||
// Build error message
|
||||
$error = libxml_get_last_error();
|
||||
if ($error && $error->message) {
|
||||
$errormsg = "DOMDocument cannot parse XML: {$error->message}";
|
||||
$errormsg = "DOMDocument cannot parse XML: {$error->message}";
|
||||
} else {
|
||||
$errormsg = "DOMDocument cannot parse XML: Please check the XML document's validity";
|
||||
$errormsg = "DOMDocument cannot parse XML: Please check the XML document's validity";
|
||||
}
|
||||
|
||||
require_once 'Zend/Feed/Exception.php';
|
||||
@ -336,8 +341,12 @@ class Zend_Feed_Reader
|
||||
|
||||
if (substr($type, 0, 3) == 'rss') {
|
||||
$reader = new Zend_Feed_Reader_Feed_Rss($dom, $type);
|
||||
} elseif (substr($type, 0, 4) == 'atom') {
|
||||
$reader = new Zend_Feed_Reader_Feed_Atom($dom, $type);
|
||||
} else {
|
||||
$reader = new Zend_Feed_Reader_Feed_Atom($dom, $type);
|
||||
require_once 'Zend/Feed/Exception.php';
|
||||
throw new Zend_Feed_Exception('The URI used does not point to a '
|
||||
. 'valid Atom, RSS or RDF feed that Zend_Feed_Reader can parse.');
|
||||
}
|
||||
return $reader;
|
||||
}
|
||||
@ -378,40 +387,26 @@ class Zend_Feed_Reader
|
||||
throw new Zend_Feed_Exception("Failed to access $uri, got response code " . $response->getStatus());
|
||||
}
|
||||
$responseHtml = $response->getBody();
|
||||
@ini_set('track_errors', 1);
|
||||
$libxml_errflag = libxml_use_internal_errors(true);
|
||||
$dom = new DOMDocument;
|
||||
$status = @$dom->loadHTML($responseHtml);
|
||||
@ini_restore('track_errors');
|
||||
$status = $dom->loadHTML($responseHtml);
|
||||
libxml_use_internal_errors($libxml_errflag);
|
||||
if (!$status) {
|
||||
if (!isset($php_errormsg)) {
|
||||
if (function_exists('xdebug_is_enabled')) {
|
||||
$php_errormsg = '(error message not available, when XDebug is running)';
|
||||
} else {
|
||||
$php_errormsg = '(error message not available)';
|
||||
}
|
||||
// Build error message
|
||||
$error = libxml_get_last_error();
|
||||
if ($error && $error->message) {
|
||||
$errormsg = "DOMDocument cannot parse HTML: {$error->message}";
|
||||
} else {
|
||||
$errormsg = "DOMDocument cannot parse HTML: Please check the XML document's validity";
|
||||
}
|
||||
|
||||
require_once 'Zend/Feed/Exception.php';
|
||||
throw new Zend_Feed_Exception("DOMDocument cannot parse XML: $php_errormsg");
|
||||
throw new Zend_Feed_Exception($errormsg);
|
||||
}
|
||||
$feedLinks = new stdClass;
|
||||
$feedSet = new Zend_Feed_Reader_FeedSet;
|
||||
$links = $dom->getElementsByTagName('link');
|
||||
foreach ($links as $link) {
|
||||
if (strtolower($link->getAttribute('rel')) !== 'alternate'
|
||||
|| !$link->getAttribute('type') || !$link->getAttribute('href')) {
|
||||
continue;
|
||||
}
|
||||
if (!isset($feedLinks->rss) && $link->getAttribute('type') == 'application/rss+xml') {
|
||||
$feedLinks->rss = $link->getAttribute('href');
|
||||
} elseif(!isset($feedLinks->atom) && $link->getAttribute('type') == 'application/atom+xml') {
|
||||
$feedLinks->atom = $link->getAttribute('href');
|
||||
} elseif(!isset($feedLinks->rdf) && $link->getAttribute('type') == 'application/rdf+xml') {
|
||||
$feedLinks->rdf = $link->getAttribute('href');
|
||||
}
|
||||
if (isset($feedLinks->rss) && isset($feedLinks->atom) && isset($feedLinks->rdf)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $feedLinks;
|
||||
$feedSet->addLinks($links, $uri);
|
||||
return $feedSet;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user