Files
ms1inscription-v5/rapports/components/rss_feed_generator.php
2026-05-13 09:43:32 -04:00

136 lines
3.6 KiB
PHP

<?php
require_once 'components/common.php';
require_once 'components/common_utils.php';
require_once 'utils/string_utils.php';
class RssUtils
{
public static function CreateTag($tagName, $content, $useCData = false)
{
if ($useCData)
return "<$tagName><![CDATA[$content]]></$tagName>";
else
return "<$tagName>$content</$tagName>";
}
}
class RssChannel
{
private $title;
private $link;
private $description;
//
private $items;
public function __construct($title, $link, $description)
{
$this->items = array();
$this->SetTitle($title);
$this->SetLink($link);
$this->SetDescription($description);
}
public function SetTitle($value)
{ $this->title = $value; }
public function GetTitle()
{ return $this->title; }
public function SetLink($value)
{ $this->link = $value; }
public function GetLink()
{ return $this->link; }
public function SetDescription($value)
{ $this->description = $value; }
public function GetDescription()
{ return $this->description; }
public function GetItems()
{
return $this->items;
}
public function AddItem(RssItem $rssItem)
{
$this->items[] = $rssItem;
}
private function GenerateItemRss(RssItem $rssItem)
{
$result = '';
AddStr($result, '<item>');
AddStr($result, RssUtils::CreateTag('title', StringUtils::EscapeXmlString($rssItem->GetTitle())));
AddStr($result, RssUtils::CreateTag('link', StringUtils::EscapeXmlString($rssItem->GetLink())));
AddStr($result, RssUtils::CreateTag('description', $rssItem->GetDescription(), true));
if ($rssItem->GetPublicationDate() != null)
AddStr($result,
RssUtils::CreateTag(
'pubDate',
StringUtils::EscapeXmlString($rssItem->GetPublicationDate()->ToRfc822String())
)
);
AddStr($result, '</item>');
return $result;
}
public function GenerateRss()
{
$result = '<?xml version="1.0" encoding="utf-8"?>';
AddStr($result, '<rss version="2.0">');
AddStr($result, '<channel>');
AddStr($result, RssUtils::CreateTag('title', StringUtils::EscapeXmlString($this->GetTitle())));
AddStr($result, RssUtils::CreateTag('link', StringUtils::EscapeXmlString($this->GetLink())));
AddStr($result, RssUtils::CreateTag('description', $this->GetDescription()));
foreach($this->GetItems() as $item)
AddStr($result, $this->GenerateItemRss($item));
AddStr($result, '</channel>');
AddStr($result, '</rss>');
return $result;
}
}
class RssItem
{
private $title;
private $link;
private $description;
public function __construct($title, $link, $description)
{
$this->SetTitle($title);
$this->SetLink($link);
$this->SetDescription($description);
$this->SetPublicationDate(null);
}
public function SetTitle($value)
{ $this->title = $value; }
public function GetTitle()
{ return $this->title; }
public function SetLink($value)
{ $this->link = $value; }
public function GetLink()
{ return $this->link; }
public function SetDescription($value)
{ $this->description = $value; }
public function GetDescription()
{ return $this->description; }
public function SetPublicationDate(SMDateTime $value = null)
{ $this->publicationDate = $value; }
public function GetPublicationDate()
{ return $this->publicationDate; }
}
?>