00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00016 final class RssChannelWorker extends Singleton implements FeedChannelWorker
00017 {
00021 public static function me()
00022 {
00023 return Singleton::getInstance(__CLASS__);
00024 }
00025
00029 public function makeChannel(SimpleXMLElement $xmlFeed)
00030 {
00031 if (
00032 (!isset($xmlFeed->channel))
00033 || (!isset($xmlFeed->channel->title))
00034 )
00035 throw new WrongStateException(
00036 'there are no channels in given rss'
00037 );
00038
00039 $feedChannel =
00040 FeedChannel::create((string) $xmlFeed->channel->title);
00041
00042 if (isset($xmlFeed->channel->link))
00043 $feedChannel->setLink((string) $xmlFeed->channel->link);
00044
00045 return $feedChannel;
00046 }
00047
00048 public function toXml(FeedChannel $channel, $itemsXml)
00049 {
00050 return
00051 '<rss version="'.RssFeedFormat::VERSION.'">'
00052 .'<channel>'
00053 .'<title>'.$channel->getTitle().'</title>'
00054 .(
00055 $channel->getLink()
00056 ? '<link>'.$channel->getLink().'</link>'
00057 : null
00058 )
00059 .(
00060 $channel->getDescription()
00061 ?
00062 '<description>'
00063 .$channel->getDescription()
00064 .'</description>'
00065 : null
00066 )
00067 .$itemsXml
00068 .'</channel>'
00069 .'</rss>';
00070 }
00071 }
00072 ?>