00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00016 final class AtomItemWorker extends Singleton implements FeedItemWorker
00017 {
00021 public static function me()
00022 {
00023 return Singleton::getInstance(__CLASS__);
00024 }
00025
00026 public function makeItems(SimpleXMLElement $xmlFeed)
00027 {
00028 $result = array();
00029
00030 foreach ($xmlFeed->entry as $entry) {
00031 $feedItem = FeedItem::create((string) $entry->title);
00032
00033 if (isset($entry->content))
00034 $feedItem->setContent(
00035 $this->makeFeedItemContent(
00036 $entry->content
00037 )
00038 );
00039
00040 if (isset($entry->summary))
00041 $feedItem->setSummary(
00042 $this->makeFeedItemContent(
00043 $entry->summary
00044 )
00045 );
00046
00047 if (isset($entry->id))
00048 $feedItem->setId(
00049 $entry->id
00050 );
00051
00052 $result[] =
00053 $feedItem->setPublished(
00054 Timestamp::create(
00055 strtotime((string) $entry->updated)
00056 )
00057 )->
00058 setLink((string) $entry->link);
00059 }
00060
00061 return $result;
00062 }
00063
00064 public function toXml(FeedItem $item)
00065 {
00066 throw new UnimplementedFeatureException('implement me!');
00067 }
00068
00069 private function makeFeedItemContent($content)
00070 {
00071 $feedItemContent = FeedItemContent::create();
00072
00073 if (isset($content->attributes()->type)) {
00074 switch ((string) $content->attributes()->type) {
00075
00076 case 'text':
00077
00078 $feedItemContent->
00079 setType(
00080 new FeedItemContentType(
00081 FeedItemContentType::TEXT
00082 )
00083 );
00084
00085 break;
00086
00087 case 'html':
00088
00089 $feedItemContent->
00090 setType(
00091 new FeedItemContentType(
00092 FeedItemContentType::HTML
00093 )
00094 );
00095
00096 break;
00097
00098 case 'xhtml':
00099
00100 $feedItemContent->
00101 setType(
00102 new FeedItemContentType(
00103 FeedItemContentType::XHTML
00104 )
00105 );
00106
00107 break;
00108 }
00109 }
00110
00111 return $feedItemContent->setBody((string) $content);
00112 }
00113 }
00114 ?>