/app/controllers/articles_controller.php

https://gitlab.com/matijabelec/vodic-za-prezivljavanje · PHP · 290 lines · 240 code · 50 blank · 0 comment · 58 complexity · da6f33bca0203a56a5b1ac8a689d27cf MD5 · raw file

  1. <?php
  2. class Articles_controller extends Controller {
  3. public function __construct() {
  4. $this->view = new Articles_view;
  5. $this->model = new Articles_model;
  6. }
  7. public function index($args) {
  8. Redirect('/articles/view');
  9. }
  10. public function view($args) {
  11. Auth::login_check();
  12. if(Auth::role_check(PROJECT_USER_ROLE_ADMIN) ) {
  13. $articles = Data_model::get_articles();
  14. echo $this->view->view($articles);
  15. } else
  16. return RET_ERR;
  17. }
  18. public function read($args) {
  19. Auth::login_check();
  20. if(count($args) < URL_ARGUMENTS_1)
  21. return RET_ERR;
  22. $articleid = $args[URL_ARG_1];
  23. if(Auth::role_check(PROJECT_USER_ROLE_ADMIN) ) {
  24. $userid = Auth::userid();
  25. $article = Data_model::get_article($articleid);
  26. $comments = Data_model::get_comments_for_article($articleid);
  27. $grade = Data_model::get_article_grade_by_subscriber($articleid, $userid);
  28. $gradescnt = Data_model::get_article_grade($articleid);
  29. echo $this->view->read($article, $comments, $grade, $gradescnt);
  30. } elseif(Auth::role_check(PROJECT_USER_ROLE_MODERATOR) ||
  31. Auth::role_check(PROJECT_USER_ROLE_REGISTERED) ) {
  32. $userid = Auth::userid();
  33. if(!Data_model::check_area_subscription_by_article($articleid, $userid) ) {
  34. return RET_ERR;
  35. }
  36. $article = Data_model::get_article($articleid);
  37. $comments = Data_model::get_comments_for_article($articleid);
  38. $grade = Data_model::get_article_grade_by_subscriber($articleid, $userid);
  39. $gradescnt = Data_model::get_article_grade($articleid);
  40. $rate = true;
  41. $articledata = Data_model::get_article($articleid);
  42. $areaid = $articledata['id_podrucja'];
  43. if(Data_model::check_area_moderation($areaid, $userid) )
  44. $rate = false;
  45. echo $this->view->read($article, $comments, $grade, $gradescnt, $rate);
  46. } else
  47. return RET_ERR;
  48. }
  49. public function create($args) {
  50. Auth::login_check();
  51. if(count($args) < URL_ARGUMENTS_1)
  52. return RET_ERR;
  53. if(count($args) >= URL_ARGUMENTS_2) {
  54. $articleid = $args[URL_ARG_2];
  55. }
  56. $areaid = $args[URL_ARG_1];
  57. if(Auth::role_check(PROJECT_USER_ROLE_ADMIN) ) {
  58. $userid = Auth::userid();
  59. if(isset($_POST['naslov']) ) {
  60. $article = $_POST;
  61. $article['datum_objave'] = Server_time::get_virtualTime();
  62. $article['id_podrucja'] = $areaid;
  63. $article['id_korisnika'] = $userid;
  64. $article['status'] = 1;
  65. $dir = "files/";
  66. $oke = 0;
  67. if(isset($articleid) ) {
  68. $article['id_clanka'] = $articleid;
  69. if(Data_model::update_article($article) )
  70. $oke = 1;
  71. } else {
  72. $articleid = Data_model::create_article($article);
  73. $oke = 1;
  74. }
  75. $x = count($_FILES['file_to_upl']['name']);
  76. if($x) {
  77. for($i=0; $i<$x; $i++) {
  78. $file = $dir . basename($_FILES['file_to_upl']['name'][$i]);
  79. $ok = 1;
  80. if(file_exists($file) ) $ok = 0;
  81. if($_FILES['file_to_upl']["size"][$i] > 100000) $ok = 0;
  82. if($ok) {
  83. if(move_uploaded_file($_FILES['file_to_upl']['tmp_name'][$i], $file) )
  84. $success = true;
  85. }
  86. $succes = false;
  87. $ftype = $_FILES['file_to_upl']['type'][$i];
  88. if($ftype=='image/jpeg' || $ftype=='image/gif' || $ftype=='image/jpg' || $ftype=='image/png') {
  89. $material['naziv_materijala'] = $_FILES['file_to_upl']['name'][$i];
  90. $material['id_korisnika'] = $userid;
  91. $material['id_clanka'] = $articleid;
  92. $material['id_tipa_materijala'] = 1;
  93. $material['putanja'] = WEBSITE_ROOT_PATH . $file;
  94. $material['datum_objave'] = Server_time::get_virtualTime();
  95. Data_model::add_material_for_article($material);
  96. }
  97. }
  98. }
  99. if($oke)
  100. Redirect('/areas/read/' . $areaid);
  101. }
  102. $article = Data_model::get_empty_article();
  103. $article['link-back'] = 'areas/read/' . $areaid;
  104. $article['link'] = 'articles/create/' . $areaid;
  105. $article['status'] = 1;
  106. if(isset($articleid) ) {
  107. $art2 = Data_model::get_article($articleid);
  108. $article['naslov'] = $art2['naslov'];
  109. $article['sadrzaj'] = $art2['sadrzaj'];
  110. $article['link'] = 'articles/create/' . $areaid . '/' . $articleid;
  111. }
  112. echo $this->view->create($article);
  113. } elseif(Auth::role_check(PROJECT_USER_ROLE_MODERATOR) ) {
  114. $userid = Auth::userid();
  115. if(!Data_model::check_area_moderation($areaid, $userid) ) {
  116. return RET_ERR;
  117. }
  118. if(isset($_POST['naslov']) ) {
  119. $article = $_POST;
  120. $article['datum_objave'] = Server_time::get_virtualTime();
  121. $article['id_podrucja'] = $areaid;
  122. $article['id_korisnika'] = $userid;
  123. $article['status'] = 1;
  124. $dir = "files/";
  125. $oke = 0;
  126. if(isset($articleid) ) {
  127. $article['id_clanka'] = $articleid;
  128. if(Data_model::update_article($article) )
  129. $oke = 1;
  130. } else {
  131. $articleid = Data_model::create_article($article);
  132. $oke = 1;
  133. }
  134. $x = count($_FILES['file_to_upl']['name']);
  135. if($x) {
  136. for($i=0; $i<$x; $i++) {
  137. $file = $dir . basename($_FILES['file_to_upl']['name'][$i]);
  138. $ok = 1;
  139. if(file_exists($file) ) $ok = 0;
  140. if($_FILES['file_to_upl']["size"][$i] > 100000) $ok = 0;
  141. if($ok) {
  142. if(move_uploaded_file($_FILES['file_to_upl']['tmp_name'][$i], $file) )
  143. $success = true;
  144. }
  145. $succes = false;
  146. $ftype = $_FILES['file_to_upl']['type'][$i];
  147. if($ftype=='image/jpeg' || $ftype=='image/gif' || $ftype=='image/jpg' || $ftype=='image/png') {
  148. $material['naziv_materijala'] = $_FILES['file_to_upl']['name'][$i];
  149. $material['id_korisnika'] = $userid;
  150. $material['id_clanka'] = $articleid;
  151. $material['id_tipa_materijala'] = 1;
  152. $material['putanja'] = WEBSITE_ROOT_PATH . $file;
  153. $material['datum_objave'] = Server_time::get_virtualTime();
  154. Data_model::add_material_for_article($material);
  155. }
  156. }
  157. }
  158. if($oke)
  159. Redirect('/areas/read/' . $areaid);
  160. }
  161. $article = Data_model::get_empty_article();
  162. $article['link-back'] = 'areas/read/' . $areaid;
  163. $article['link'] = 'articles/create/' . $areaid;
  164. $article['status'] = 1;
  165. if(isset($articleid) ) {
  166. $art2 = Data_model::get_article($articleid);
  167. $article['naslov'] = $art2['naslov'];
  168. $article['sadrzaj'] = $art2['sadrzaj'];
  169. $article['link'] = 'articles/create/' . $areaid . '/' . $articleid;
  170. }
  171. echo $this->view->create($article);
  172. } else
  173. return RET_ERR;
  174. }
  175. public function grade($args) {
  176. Auth::login_check();
  177. if(Auth::role_check(PROJECT_USER_ROLE_GUEST) )
  178. RET_ERR;
  179. if(count($args) < URL_ARGUMENTS_2)
  180. return RET_ERR;
  181. $userid = Auth::userid();
  182. $articleid = $args[URL_ARG_1];
  183. $gradecnt = $args[URL_ARG_2];
  184. if(!Data_model::check_area_subscription_by_article($articleid, $userid) )
  185. Redirect('/articles/read/' . $articleid);
  186. $articledata = Data_model::get_article($articleid);
  187. $areaid = $articledata['id_podrucja'];
  188. if(Data_model::check_area_moderation($areaid, $userid) )
  189. Redirect('/articles/read/' . $articleid);
  190. if($gradecnt=='0') {
  191. if(Data_model::ungrade_article($articleid, $userid) )
  192. Redirect('/articles/read/' . $articleid);
  193. } elseif($gradecnt=='1' ||
  194. $gradecnt=='2' ||
  195. $gradecnt=='3' ||
  196. $gradecnt=='4' ||
  197. $gradecnt=='5') {
  198. $grade['id_korisnika'] = $userid;
  199. $grade['id_clanka'] = $articleid;
  200. $grade['ocjena'] = $gradecnt;
  201. $grade['datum_ocjene'] = Server_time::get_virtualTime();
  202. if(Data_model::grade_article($grade) )
  203. Redirect('/articles/read/' . $articleid);
  204. }
  205. Redirect('/articles/read/' . $articleid);
  206. }
  207. public function ajax($args) {
  208. Auth::login_check();
  209. $argc = count($args);
  210. if($argc >= URL_ARGUMENTS_1) {
  211. switch($args[URL_ARG_1]) {
  212. case 'articles-for-area':
  213. if($argc < URL_ARGUMENTS_2)
  214. break;
  215. if(Auth::role_check(PROJECT_USER_ROLE_GUEST) ) {
  216. $areaid = $args[URL_ARG_2];
  217. $articles = Data_model::get_articles_for_area($areaid);
  218. echo $this->view->ajax_view($articles);
  219. } elseif(Auth::role_check(PROJECT_USER_ROLE_ADMIN) ) {
  220. $areaid = $args[URL_ARG_2];
  221. $articles = Data_model::get_articles_for_area($areaid);
  222. echo $this->view->ajax_view_reg($articles);
  223. } else {
  224. $areaid = $args[URL_ARG_2];
  225. $userid = Auth::userid();
  226. $articles = Data_model::get_articles_for_area($areaid);
  227. if(Data_model::check_area_subscription($areaid, $userid) )
  228. echo $this->view->ajax_view_reg($articles);
  229. else
  230. echo $this->view->ajax_view($articles);
  231. }
  232. return;
  233. default:
  234. break;
  235. }
  236. }
  237. return;
  238. }
  239. }
  240. ?>