1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | <?php /** * Univarsel Feed Writer * * FeedItem class - Used as feed element in FeedWriter class * * @package UnivarselFeedWriter * @author Anis uddin Ahmad <anisniit@gmail.com> * @link http://www.ajaxray.com/projects/rss */ class FeedItem { private $elements = array(); //Collection of feed elements private $version; /** * Constructor * * @param contant (RSS1/RSS2/ATOM) RSS2 is default. */ function __construct($version = RSS2) { $this->version = $version; } /** * Add an element to elements array * * @access public * @param srting The tag name of an element * @param srting The content of tag * @param array Attributes(if any) in 'attrName' => 'attrValue' format * @return void */ public function addElement($elementName, $content, $attributes = null) { $this->elements[$elementName]['name'] = $elementName; $this->elements[$elementName]['content'] = $content; $this->elements[$elementName]['attributes'] = $attributes; } /** * Set multiple feed elements from an array. * Elements which have attributes cannot be added by this method * * @access public * @param array array of elements in 'tagName' => 'tagContent' format. * @return void */ public function addElementArray($elementArray) { if(! is_array($elementArray)) return; foreach ($elementArray as $elementName => $content) { $this->addElement($elementName, $content); } } /** * Return the collection of elements in this feed item * * @access public * @return array */ public function getElements() { return $this->elements; } // Wrapper functions ------------------------------------------------------ /** * Set the 'dscription' element of feed item * * @access public * @param string The content of 'description' element * @return void */ public function setDescription($description) { $tag = ($this->version == ATOM)? 'summary' : 'description'; $this->addElement($tag, $description); } /** * @desc Set the 'title' element of feed item * @access public * @param string The content of 'title' element * @return void */ public function setTitle($title) { $this->addElement('title', $title); } /** * Set the 'date' element of feed item * * @access public * @param string The content of 'date' element * @return void */ public function setDate($date) { if(! is_numeric($date)) { $date = strtotime($date); } if($this->version == ATOM) { $tag = 'updated'; $value = date(DATE_ATOM, $date); } elseif($this->version == RSS2) { $tag = 'pubDate'; $value = date(DATE_RSS, $date); } else { $tag = 'dc:date'; $value = date("Y-m-d", $date); } $this->addElement($tag, $value); } /** * Set the 'link' element of feed item * * @access public * @param string The content of 'link' element * @return void */ public function setLink($link) { if($this->version == RSS2 || $this->version == RSS1) { $this->addElement('link', $link); } else { $this->addElement('link','',array('href'=>$link)); $this->addElement('id', FeedWriter::uuid($link,'urn:uuid:')); } } /** * Set the 'encloser' element of feed item * For RSS 2.0 only * * @access public * @param string The url attribute of encloser tag * @param string The length attribute of encloser tag * @param string The type attribute of encloser tag * @return void */ public function setEncloser($url, $length, $type) { $attributes = array('url'=>$url, 'length'=>$length, 'type'=>$type); $this->addElement('enclosure','',$attributes); } } // end of class FeedItem ?> |