AtomItemWorker.class.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************************
00003  *   Copyright (C) 2007 by Dmitry A. Lomash, Dmitry E. Demidov             *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU Lesser General Public License as        *
00007  *   published by the Free Software Foundation; either version 3 of the    *
00008  *   License, or (at your option) any later version.                       *
00009  *                                                                         *
00010  ***************************************************************************/
00011 /* $Id: AtomItemWorker.class.php 4687 2007-12-09 18:57:18Z voxus $ */
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 ?>

Generated on Sun Dec 9 21:56:24 2007 for onPHP by  doxygen 1.5.4