protected function _createEntry(Zend_Feed_Entry_Abstract $item) { $entry = new Ls_Aggregator_Entry(); $entry->setUrl($item->link('alternate')); $entry->setTitle($item->title); $entry->setContent($item->content); if ($item instanceof Zend_Feed_Entry_Atom) { $entry->setUniqueId($item->id); $entry->setSummary($item->summary); $entry->setContentCreatedAt($this->_createDate($item->published, Zend_Date::ATOM)); $entry->setContentUpdatedAt($this->_createDate($item->updated, Zend_Date::ATOM)); foreach ($item->category as $category) { $entry->addCategory($category->offsetGet('term')); } } else { $entry->setUniqueId($item->guid); $entry->setSummary($item->description); $entry->setContentCreatedAt($this->_createDate($item->pubDate, Zend_Date::RSS)); $entry->setContentUpdatedAt($this->_createDate($item->updated, Zend_Date::RSS)); foreach ($item->category as $category) { $entry->addCategory($category); } } // Make sure we have both created and updated with something if ($entry->getContentUpdatedAt() == '' && $entry->getContentCreatedAt() == '') { $entry->setContentUpdatedAt(Zend_Date::now()); $entry->setContentCreatedAt(Zend_Date::now()); } if ($entry->getContentUpdatedAt() == '') { $entry->setContentUpdatedAt($entry->getContentCreatedAt()); } if ($entry->getContentCreatedAt() == '') { $entry->setContentCreatedAt($entry->getContentUpdatedAt()); } return $entry; }
/** * Easy access to <link> tags keyed by "rel" attributes. * * If $elt->link() is called with no arguments, we will attempt to * return the value of the <link> tag(s) like all other * method-syntax attribute access. If an argument is passed to * link(), however, then we will return the "href" value of the * first <link> tag that has a "rel" attribute matching $rel: * * $elt->link(): returns the value of the link tag. * $elt->link('self'): returns the href from the first <link rel="self"> in the entry. * * @param string $rel The "rel" attribute to look for. * @return mixed */ public function link($rel = null) { if ($rel === null) { return parent::__call('link', null); } // index link tags by their "rel" attribute. $links = parent::__get('link'); if (!is_array($links)) { if ($links instanceof Zend_Feed_Element) { $links = array($links); } else { return $links; } } foreach ($links as $link) { if (empty($link['rel'])) { $link['rel'] = 'alternate'; // see Atom 1.0 spec } if ($rel == $link['rel']) { return $link['href']; } } return null; }
/** * Overwrites parent::_call method to enable read access * to content:encoded element. * Please note that method-style write access is not currently supported * by parent method, consequently this method doesn't as well. * * @param string $var The element to get the string value of. * @param mixed $unused This parameter is not used. * @return mixed The node's value, null, or an array of nodes. */ public function __call($var, $unused) { switch ($var) { case 'content': $prefix = $this->_element->lookupPrefix('http://purl.org/rss/1.0/modules/content/'); return parent::__call("{$prefix}:encoded", $unused); default: return parent::__call($var, $unused); } }