diff --git a/formats/MrssFormat.php b/formats/MrssFormat.php new file mode 100644 index 00000000..0753059f --- /dev/null +++ b/formats/MrssFormat.php @@ -0,0 +1,86 @@ +getExtraInfos(); + $title = htmlspecialchars($extraInfos['name']); + $uri = htmlspecialchars($extraInfos['uri']); + $icon = 'http://g.etfv.co/'. $uri .'?icon.jpg'; + + $items = ''; + foreach($this->getDatas() as $data){ + $itemTitle = strip_tags(is_null($data->title) ? '' : $data->title); + $itemUri = is_null($data->uri) ? '' : $data->uri; + $itemThumbnailUri = is_null($data->thumbnailUri) ? '' : $data->thumbnailUri; + $itemTimestamp = is_null($data->timestamp) ? '' : date(DATE_RFC2822, $data->timestamp); + // We prevent content from closing the CDATA too early. + $itemContent = is_null($data->content) ? '' : htmlspecialchars($this->sanitizeHtml(str_replace(']]>','',$data->content))); + + $items .= << + {$itemTitle} + {$itemUri} + {$itemUri} + {$itemTimestamp} + {$itemContent} + {$itemTitle} + + + +EOD; + } + + /* + TODO : + - Security: Disable Javascript ? + - : Define new extra info ? + - : RFC look with xhtml, keep this in spite of ? + */ + + /* Data are prepared, now let's begin the "MAGIE !!!" */ + $toReturn = ''; + $toReturn .= << + + {$title} + {$uri}/ + {$title} + + {$items} + + +EOD; + + // Remove invalid non-UTF8 characters + + // We cannot use iconv because of a bug in some versions of iconv. + // See http://www.php.net/manual/fr/function.iconv.php#108643 + //$toReturn = iconv("UTF-8", "UTF-8//IGNORE", $toReturn); + // So we use mb_convert_encoding instead: + ini_set('mbstring.substitute_character', 'none'); + $toReturn= mb_convert_encoding($toReturn, 'UTF-8', 'UTF-8'); + return $toReturn; + } + + public function display(){ + $this + ->setContentType('application/rss+xml; charset=UTF-8') // We force UTF-8 in RSS output. + ->callContentType(); + + return parent::display(); + } +}