/** * Simple utility function which imports any feed URL and * determines the existence of Hub Server endpoints. This works * best if directly given an instance of Zend_Feed_Reader_Atom|Rss * to leverage off. * * @param Zend_Feed_Reader_FeedAbstract|Zend_Feed_Abstract|string $source * @return array */ public static function detectHubs($source) { if (is_string($source)) { $feed = Zend_Feed_Reader::import($source); } elseif (is_object($source) && $source instanceof Zend_Feed_Reader_FeedAbstract) { $feed = $source; } elseif (is_object($source) && $source instanceof Zend_Feed_Abstract) { $feed = Zend_Feed_Reader::importFeed($source); } else { throw new Zend_Feed_Pubsubhubbub_Exception('The source parameter was' . ' invalid, i.e. not a URL string or an instance of type' . ' Zend_Feed_Reader_FeedAbstract or Zend_Feed_Abstract'); } return $feed->getHubs(); }
/** * Simple utility function which imports any feed URL and * determines the existence of Hub Server endpoints. This works * best if directly given an instance of Zend_Feed_Reader_Atom|Rss * to leverage off. * * @param Zend_Feed_Reader_FeedAbstract|Zend_Feed_Abstract|string $source */ public static function detectHubs($source) { if (is_string($source)) { $feed = Zend_Feed_Reader::import($source); } elseif (is_object($source) && $source instanceof Zend_Feed_Reader_FeedAbstract) { $feed = $source; } elseif (is_object($source) && $source instanceof Zend_Feed_Abstract) { $feed = Zend_Feed_Reader::importFeed($source); } else { require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; throw new Zend_Feed_Pubsubhubbub_Exception('The source parameter was' . ' invalid, i.e. not a URL string or an instance of type' . ' Zend_Feed_Reader_FeedAbstract or Zend_Feed_Abstract'); } $atom = $feed->getExtension('Atom'); $hubs = array(); $list = $atom->getXpath()->evaluate($atom->getXpathPrefix() . '//atom:link[@rel="hub"]/@href'); if ($list->length) { foreach ($list as $url) { $hubs[] = $url->nodeValue; } } return $hubs; }