/** * Constructor * * @param DOMElement $entry * @param int $entryKey * @param string $type */ public function __construct(DOMElement $entry, $entryKey, $type = null) { parent::__construct($entry, $entryKey, $type); // Everyone by now should know XPath indices start from 1 not 0 $this->xpathQuery = '//atom:entry[' . ($this->entryKey + 1) . ']'; $manager = Reader\Reader::getExtensionManager(); $extensions = array('Atom\\Entry', 'Thread\\Entry', 'DublinCore\\Entry'); foreach ($extensions as $name) { $extension = $manager->get($name); $extension->setEntryElement($entry); $extension->setEntryKey($entryKey); $extension->setType($type); $this->extensions[$name] = $extension; } }
/** * Constructor * * @param DOMElement $entry * @param string $entryKey * @param string $type */ public function __construct(DOMElement $entry, $entryKey, $type = null) { parent::__construct($entry, $entryKey, $type); $this->xpathQueryRss = '//item[' . ($this->entryKey + 1) . ']'; $this->xpathQueryRdf = '//rss:item[' . ($this->entryKey + 1) . ']'; $manager = Reader\Reader::getExtensionManager(); $extensions = array('DublinCore\\Entry', 'Content\\Entry', 'Atom\\Entry', 'WellFormedWeb\\Entry', 'Slash\\Entry', 'Thread\\Entry'); foreach ($extensions as $name) { $extension = $manager->get($name); $extension->setEntryElement($entry); $extension->setEntryKey($entryKey); $extension->setType($type); $this->extensions[$name] = $extension; } }
/** * Constructor * * @param DOMDocument $dom * @param string $type */ public function __construct(DOMDocument $dom, $type = null) { parent::__construct($dom, $type); $manager = Reader\Reader::getExtensionManager(); $atomFeed = $manager->get('Atom\\Feed'); $atomFeed->setDomDocument($dom); $atomFeed->setType($this->data['type']); $atomFeed->setXpath($this->xpath); $this->extensions['Atom\\Feed'] = $atomFeed; $atomFeed = $manager->get('DublinCore\\Feed'); $atomFeed->setDomDocument($dom); $atomFeed->setType($this->data['type']); $atomFeed->setXpath($this->xpath); $this->extensions['DublinCore\\Feed'] = $atomFeed; foreach ($this->extensions as $extension) { $extension->setXpathPrefix('/atom:feed'); } }
/** * Constructor: Create a Source object which is largely just a normal * Zend\Feed\Reader\AbstractFeed object only designed to retrieve feed level * metadata from an Atom entry's source element. * * @param DOMElement $source * @param string $xpathPrefix Passed from parent Entry object * @param string $type Nearly always Atom 1.0 */ public function __construct(DOMElement $source, $xpathPrefix, $type = Reader\Reader::TYPE_ATOM_10) { $this->domDocument = $source->ownerDocument; $this->xpath = new DOMXPath($this->domDocument); $this->data['type'] = $type; $this->registerNamespaces(); $this->loadExtensions(); $manager = Reader\Reader::getExtensionManager(); $extensions = array('Atom\\Feed', 'DublinCore\\Feed'); foreach ($extensions as $name) { $extension = $manager->get($name); $extension->setDomDocument($this->domDocument); $extension->setType($this->data['type']); $extension->setXpath($this->xpath); $this->extensions[$name] = $extension; } foreach ($this->extensions as $extension) { $extension->setXpathPrefix(rtrim($xpathPrefix, '/') . '/atom:source'); } }
/** * Constructor * * @param DOMDocument $dom * @param string $type */ public function __construct(DOMDocument $dom, $type = null) { parent::__construct($dom, $type); $manager = Reader\Reader::getExtensionManager(); $feed = $manager->get('DublinCore\\Feed'); $feed->setDomDocument($dom); $feed->setType($this->data['type']); $feed->setXpath($this->xpath); $this->extensions['DublinCore\\Feed'] = $feed; $feed = $manager->get('Atom\\Feed'); $feed->setDomDocument($dom); $feed->setType($this->data['type']); $feed->setXpath($this->xpath); $this->extensions['Atom\\Feed'] = $feed; if ($this->getType() !== Reader\Reader::TYPE_RSS_10 && $this->getType() !== Reader\Reader::TYPE_RSS_090) { $xpathPrefix = '/rss/channel'; } else { $xpathPrefix = '/rdf:RDF/rss:channel'; } foreach ($this->extensions as $extension) { $extension->setXpathPrefix($xpathPrefix); } }
protected function loadExtensions() { $all = Reader::getExtensions(); $manager = Reader::getExtensionManager(); $feed = $all['feed']; foreach ($feed as $extension) { if (in_array($extension, $all['core'])) { continue; } $plugin = $manager->get($extension); $plugin->setDomDocument($this->getDomDocument()); $plugin->setType($this->data['type']); $plugin->setXpath($this->xpath); $this->extensions[$extension] = $plugin; } }
public function testRegistersUserExtension() { require_once __DIR__ . '/_files/My/Extension/JungleBooks/Entry.php'; require_once __DIR__ . '/_files/My/Extension/JungleBooks/Feed.php'; $manager = Reader\Reader::getExtensionManager(); $manager->setInvokableClass('JungleBooks\\Entry', 'My\\Extension\\JungleBooks\\Entry'); $manager->setInvokableClass('JungleBooks\\Feed', 'My\\Extension\\JungleBooks\\Feed'); Reader\Reader::registerExtension('JungleBooks'); $this->assertTrue(Reader\Reader::isRegistered('JungleBooks')); }
protected function loadExtensions() { $all = Reader\Reader::getExtensions(); $manager = Reader\Reader::getExtensionManager(); $feed = $all['feed']; foreach ($feed as $extension) { if (in_array($extension, $all['core'])) { continue; } if (!$manager->has($extension)) { throw new Exception\RuntimeException(sprintf('Unable to load extension "%s"; cannot find class', $extension)); } $plugin = $manager->get($extension); $plugin->setDomDocument($this->getDomDocument()); $plugin->setType($this->data['type']); $plugin->setXpath($this->xpath); $this->extensions[$extension] = $plugin; } }