/** * Get an array with feed authors * * @return array */ public function getAuthors() { if (array_key_exists('authors', $this->_data)) { return $this->_data['authors']; } $authors = array(); $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc11:creator'); if (!$list->length) { $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc10:creator'); } if (!$list->length) { $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc11:publisher'); if (!$list->length) { $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc10:publisher'); } } if ($list->length) { foreach ($list as $author) { $authors[] = array('name' => $author->nodeValue); } $authors = new Zend_Feed_Reader_Collection_Author(Zend_Feed_Reader::arrayUnique($authors)); } else { $authors = null; } $this->_data['authors'] = $authors; return $this->_data['authors']; }
/** * Get an array with feed authors * * @return array */ public function getAuthors() { if (array_key_exists('authors', $this->_data)) { return $this->_data['authors']; } $list = $this->_xpath->query('//atom:author'); $authors = array(); if ($list->length) { foreach ($list as $author) { $author = $this->_getAuthor($author); if (!empty($author)) { $authors[] = $author; } } } if (count($authors) == 0) { $authors = null; } else { $authors = new Zend_Feed_Reader_Collection_Author(Zend_Feed_Reader::arrayUnique($authors)); } $this->_data['authors'] = $authors; return $this->_data['authors']; }
/** * Get an array with feed authors * * @return array */ public function getAuthors() { if (array_key_exists('authors', $this->_data)) { return $this->_data['authors']; } $authors = array(); $list = $this->getXpath()->query($this->getXpathPrefix() . '//atom:author'); if (!$list->length) { /** * TODO: Limit query to feed level els only! */ $list = $this->getXpath()->query('//atom:author'); } if ($list->length) { foreach ($list as $author) { $author = $this->_getAuthor($author); if (!empty($author)) { $authors[] = $author; } } } if (count($authors) == 0) { $authors = null; } else { $authors = new Zend_Feed_Reader_Collection_Author(Zend_Feed_Reader::arrayUnique($authors)); } $this->_data['authors'] = $authors; return $this->_data['authors']; }
/** * Get an array with feed authors * * @return array */ public function getAuthors() { if (array_key_exists('authors', $this->_data)) { return $this->_data['authors']; } $authors = array(); $authors_dc = $this->getExtension('DublinCore')->getAuthors(); if (!empty($authors_dc)) { foreach ($authors_dc as $author) { $authors[] = array( 'name' => $author['name'] ); } } /** * Technically RSS doesn't specific author element use at the feed level * but it's supported on a "just in case" basis. */ if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { $list = $this->_xpath->query('//author'); } else { $list = $this->_xpath->query('//rss:author'); } if ($list->length) { foreach ($list as $author) { $string = trim($author->nodeValue); $email = null; $name = null; $data = array(); // Pretty rough parsing - but it's a catchall if (preg_match("/^.*@[^ ]*/", $string, $matches)) { $data['email'] = trim($matches[0]); if (preg_match("/\((.*)\)$/", $string, $matches)) { $data['name'] = $matches[1]; } $authors[] = $data; } } } if (count($authors) == 0) { $authors = $this->getExtension('Atom')->getAuthors(); } else { $authors = new Zend_Feed_Reader_Collection_Author( Zend_Feed_Reader::arrayUnique($authors) ); } if (count($authors) == 0) { $authors = null; } $this->_data['authors'] = $authors; return $this->_data['authors']; }