You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.5 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. <?php
  2. //~ Include RSS Fusion
  3. require_once 'vendor/RSS-Fusion/index.php';
  4. //~ Check if conf file exist
  5. if(!array_key_exists('c', $_GET)
  6. OR !isset($_GET['c'])
  7. OR !file_exists(TL_ROOT . '/../../c/'.$_GET['c'])){
  8. exit;
  9. }
  10. $conf = TL_ROOT . '/../../c/'.$_GET['c'];
  11. //~ Update file date (file is deleted if is not updated every 3 weeks)
  12. touch($conf);
  13. //~ Open conf
  14. $oConf = json_decode(file_get_contents($conf));
  15. if($oConf && gettype($oConf) == 'object'){
  16. $_links = $oConf->flux;
  17. //~ Set config
  18. \Config::set('where', $oConf->where);
  19. \Config::set('_starWords', $oConf->_starWords);
  20. \Config::set('_badWords', $oConf->_badWords);
  21. //~ Load feeds
  22. $oFeeds = new FeedReader($_links);
  23. if(!is_null($oFeeds->objParseFeed)){
  24. $_items = array();
  25. $_c = array();
  26. foreach($oFeeds->objParseFeed->items as $item){
  27. if(!empty($item['link']) && !in_array($item['link'], $_c)){
  28. //~ Delete duplicate item by link
  29. array_push($_c, $item['link']);
  30. //~ Keywords filter
  31. if((count(Config::get('_starWords')) && $item['show'] == 'star')
  32. OR (!count(Config::get('_starWords')) && $item['show'] == 'show')){
  33. array_push($_items, $item);
  34. }
  35. }
  36. }
  37. }
  38. //~ Generate RSS
  39. $rssfeed = '<?xml version="1.0" encoding="UTF-8"?>';
  40. $rssfeed .= '<rss version="2.0">';
  41. $rssfeed .= '<channel>';
  42. $rssfeed .= '<title>Flux personnalisé RSS Fusion</title>';
  43. $rssfeed .= '<link>https://framagit.org/Erase/RSS-Fusion-demo</link>';
  44. $rssfeed .= '<description>Flux généré avec RSS Fusion</description>';
  45. if(count($_items)){
  46. foreach ($_items as $item){
  47. $rssfeed .= '<item>';
  48. $rssfeed .= '<title>'.html_entity_decode($item['title']).'</title>';
  49. $rssfeed .= '<link>'.$item['link'].'</link>';
  50. $rssfeed .= '<description><![CDATA['.$item['description'].']]></description>';
  51. $rssfeed .= '<pubDate>'.date('r', $item['pubdate']).'</pubDate>';
  52. $rssfeed .= '<category>'.$item['category'].'</category>';
  53. $rssfeed .= '<enclosure url="'.$item['enclosure'].'" />';
  54. $rssfeed .= '<permalink>'.$item['permalink'].'</permalink>';
  55. $rssfeed .= '<show>'.$item['show'].'</show>';
  56. $rssfeed .= '<base>'.$item['base'].'</base>';
  57. $rssfeed .= '</item>';
  58. }
  59. }
  60. $rssfeed .= '</channel>';
  61. $rssfeed .= '</rss>';
  62. //~ Return RSS content
  63. header('Content-type: application/xml');
  64. echo $rssfeed;
  65. }