controller.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. class Controller {
  3. private $request = null;
  4. private $template = '';
  5. private $view = null;
  6. private $scraper = null;
  7. /**
  8. * Konstruktor, erstellet den Controller.
  9. *
  10. * @param Array $request Array aus $_GET & $_POST.
  11. */
  12. public function __construct($request) {
  13. $this->view = new View();
  14. $this->request = $request;
  15. $this->template = !empty($request['view']) ? $request['view'] : 'default';
  16. $GLOBALS['db'] = new Database($GLOBALS['conf']);
  17. if(!empty($request['action']) && $request['action'] === "scrape") {
  18. ignore_user_abort(true);
  19. set_time_limit(0);
  20. $source = $GLOBALS['db']->getAllAssoc("sources", "id", $request['sourceID']);
  21. if($source[0]['type'] == 0) { // Series
  22. $this->scraper = new SeriesScraper();
  23. $this->scraper->scrapeFolder($request['sourceID']);
  24. } else {
  25. $this->scraper = new MovieScraper();
  26. $this->scraper->scrapeFolder($request['sourceID']);
  27. }
  28. }
  29. if(!empty($request['action']) && $request['action'] === "scrapeSingleTV") {
  30. ignore_user_abort(true);
  31. set_time_limit(0);
  32. $this->scraper = new SeriesScraper();
  33. $this->scraper->downloadSeriesByID($request['moviedbID'], urldecode($request['path']), $request['sourceID']);
  34. }
  35. if(!empty($request['action']) && $request['action'] === "scrapeSingleMovie") {
  36. ignore_user_abort(true);
  37. set_time_limit(0);
  38. $this->scraper = new MovieScraper();
  39. $this->scraper->downloadMovieByID($request['moviedbID'], urldecode($request['path']), $request['sourceID']);
  40. }
  41. if(!empty($request['action']) && $request['action'] === "login") {
  42. User::login($request);
  43. }
  44. if(!empty($request['action']) && $request['action'] === "logout") {
  45. User::logout();
  46. }
  47. if(!empty($request['action']) && $request['action'] === "removeSeries") {
  48. SeriesScraper::remove($request['seriesID']);
  49. }
  50. if(!empty($request['action']) && $request['action'] === "updateSeries") {
  51. $this->scraper = new SeriesScraper();
  52. $this->scraper->update($request['seriesID']);
  53. }
  54. if(!empty($request['action']) && $request['action'] === "removeMovie") {
  55. MovieScraper::remove($request['movieID']);
  56. }
  57. if(!empty($request['action']) && $request['action'] === "updateMovie") {
  58. $this->scraper = new MovieScraper();
  59. $this->scraper->update($request['movieID']);
  60. }
  61. if(!empty($request['action']) && $request['action'] === "updateUserInfo") {
  62. User::update($request['newPassword'], $request['newPasswordConfirmation'], $request['newEmail'], $request['oldEmail']);
  63. }
  64. if(!empty($request['action']) && $request['action'] === "invite") {
  65. User::invite($request['inviteMail']);
  66. }
  67. if(!empty($_SESSION['user'])) {
  68. $GLOBALS['user'] = unserialize($_SESSION['user']);
  69. }
  70. if(empty($_SESSION['user']) && !empty($_SESSION['loggedIn']) && $_SESSION['loggedIn']) {
  71. $_SESSION['user'] = serialize(new User($_SESSION['mail']));
  72. }
  73. }
  74. /**
  75. * Methode zum anzeigen des Contents.
  76. *
  77. * @return String Content der Applikation.
  78. */
  79. public function display() {
  80. if(!empty($_SESSION['loggedIn']) && $_SESSION['loggedIn']) {
  81. $view = new View();
  82. $headerView = new View();
  83. $footerView = new View();
  84. switch($this->template) {
  85. case 'admin':
  86. if($GLOBALS['user']->getAdmin() == 0) {
  87. echo "neeeee";
  88. exit(1);
  89. }
  90. $view->setTemplate('admin');
  91. $view->assign('sources', $GLOBALS['db']->getAllAssoc("sources"));
  92. $view->assign('series', Model::getSeries());
  93. $view->assign('movies', Model::getMovies());
  94. break;
  95. case 'scrape':
  96. $view->setTemplate('scrape');
  97. $view->assign('scraper', $this->scraper);
  98. break;
  99. case 'seasons':
  100. $view->setTemplate('seasons');
  101. $view->assign('seasons', Model::getSeasonsBySeriesID($this->request['seriesID']));
  102. break;
  103. case 'season':
  104. $view->setTemplate('season');
  105. $view->assign('episodes', Model::getEpisodesBySeasonID($this->request['seasonID']));
  106. break;
  107. case 'episode':
  108. $view->setTemplate('episode');
  109. $view->assign('episode', Model::getEpisodeByID($this->request['episodeID']));
  110. $view->assign('videoFile', Model::getAbsouluteVideoPathByEpisodeID($this->request['episodeID']));
  111. break;
  112. case 'movie':
  113. $view->setTemplate('movie');
  114. $view->assign('movie', Model::getMovieByID($this->request['movieID']));
  115. $view->assign('videoFile', Model::getAbsouluteVideoPathByMovieID($this->request['movieID']));
  116. break;
  117. case 'user':
  118. $view->setTemplate('user');
  119. break;
  120. case 'default':
  121. default:
  122. $view->setTemplate('content');
  123. $view->assign('series', Model::getSeries());
  124. $view->assign('movies', Model::getMovies());
  125. }
  126. $this->view->setTemplate('matrix');
  127. $headerView->setTemplate('header');
  128. $footerView->setTemplate('footer');
  129. $this->view->assign('header', $headerView->loadTemplate());
  130. $this->view->assign('footer', $footerView->loadTemplate());
  131. $this->view->assign('content', $view->loadTemplate());
  132. return $this->view->loadTemplate();
  133. } else {
  134. $view = new View();
  135. $view->setTemplate('login');
  136. return $view->loadTemplate();
  137. }
  138. }
  139. }
  140. ?>