<?php

function GenerateRSS($Data)
{
  global $Config;

  $Result = '<?xml version="1.0" encoding="'.$Config['Web']['Charset'].'" ?>'."\n". //<?
      '<rss version="2.0">'."\n".
      "  <channel>\n".
      "    <title>".$Data['Title']."</title>\n".
      "    <link>".$Data['Link']."</link>\n".
      "    <description>".$Data['Description']."</description>\n".
      "    <language>cs</language>\n".
      "    <webMaster>".$Data['WebmasterEmail']."</webMaster>\n".
      "    <pubDate>".date('r')."</pubDate>\n".
      "    <ttl>20</ttl>\n";
  foreach ($Data['Items'] as $Item)
  {
    $Result .= "    <item>\n".
        '      <title>'.htmlspecialchars($Item['Title'])."</title>\n".
        '      <description>'.htmlspecialchars($Item['Description'])."</description>\n".
        '      <pubDate>'.date('r',$Item['Time'])."</pubDate>\n".
        '      <link>'.$Item['Link']."</link>\n".
        "    </item>\n";
  }
  $Result .= "  </channel>\n".
      "</rss>";
  return $Result;
}

class PageRSS extends Page
{
  function Show(): string
  {
    $User = ModuleUser::Cast($this->System->GetModule('User'))->User;
    $this->RawPage = true;

    if (array_key_exists('channel', $_GET)) $ChannelName = $_GET['channel'];
      else $ChannelName = '';
    if (array_key_exists('token', $_GET)) $Token = $_GET['token'];
      else $Token = '';
    if (array_key_exists($ChannelName, $this->System->ModuleManager->Modules['News']->RSSChannels))
    {
      $Channel = $this->System->ModuleManager->Modules['News']->RSSChannels[$ChannelName];
      if ($User->Licence($Channel['Permission']) or
      $User->CheckToken($Channel['Permission'], $Token))
      {
        if (is_string($Channel['Callback'][0]))
        {
          $Class = new $Channel['Callback'][0]($this->System);
          $Method = $Channel['Callback'][1];
          $Output = $Class->$Method();
        } else $Output = call_user_func($Channel['Callback']);
      } else $Output = T('Access denied');
    } else $Output = 'Nezadán žádný kanál';
    return $Output;
  }
}
