feedController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. class feedController extends ActionController {
  3. public function addAction () {
  4. if (Request::isPost ()) {
  5. $url = Request::param ('url_rss');
  6. try {
  7. $feed = new Feed ($url);
  8. $feed->load ();
  9. $entries = $feed->entries ();
  10. $entryDAO = new EntryDAO ();
  11. foreach ($entries as $entry) {
  12. $values = array (
  13. 'id' => $entry->id (),
  14. 'guid' => $entry->guid (),
  15. 'title' => $entry->title (),
  16. 'author' => $entry->author (),
  17. 'content' => $entry->content (),
  18. 'link' => $entry->link (),
  19. 'date' => $entry->date (true),
  20. 'is_read' => $entry->isRead (),
  21. 'is_favorite' => $entry->isFavorite (),
  22. 'id_feed' => $feed->id ()
  23. );
  24. $entryDAO->addEntry ($values);
  25. }
  26. $feedDAO = new FeedDAO ();
  27. $values = array (
  28. 'id' => $feed->id (),
  29. 'url' => $feed->url (),
  30. 'category' => $feed->category (),
  31. 'name' => $feed->name (),
  32. 'website' => $feed->website (),
  33. 'description' => $feed->description (),
  34. );
  35. $feedDAO->addFeed ($values);
  36. } catch (Exception $e) {
  37. // TODO ajouter une erreur : url non valide
  38. }
  39. Request::forward (array (), true);
  40. }
  41. }
  42. public function actualizeAction () {
  43. $feedDAO = new FeedDAO ();
  44. $entryDAO = new EntryDAO ();
  45. $feeds = $feedDAO->listFeeds ();
  46. foreach ($feeds as $feed) {
  47. $feed->load ();
  48. $entries = $feed->entries ();
  49. foreach ($entries as $entry) {
  50. $values = array (
  51. 'id' => $entry->id (),
  52. 'guid' => $entry->guid (),
  53. 'title' => $entry->title (),
  54. 'author' => $entry->author (),
  55. 'content' => $entry->content (),
  56. 'link' => $entry->link (),
  57. 'date' => $entry->date (true),
  58. 'is_read' => $entry->isRead (),
  59. 'is_favorite' => $entry->isFavorite (),
  60. 'id_feed' => $feed->id ()
  61. );
  62. $entryDAO->addEntry ($values);
  63. // TODO gérer suppression des articles trop vieux (à paramétrer)
  64. }
  65. }
  66. Request::forward (array (), true);
  67. }
  68. public function massiveImportAction () {
  69. $entryDAO = new EntryDAO ();
  70. $feedDAO = new FeedDAO ();
  71. $catDAO = new CategoryDAO ();
  72. $categories = Request::param ('categories', array ());
  73. $feeds = Request::param ('feeds', array ());
  74. foreach ($categories as $cat) {
  75. $values = array (
  76. 'id' => $cat->id (),
  77. 'name' => $cat->name (),
  78. 'color' => $cat->color ()
  79. );
  80. $catDAO->addCategory ($values);
  81. }
  82. foreach ($feeds as $feed) {
  83. $feed->load ();
  84. $entries = $feed->entries ();
  85. // Chargement du flux
  86. foreach ($entries as $entry) {
  87. $values = array (
  88. 'id' => $entry->id (),
  89. 'guid' => $entry->guid (),
  90. 'title' => $entry->title (),
  91. 'author' => $entry->author (),
  92. 'content' => $entry->content (),
  93. 'link' => $entry->link (),
  94. 'date' => $entry->date (true),
  95. 'is_read' => $entry->isRead (),
  96. 'is_favorite' => $entry->isFavorite (),
  97. 'id_feed' => $feed->id ()
  98. );
  99. $entryDAO->addEntry ($values);
  100. }
  101. // Enregistrement du flux
  102. $values = array (
  103. 'id' => $feed->id (),
  104. 'url' => $feed->url (),
  105. 'category' => $feed->category (),
  106. 'name' => $feed->name (),
  107. 'website' => $feed->website (),
  108. 'description' => $feed->description (),
  109. );
  110. $feedDAO->addFeed ($values);
  111. }
  112. Request::forward (array ('c' => 'configure', 'a' => 'importExport'));
  113. }
  114. }