protected function __add__($arg) { if ($arg instanceof AtomEntry) { $this->entry[] = $arg; } else { if ($arg instanceof self) { foreach ($arg->arEntry() as $entry) { $this->entry[] = $entry; } } else { if (is_implements_of($arg, "AtomInterface")) { $entry = new AtomEntry(); $entry->id($arg->atom_id()); $entry->title($arg->atom_title()); $entry->published($arg->atom_published()); $entry->updated($arg->atom_updated()); $entry->issued($arg->atom_issued()); $content = new AtomContent(); $content->value($arg->atom_content()); $entry->content($content); $summary = new AtomSummary(); $summary->value($arg->atom_summary()); $entry->summary($summary); $entry->link(new AtomLink("href=" . $arg->atom_href())); $entry->author(new AtomAuthor("name=" . $arg->atom_author())); $this->entry[] = $entry; } } } }
public function atom() { Rhaco::import("net.feed.atom.Atom"); $atom = new Atom(); $atom->title($this->title()); $atom->subtitle($this->description()); $atom->generator($this->webMaster()); $atom->updated($this->lastBuildDate()); $link = new AtomLink(); $link->href($this->link()); $atom->link($link); foreach ($this->arItem() as $item) { $entry = new AtomEntry(); $entry->title($item->title()); $entry->published($item->pubDate()); $author = new AtomAuthor(); $author->name($item->author()); $entry->author($author); $link = new AtomLink(); $link->href($item->link()); $entry->link($link); $content = new AtomContent(); $content->value($item->description()); $entry->content($content); $summary = new AtomSummary(); $summary->value($item->comments()); $entry->summary($summary); $atom->add($entry); } return $atom; /*** $src = text(' <rss version="2.0"> <channel> <title>rhaco</title> <link>http://rhaco.org</link> <description>php</description> <language>ja</language> <copyright>rhaco.org</copyright> <docs>hogehoge</docs> <lastBuildDate>2007-10-10T10:10:10+09:00</lastBuildDate> <managingEditor>tokushima</managingEditor> <pubDate>2007-10-10T10:10:10+09:00</pubDate> <webMaster>kazutaka</webMaster> <item> <title>rhaco</title> <link>http://rhaco.org</link> <description>rhaco desc</description> </item> <item> <title>everes</title> <link>http://www.everes.net</link> <description>everes desc</description> </item> </channel> </rss> '); $xml = Rss::parse($src); eq("2.0",$xml->version()); eq("rhaco",$xml->title()); eq("http://rhaco.org",$xml->link()); eq("php",$xml->description()); eq("ja",$xml->language()); eq("rhaco.org",$xml->copyright()); eq("hogehoge",$xml->docs()); eq(1191978610,$xml->lastBuildDate()); eq("Wed, 10 Oct 2007 10:10:10 +0900",$xml->fmLastBuildDate()); eq("tokushima",$xml->managingEditor()); eq(1191978610,$xml->pubDate()); eq("Wed, 10 Oct 2007 10:10:10 +0900",$xml->fmPubDate()); eq("kazutaka",$xml->webMaster()); eq(2,sizeof($xml->item())); $atom = $xml->atom(); eq(true,$atom instanceof Atom); eq("rhaco",$atom->title()); eq("php",$atom->subtitle()); eq(1191978610,$atom->updated()); eq("kazutaka",$atom->generator()); eq(2,sizeof($atom->entry())); */ }
public static function parse(&$src) { $args = func_get_args(); array_shift($args); $result = array(); foreach (Tag::anyhow($src)->in("entry") as $in) { $o = new self(); foreach ($args as $module) { $o->add_modules($module); } $o->id($in->f("id.value()")); $o->title($in->f("title.value()")); $o->published($in->f("published.value()")); $o->updated($in->f("updated.value()")); $o->issued($in->f("issued.value()")); $value = $in->value(); $o->content = AtomContent::parse($value); $o->summary = AtomSummary::parse($value); $o->link = AtomLink::parse($value); $o->author = AtomAuthor::parse($value); $o->parse_extra($value); $result[] = $o; $src = str_replace($in->plain(), "", $src); } return $result; }