/controllers/newsController.class.php

https://bitbucket.org/Kadet/pipecms · PHP · 216 lines · 174 code · 41 blank · 1 comment · 20 complexity · 610b1e3fd7c16c002135e2a7dfb40e18 MD5 · raw file

  1. <?php
  2. class newsController extends controller
  3. {
  4. public function page($params = array(), $data = array())
  5. {
  6. view::addTitleChunk(__('news'));
  7. view::$robots = "all";
  8. $newsModel = new newsModel(); // tworzenie modelu danych
  9. if(!isset($params['page'])) throw new messageException(__('error'), __('errWrongURL'));
  10. if($params['page'] > 1)
  11. {
  12. view::addTitleChunk(__('page'));
  13. view::addTitleChunk($params['page']);
  14. }
  15. $view = new HTMLview('news/all.tpl'); //tworzenie bufora treści
  16. $news = $newsModel->getLimited(($params['page'] - 1) * (int)self::$config->newsPerPage, (int)self::$config->newsPerPage, language::getLang());
  17. if(empty($news)) throw new messageException(__('info'), __('noNews'), array('text' => ''));
  18. $view->news = (is_array($news) ? $news : array($news)); //...wartości
  19. $view->count = $newsModel->getNewsCount();
  20. $view->page = $params['page'];
  21. return $view; // zwracanie bufora treści do strony
  22. }
  23. public function index($params = array(), $data = array())
  24. {
  25. return $this->page(array('page' => 1));
  26. }
  27. public function show($params = array(), $data = array())
  28. {
  29. view::addTitleChunk(__('news'));
  30. view::$robots = "all";
  31. if(!self::$router->match('news')) throw new messageException(__('error'), __('errWrongURL'));
  32. $newsModel = new newsModel();
  33. $news = $newsModel->get($params['id']);
  34. $newsModel->increaseViews($params['id']);
  35. if($news)
  36. {
  37. view::addTitleChunk($news->title);
  38. $view = new HTMLview('news/news.tpl');
  39. $news->content = BBcode::parse($news->content);
  40. $view->news = $news;
  41. return $view; // zwracanie bufora treści do strony
  42. }
  43. else
  44. throw new messageException(__('error'), __('errNewsNotExist'));
  45. }
  46. public function add($params = array(), $data = array())
  47. {
  48. view::addTitleChunk(__('news'));
  49. view::addTitleChunk(__('add'));
  50. view::$robots = "none";
  51. if(!self::$user->hasPermission('news/add')) // User hasn't permission? KILL HIM, em... throw exception.
  52. throw new messageException(__('error'), __('errNoPermission'), array('url' => array('news', 'add')));
  53. $newsModel = new newsModel();
  54. if(isset($data['preview']))
  55. {
  56. backup::save('news_new', $data);
  57. return $this->_preview($params, $data);
  58. }
  59. elseif(!isset($data['submit']))
  60. {
  61. $categories = $newsModel->getCategories();
  62. $view = new HTMLview('news/add-form.tpl');
  63. backup::load('news_new');
  64. $view->categories = $categories;
  65. unset($_SESSION['backup']); // backup? Now? Who needs it?
  66. return $view;
  67. }
  68. else
  69. {
  70. backup::save('news_new', $data);
  71. $_SESSION['backup'] = serialize($data);
  72. $newsModel->add(htmlspecialchars($data['title']), (isset($data['html']) ? $data['content'] : htmlspecialchars($data['content'])), language::getLang(), self::$user->id, time(), $data['category']);
  73. return self::message(__('success'), __('addNewsSuccess'), array('url' => array('index', 'index')));
  74. }
  75. }
  76. public function edit($params = array(), $data = array())
  77. {
  78. view::addTitleChunk(__('news'));
  79. view::addTitleChunk(__('edit'));
  80. view::$robots = "none";
  81. if(!self::$router->match('news'))
  82. throw new messageException(__('error'), __('errWrongURL'), array('url' => array('index', 'index')));
  83. if(!self::$user->hasPermission('news/edit'))
  84. throw new messageException(__('error'), __('errNoPermission'));
  85. $newsModel = new newsModel();
  86. if(isset($data['preview']))
  87. {
  88. backup::save('news_'.$params['id'], $data);
  89. return $this->_preview($params, $data);
  90. }
  91. elseif(!isset($data['submit']))
  92. {
  93. $categories = $newsModel->getCategories();
  94. $view = new HTMLview('news/edit-form.tpl');
  95. $news = $newsModel->get($params['id']);
  96. if(!$news)
  97. throw new messageException(__('error'), __('errNewsNotExist'));
  98. backup::load('news_'.$params['id']);
  99. $view->news = $news;
  100. $view->categories = $categories;
  101. return $view;
  102. }
  103. else
  104. {
  105. backup::save('news_'.$params['id'], $data);
  106. $newsModel->edit($params['id'], $data['title'], (isset($data['html']) ? $data['content'] : htmlspecialchars($data['content'])), $data['category']);
  107. return self::message(__('success'), __('editNewsSuccess'), array('url' => array('news', 'show', $params['name'], $params['id'])));
  108. }
  109. }
  110. public function delete($params = array(), $data = array())
  111. {
  112. view::addTitleChunk(__('news'));
  113. view::addTitleChunk(__('delete'));
  114. view::$robots = "none";
  115. if(!self::$router->match('news')) throw new messageException(__('error'), __('errWrongURL'), array('url' => array('index', 'index')));
  116. if(!self::$user->isLogged) throw new messageException(__('error'), __('errNotLoggedIn'), array('url' => array('index', 'index')));
  117. if(!self::$user->hasPermission('news/delete')) throw new messageException(__('error'), __('errNoPermission'), array('url' => array('index', 'index')));
  118. $newsModel = new newsModel();
  119. $newsModel->delete($params['id']);
  120. return self::message(__('success'), __('deleteNewsSuccess'), array('url' => array('index', 'index')));
  121. }
  122. public function category($params = array(), $data = array())
  123. {
  124. view::addTitleChunk(__('news'));
  125. view::addTitleChunk(__('category'));
  126. view::$robots = "all";
  127. if(self::$router->match('categoryPage') || self::$router->match('category'))
  128. {
  129. $newsModel = new newsModel();
  130. if(isset($params['page'])) $page = $params['page'];
  131. else $page = 1;
  132. $view = new HTMLview( 'news/all.tpl'); //tworzenie bufora treści
  133. $news = $newsModel->getLimitedFromCategory(($page - 1) * (int)self::$config->newsPerPage,(int)self::$config->newsPerPage, language::getLang(), $params['id']);
  134. //if(empty($news))throw new messageException(__('info'), __('noNews'), array('text' => ''));
  135. $category = $newsModel->getCategory($params['id']);
  136. if(!$category)
  137. throw new messageException(__('error'), __('errCategoryNotExist'));
  138. view::addTitleChunk($category->name);
  139. $view->category = $category;
  140. $view->title = $category->name;
  141. $view->news = (is_array($news) ? $news : array($news)); //...wartości
  142. $view->count = $newsModel->getNewsCountFromCategory($params['id']);
  143. $view->page = $page;
  144. if($page > 1)
  145. {
  146. view::addTitleChunk(__('page'));
  147. view::addTitleChunk($page);
  148. }
  149. return $view;
  150. }
  151. else
  152. throw new messageException(__('error'), __('errWrongURL'), array('url' => array('index', 'index')));
  153. }
  154. protected function _preview($params = array(), $data = array())
  155. {
  156. $newsModel = new newsModel();
  157. $category = $newsModel->getCategory($data['category']);
  158. $news = new stdClass();
  159. $_SESSION['backup'] = serialize($data);
  160. $news->added = time();
  161. $news->views = 0;
  162. $news->content = BBcode::parse((!isset($data['html']) ? stripslashes($data['content']) : htmlspecialchars($data['content'])));
  163. $news->title = $data['title'];
  164. $news->author = new stdClass();
  165. $news->author->id = self::$user->id;
  166. $news->author->login = self::$user->login;
  167. $news->category = new stdClass();
  168. $news->category->id = $data['category'];
  169. $news->category->name = $category->name;
  170. $view = new HTMLview( 'news/preview.tpl');
  171. $view->news = $news;
  172. return $view; // zwracanie bufora treści do strony
  173. }
  174. }
  175. ?>