[formats] Allow multiple enclosures
All formats now support multiple enclosures. RSS will show a warning if more than one enclosure is used since many feed reader don't support multiple enclosures with RSS (also not clearly specified in the specification)
This commit is contained in:
parent
14c689e7a3
commit
72f40fbd75
3 changed files with 44 additions and 15 deletions
|
@ -27,9 +27,14 @@ class AtomFormat extends FormatAbstract{
|
||||||
$entryTimestamp = isset($item['timestamp']) ? $this->xml_encode(date(DATE_ATOM, $item['timestamp'])) : '';
|
$entryTimestamp = isset($item['timestamp']) ? $this->xml_encode(date(DATE_ATOM, $item['timestamp'])) : '';
|
||||||
$entryContent = isset($item['content']) ? $this->xml_encode($this->sanitizeHtml($item['content'])) : '';
|
$entryContent = isset($item['content']) ? $this->xml_encode($this->sanitizeHtml($item['content'])) : '';
|
||||||
|
|
||||||
$entryEnclosure = '';
|
$entryEnclosures = '';
|
||||||
if(isset($item['enclosure'])){
|
if(isset($item['enclosures'])){
|
||||||
$entryEnclosure = '<link rel="enclosure" href="' . $this->xml_encode($item['enclosure']) . '"/>';
|
foreach($item['enclosures'] as $enclosure){
|
||||||
|
$entryEnclosures .= '<link rel="enclosure" href="'
|
||||||
|
. $this->xml_encode($enclosure)
|
||||||
|
. '"/>'
|
||||||
|
. PHP_EOL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$entries .= <<<EOD
|
$entries .= <<<EOD
|
||||||
|
@ -43,7 +48,7 @@ class AtomFormat extends FormatAbstract{
|
||||||
<id>{$entryUri}</id>
|
<id>{$entryUri}</id>
|
||||||
<updated>{$entryTimestamp}</updated>
|
<updated>{$entryTimestamp}</updated>
|
||||||
<content type="html">{$entryContent}</content>
|
<content type="html">{$entryContent}</content>
|
||||||
{$entryEnclosure}
|
{$entryEnclosures}
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
EOD;
|
EOD;
|
||||||
|
|
|
@ -30,11 +30,21 @@ class HtmlFormat extends FormatAbstract {
|
||||||
. '</div>';
|
. '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$entryEnclosure = '';
|
$entryEnclosures = '';
|
||||||
if(isset($item['enclosure'])){
|
if(isset($item['enclosures'])){
|
||||||
$entryEnclosure = '<div class="enclosure"><a href="'
|
$entryEnclosures = '<div class="attachments"><p>Attachments:</p>';
|
||||||
. $this->sanitizeHtml($item['enclosure'])
|
|
||||||
. '">enclosure</a><div>';
|
foreach($item['enclosures'] as $enclosure){
|
||||||
|
$url = $this->sanitizeHtml($enclosure);
|
||||||
|
|
||||||
|
$entryEnclosures .= '<li class="enclosure"><a href="'
|
||||||
|
. $url
|
||||||
|
. '">'
|
||||||
|
. substr($url, strrpos($url, '/') + 1)
|
||||||
|
. '</a></li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$entryEnclosures .= '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$entries .= <<<EOD
|
$entries .= <<<EOD
|
||||||
|
@ -44,7 +54,7 @@ class HtmlFormat extends FormatAbstract {
|
||||||
{$entryTimestamp}
|
{$entryTimestamp}
|
||||||
{$entryAuthor}
|
{$entryAuthor}
|
||||||
{$entryContent}
|
{$entryContent}
|
||||||
{$entryEnclosure}
|
{$entryEnclosures}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
EOD;
|
EOD;
|
||||||
|
|
|
@ -31,9 +31,23 @@ class MrssFormat extends FormatAbstract {
|
||||||
$itemTimestamp = isset($item['timestamp']) ? $this->xml_encode(date(DATE_RFC2822, $item['timestamp'])) : '';
|
$itemTimestamp = isset($item['timestamp']) ? $this->xml_encode(date(DATE_RFC2822, $item['timestamp'])) : '';
|
||||||
$itemContent = isset($item['content']) ? $this->xml_encode($this->sanitizeHtml($item['content'])) : '';
|
$itemContent = isset($item['content']) ? $this->xml_encode($this->sanitizeHtml($item['content'])) : '';
|
||||||
|
|
||||||
$entryEnclosure = '';
|
$entryEnclosuresWarning = '';
|
||||||
if(isset($item['enclosure'])){
|
$entryEnclosures = '';
|
||||||
$entryEnclosure = '<enclosure url="' . $this->xml_encode($item['enclosure']) . '"/>';
|
if(isset($item['enclosures'])){
|
||||||
|
$entryEnclosures .= '<enclosure url="'
|
||||||
|
. $this->xml_encode($item['enclosures'][0])
|
||||||
|
. '"/>';
|
||||||
|
|
||||||
|
if(count($item['enclosures']) > 1){
|
||||||
|
$entryEnclosures .= PHP_EOL;
|
||||||
|
$entryEnclosuresWarning = '<br>Warning:
|
||||||
|
Some media files might not be shown to you. Consider using the ATOM format instead!';
|
||||||
|
foreach($item['enclosures'] as $enclosure){
|
||||||
|
$entryEnclosures .= '<atom:link rel="enclosure" href="'
|
||||||
|
. $enclosure . '" />'
|
||||||
|
. PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$items .= <<<EOD
|
$items .= <<<EOD
|
||||||
|
@ -43,9 +57,9 @@ class MrssFormat extends FormatAbstract {
|
||||||
<link>{$itemUri}</link>
|
<link>{$itemUri}</link>
|
||||||
<guid isPermaLink="true">{$itemUri}</guid>
|
<guid isPermaLink="true">{$itemUri}</guid>
|
||||||
<pubDate>{$itemTimestamp}</pubDate>
|
<pubDate>{$itemTimestamp}</pubDate>
|
||||||
<description>{$itemContent}</description>
|
<description>{$itemContent}{$entryEnclosuresWarning}</description>
|
||||||
<author>{$itemAuthor}</author>
|
<author>{$itemAuthor}</author>
|
||||||
{$entryEnclosure}
|
{$entryEnclosures}
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
EOD;
|
EOD;
|
||||||
|
|
Loading…
Reference in a new issue