feedController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. class feedController extends ActionController {
  3. public function addAction () {
  4. if (login_is_conf ($this->view->conf) && !is_logged ()) {
  5. Error::error (
  6. 403,
  7. array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page'))
  8. );
  9. } else {
  10. if (Request::isPost ()) {
  11. $url = Request::param ('url_rss');
  12. try {
  13. $feed = new Feed ($url);
  14. $feed->load ();
  15. $feedDAO = new FeedDAO ();
  16. $values = array (
  17. 'id' => $feed->id (),
  18. 'url' => $feed->url (),
  19. 'category' => null,
  20. 'name' => $feed->name (),
  21. 'website' => $feed->website (),
  22. 'description' => $feed->description (),
  23. );
  24. $feedDAO->addFeed ($values);
  25. $entryDAO = new EntryDAO ();
  26. $entries = $feed->entries ();
  27. foreach ($entries as $entry) {
  28. $values = array (
  29. 'id' => $entry->id (),
  30. 'guid' => $entry->guid (),
  31. 'title' => $entry->title (),
  32. 'author' => $entry->author (),
  33. 'content' => $entry->content (),
  34. 'link' => $entry->link (),
  35. 'date' => $entry->date (true),
  36. 'is_read' => $entry->isRead (),
  37. 'is_favorite' => $entry->isFavorite (),
  38. 'id_feed' => $feed->id ()
  39. );
  40. $entryDAO->addEntry ($values);
  41. }
  42. } catch (Exception $e) {
  43. // TODO ajouter une erreur : url non valide
  44. }
  45. Request::forward (array (), true);
  46. }
  47. }
  48. }
  49. public function actualizeAction () {
  50. $feedDAO = new FeedDAO ();
  51. $entryDAO = new EntryDAO ();
  52. $feeds = $feedDAO->listFeeds ();
  53. foreach ($feeds as $feed) {
  54. $feed->load ();
  55. $entries = $feed->entries ();
  56. foreach ($entries as $entry) {
  57. $values = array (
  58. 'id' => $entry->id (),
  59. 'guid' => $entry->guid (),
  60. 'title' => $entry->title (),
  61. 'author' => $entry->author (),
  62. 'content' => $entry->content (),
  63. 'link' => $entry->link (),
  64. 'date' => $entry->date (true),
  65. 'is_read' => $entry->isRead (),
  66. 'is_favorite' => $entry->isFavorite (),
  67. 'id_feed' => $feed->id ()
  68. );
  69. $entryDAO->addEntry ($values);
  70. }
  71. }
  72. $entryDAO->cleanOldEntries ($this->view->conf->oldEntries ());
  73. Request::forward (array (), true);
  74. }
  75. public function massiveImportAction () {
  76. if (login_is_conf ($this->view->conf) && !is_logged ()) {
  77. Error::error (
  78. 403,
  79. array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page'))
  80. );
  81. } else {
  82. $entryDAO = new EntryDAO ();
  83. $feedDAO = new FeedDAO ();
  84. $catDAO = new CategoryDAO ();
  85. $categories = Request::param ('categories', array ());
  86. $feeds = Request::param ('feeds', array ());
  87. foreach ($categories as $cat) {
  88. $values = array (
  89. 'id' => $cat->id (),
  90. 'name' => $cat->name (),
  91. 'color' => $cat->color ()
  92. );
  93. $catDAO->addCategory ($values);
  94. }
  95. foreach ($feeds as $feed) {
  96. $feed->load ();
  97. $entries = $feed->entries ();
  98. // Chargement du flux
  99. foreach ($entries as $entry) {
  100. $values = array (
  101. 'id' => $entry->id (),
  102. 'guid' => $entry->guid (),
  103. 'title' => $entry->title (),
  104. 'author' => $entry->author (),
  105. 'content' => $entry->content (),
  106. 'link' => $entry->link (),
  107. 'date' => $entry->date (true),
  108. 'is_read' => $entry->isRead (),
  109. 'is_favorite' => $entry->isFavorite (),
  110. 'id_feed' => $feed->id ()
  111. );
  112. $entryDAO->addEntry ($values);
  113. }
  114. // Enregistrement du flux
  115. $values = array (
  116. 'id' => $feed->id (),
  117. 'url' => $feed->url (),
  118. 'category' => $feed->category (),
  119. 'name' => $feed->name (),
  120. 'website' => $feed->website (),
  121. 'description' => $feed->description (),
  122. );
  123. $feedDAO->addFeed ($values);
  124. }
  125. Request::forward (array ('c' => 'configure', 'a' => 'importExport'));
  126. }
  127. }
  128. public function deleteAction () {
  129. if (login_is_conf ($this->view->conf) && !is_logged ()) {
  130. Error::error (
  131. 403,
  132. array ('error' => array ('Vous n\'avez pas le droit d\'accéder à cette page'))
  133. );
  134. } else {
  135. $id = Request::param ('id');
  136. $feedDAO = new FeedDAO ();
  137. $feedDAO->deleteFeed ($id);
  138. Request::forward (array ('c' => 'configure', 'a' => 'feed'), true);
  139. }
  140. }
  141. }