PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/view.php

https://github.com/eviweb/moodle-mod_turnitintool
PHP | 424 lines | 349 code | 53 blank | 22 comment | 77 complexity | fda32eca1044ac21c520d61ebb08bbf8 MD5 | raw file
Possible License(s): GPL-3.0
  1. <?php
  2. /**
  3. * @package turnitintool
  4. * @copyright 2012 Turnitin
  5. */
  6. require_once("../../config.php");
  7. require_once("lib.php");
  8. require_once("../../lib/formslib.php");
  9. require_once("../../lib/form/text.php");
  10. require_once("../../lib/form/datetimeselector.php");
  11. require_once("../../lib/form/hidden.php");
  12. require_once("../../lib/form/button.php");
  13. require_once("../../lib/form/submit.php");
  14. if (!turnitintool_check_config()) {
  15. turnitintool_print_error('configureerror','turnitintool',NULL,NULL,__FILE__,__LINE__);
  16. exit();
  17. }
  18. $viewpage='view.php';
  19. $viewpage .= (isset($_REQUEST['id'])) ? '?id='.$_REQUEST['id'] : '';
  20. $viewpage .= (isset($_REQUEST['do'])) ? '&do='.$_REQUEST['do'] : '';
  21. turnitintool_activitylog($viewpage,"REQUEST");
  22. turnitintool_activitylog("lib.php Loaded","REQUIRE_ONCE");
  23. require_once($CFG->dirroot."/lib/uploadlib.php");
  24. turnitintool_activitylog("uploadlib.php Loaded","REQUIRE_ONCE");
  25. turnitintool_process_api_error();
  26. $id = required_param('id', PARAM_INT); // Course Module ID, or
  27. $a = optional_param('a', 0, PARAM_INT); // turnitintool ID
  28. if ($id) {
  29. if (! $cm = get_coursemodule_from_id('turnitintool', $id)) {
  30. turnitintool_print_error("Course Module ID was incorrect");
  31. }
  32. if (! $course = turnitintool_get_record("course", "id", $cm->course)) {
  33. turnitintool_print_error("Course is misconfigured");
  34. }
  35. if (! $turnitintool = turnitintool_get_record("turnitintool", "id", $cm->instance)) {
  36. turnitintool_print_error("Course module is incorrect");
  37. }
  38. } else {
  39. if (! $turnitintool = turnitintool_get_record("turnitintool", "id", $a)) {
  40. turnitintool_print_error("Course module is incorrect");
  41. }
  42. if (! $course = turnitintool_get_record("course", "id", $turnitintool->course)) {
  43. turnitintool_print_error("Course is misconfigured");
  44. }
  45. if (! $cm = get_coursemodule_from_instance("turnitintool", $turnitintool->id, $course->id)) {
  46. turnitintool_print_error("Course Module ID was incorrect");
  47. }
  48. }
  49. require_login($course->id);
  50. if (isset($PAGE) AND is_callable(array($PAGE->requires, 'js'))) { // Are we using new moodle or old?
  51. $jsurl = new moodle_url($CFG->wwwroot.'/mod/turnitintool/scripts/jquery-1.7.2.min.js');
  52. $PAGE->requires->js($jsurl,true);
  53. $jsurl = new moodle_url($CFG->wwwroot.'/mod/turnitintool/scripts/datatables.min.js');
  54. $PAGE->requires->js($jsurl);
  55. $jsurl = new moodle_url($CFG->wwwroot.'/mod/turnitintool/scripts/datatables.plugins.js');
  56. $PAGE->requires->js($jsurl);
  57. $jsurl = new moodle_url($CFG->wwwroot.'/mod/turnitintool/scripts/inboxtable.js');
  58. $PAGE->requires->js($jsurl);
  59. $jsurl = new moodle_url($CFG->wwwroot.'/mod/turnitintool/scripts/turnitintool.js');
  60. $PAGE->requires->js($jsurl,true);
  61. $cssurl = new moodle_url($CFG->wwwroot.'/mod/turnitintool/styles.css');
  62. $PAGE->requires->css($cssurl);
  63. } else {
  64. require_js($CFG->wwwroot.'/mod/turnitintool/scripts/jquery-1.7.2.min.js');
  65. require_js($CFG->wwwroot.'/mod/turnitintool/scripts/turnitintool.js');
  66. }
  67. turnitintool_activitylog("turnitintool.js Loaded","REQUIRE_JS");
  68. $param_jumppage=optional_param('jumppage',null,PARAM_CLEAN);
  69. $param_userid=optional_param('userid',null,PARAM_CLEAN);
  70. $param_post=optional_param('post',null,PARAM_CLEAN);
  71. $param_delete=optional_param('delete',null,PARAM_CLEAN);
  72. $param_update=optional_param('update',null,PARAM_CLEAN);
  73. $param_do=optional_param('do',null,PARAM_CLEAN);
  74. $param_enroll=optional_param('enroll',null,PARAM_CLEAN);
  75. $param_owner=optional_param('owner',null,PARAM_CLEAN);
  76. $param_anonid=optional_param('anonid',null,PARAM_CLEAN);
  77. $param_updategrade=optional_param('updategrade',null,PARAM_CLEAN);
  78. $param_up=optional_param('up',null,PARAM_CLEAN);
  79. $param_submissiontype=optional_param('submissiontype',null,PARAM_CLEAN);
  80. $param_submitted=optional_param('submitted',null,PARAM_CLEAN);
  81. $param_delpart=optional_param('delpart',null,PARAM_CLEAN);
  82. $param_unenrol=optional_param('unenrol',null,PARAM_CLEAN);
  83. $param_enroltutor=optional_param('enroltutor',null,PARAM_CLEAN);
  84. $param_s=optional_param('s',null,PARAM_CLEAN);
  85. $param_ob=optional_param('ob',null,PARAM_CLEAN);
  86. $param_sh=optional_param('sh',null,PARAM_CLEAN);
  87. $param_fr=optional_param('fr',null,PARAM_CLEAN);
  88. $param_export_data=optional_param('export_data',null,PARAM_CLEAN);
  89. $param_objectid=optional_param('objectid',null,PARAM_CLEAN);
  90. $param_partid=optional_param('partid',null,PARAM_CLEAN);
  91. $param_utp=optional_param('utp',null,PARAM_CLEAN);
  92. $param_enrollstudent=optional_param('enrollstudent',null,PARAM_CLEAN);
  93. $param_reloadrow=optional_param('reloadrow',null,PARAM_CLEAN);
  94. // Clean the post array so we can pass it into the functions below
  95. $post = array();
  96. foreach ( $_POST as $key => $value ) {
  97. // If 1.9 use clean_param to clean an array / if 2.0 use clean_param_array
  98. if ( is_array( $value ) AND is_callable( 'clean_param_array' ) ) {
  99. $post[$key] = clean_param_array( $value, PARAM_CLEAN );
  100. } else {
  101. $post[$key] = clean_param( $value, PARAM_CLEAN );
  102. }
  103. }
  104. if (!is_null($param_jumppage)) {
  105. turnitintool_url_jumpto($param_userid,$param_jumppage,$turnitintool,$param_utp,$param_objectid,$param_partid,$param_export_data);
  106. exit();
  107. }
  108. if (!is_null($param_delete)) {
  109. if (!$submission = turnitintool_get_record('turnitintool_submissions','id',$param_delete)) {
  110. print_error('submissiongeterror','turnitintool');
  111. exit();
  112. }
  113. turnitintool_delete_submission($cm,$turnitintool,$USER->id,$submission);
  114. exit();
  115. }
  116. $redirectlink=$CFG->wwwroot.'/mod/turnitintool/view.php?id='.$cm->id;
  117. $redirectlink.=(!is_null($param_do)) ? '&do='.$param_do : '&do=intro';
  118. $redirectlink.=(!is_null($param_fr)) ? '&fr='.$param_fr : '';
  119. $redirectlink.=(!is_null($param_sh)) ? '&sh='.$param_sh : '';
  120. $redirectlink.=(!is_null($param_ob)) ? '&ob='.$param_ob : '';
  121. if (!is_null($param_reloadrow)) {
  122. turnitintool_reloadinbox_row($cm,$turnitintool,$param_reloadrow);
  123. exit();
  124. }
  125. if (!is_null($param_update)) {
  126. $loaderbar = new turnitintool_loaderbarclass(2);
  127. turnitintool_update_all_report_scores($cm,$turnitintool,$param_update,$loaderbar);
  128. turnitintool_redirect($redirectlink);
  129. exit();
  130. }
  131. if (!is_null($param_enrollstudent)) {
  132. turnitintool_enroll_student($cm,$turnitintool,$param_enrollstudent);
  133. }
  134. if (!is_null($param_enroll)) {
  135. turnitintool_enroll_all_students($cm,$turnitintool);
  136. turnitintool_redirect($redirectlink);
  137. exit();
  138. }
  139. if (!is_null($param_do) AND $param_do=="tutors" AND !is_null($param_unenrol)) {
  140. $tutors=turnitintool_remove_tiitutor($cm,$turnitintool,$param_unenrol);
  141. if (!is_null($tutors->error)) {
  142. $notice=$tutors->error;
  143. } else {
  144. turnitintool_redirect($CFG->wwwroot.'/mod/turnitintool/view.php?id='.$cm->id.'&do=tutors');
  145. exit();
  146. }
  147. }
  148. if (!is_null($param_do) AND $param_do=="tutors" AND !is_null($param_enroltutor)) {
  149. $tutors=turnitintool_add_tiitutor($cm,$turnitintool,$param_enroltutor);
  150. if (!is_null($tutors->error)) {
  151. $notice=$tutors->error;
  152. } else {
  153. turnitintool_redirect($CFG->wwwroot.'/mod/turnitintool/view.php?id='.$cm->id.'&do=tutors');
  154. exit();
  155. }
  156. }
  157. if (!is_null($param_do) AND $param_do=="tutors" AND is_null($param_unenrol) AND is_null($param_enroltutor)) {
  158. $tutors=turnitintool_get_tiitutors($cm,$turnitintool);
  159. if (!is_null($tutors->error)) {
  160. $notice=$tutors->error;
  161. } else {
  162. $notice=null;
  163. }
  164. }
  165. if (!is_null($param_do) AND $param_do=="changeowner") {
  166. turnitintool_ownerprocess($cm,$turnitintool,$param_owner);
  167. turnitintool_redirect($CFG->wwwroot.'/mod/turnitintool/view.php?id='.$cm->id.'&do=tutors');
  168. exit();
  169. }
  170. if (!is_null($param_do) AND $turnitintool->autoupdates==1 AND $param_do=="allsubmissions" AND !is_null($param_anonid)) {
  171. $loaderbar = new turnitintool_loaderbarclass(3);
  172. turnitintool_revealuser($cm,$turnitintool,$post,$loaderbar);
  173. turnitintool_redirect($CFG->wwwroot.'/mod/turnitintool/view.php?id='.$cm->id.'&do=allsubmissions&update=1');
  174. exit();
  175. }
  176. if (!is_null($param_updategrade) OR isset($post['updategrade']) OR isset($post["updategrade_x"])) {
  177. turnitintool_update_form_grades($cm,$turnitintool,$post);
  178. }
  179. if (!is_null($param_up)) { // Manual Submission to Turnitin
  180. if (!$submission = turnitintool_get_record('turnitintool_submissions','id',$param_up)) {
  181. print_error('submissiongeterror','turnitintool');
  182. exit();
  183. }
  184. turnitintool_upload_submission($cm,$turnitintool,$submission);
  185. exit();
  186. }
  187. if (!is_null($param_submissiontype) AND $param_do=='submissions') {
  188. if (isset($param_userid)) {
  189. $thisuserid=$param_userid;
  190. } else {
  191. $thisuserid=$USER->id;
  192. }
  193. if ($param_submissiontype==1) {
  194. $notice=turnitintool_dofileupload($cm,$turnitintool,$thisuserid,$post);
  195. } else if ($param_submissiontype==2) {
  196. $notice=turnitintool_dotextsubmission($cm,$turnitintool,$thisuserid,$post);
  197. }
  198. if ($turnitintool->autosubmission AND !empty($notice["subid"])) {
  199. if (!$submission = turnitintool_get_record('turnitintool_submissions','id',$notice["subid"])) {
  200. print_error('submissiongeterror','turnitintool');
  201. exit();
  202. }
  203. turnitintool_upload_submission($cm,$turnitintool,$submission);
  204. exit();
  205. }
  206. }
  207. if (!is_null($param_submitted) AND $param_do=='intro') {
  208. $notice=turnitintool_update_partnames($cm,$turnitintool,$post);
  209. }
  210. if (!is_null($param_delpart) AND $param_do=='intro') {
  211. $notice=turnitintool_delete_part($cm,$turnitintool,$param_delpart);
  212. }
  213. if (!is_null($param_submitted) AND $param_do=='notes') {
  214. $notice=turnitintool_process_notes($cm,$turnitintool,$param_s,$post);
  215. }
  216. if (!is_null($param_submitted) AND $param_do=='options') {
  217. $notice=turnitintool_process_options($cm,$turnitintool,$post);
  218. }
  219. add_to_log($course->id, "turnitintool", "view", "view.php?id=$cm->id", "User viewed assignment '$turnitintool->name'", "$cm->id");
  220. /// Print the page header
  221. $strturnitintools = get_string("modulenameplural", "turnitintool");
  222. $strturnitintool = get_string("modulename", "turnitintool");
  223. if (!is_callable('build_navigation')) {
  224. $navigation = array(
  225. array('title' => $course->shortname, 'url' => $CFG->wwwroot."/course/view.php?id=$course->id", 'type' => 'course'),
  226. array('title' => $strturnitintools, 'url' => $CFG->wwwroot."/mod/turnitintool/index.php?id=$course->id", 'type' => 'activity'),
  227. array('title' => format_string($turnitintool->name), 'url' => '', 'type' => 'activityinstance')
  228. );
  229. } else {
  230. $navigation = build_navigation('',$cm);
  231. }
  232. turnitintool_header($cm,
  233. $course,
  234. $_SERVER["REQUEST_URI"],
  235. $turnitintool->name,
  236. $SITE->fullname,
  237. $navigation,
  238. "",
  239. "",
  240. true,
  241. update_module_button($cm->id, $course->id, $strturnitintool),
  242. navmenu($course)
  243. );
  244. /// Check to see if groups are being used and abstract for 1.8 if neccessary
  245. if (!is_callable('groups_get_activity_group')) {
  246. $changegroup = optional_param('group', -1, PARAM_INT);
  247. $cm->currentgroup=get_and_set_current_group($course, $cm->groupmode, $changegroup);
  248. setup_and_print_groups($course, $cm->groupmode, $redirectlink);
  249. } else {
  250. $groupmode = groups_get_activity_groupmode($cm);
  251. if ($groupmode) {
  252. groups_get_activity_group($cm, true);
  253. groups_print_activity_menu($cm, $redirectlink);
  254. }
  255. }
  256. // Print the main part of the page
  257. echo '<div id="turnitintool_style">';
  258. if (!is_null($param_do)) {
  259. $do=$param_do;
  260. } else {
  261. $do='intro';
  262. }
  263. // $do=ACTION
  264. // $do=submissions >>> Student Submission Page
  265. // $do=intro >>> Turnitin Assignment Intro Page
  266. // $do=allsubmissions >>> Tutor View All Submissions
  267. // $do=bulkupload >>> Tutor Bulk Upload Student Submissions
  268. // $do=viewtext >>> View Student Text Submission
  269. // $do=submissiondetails >>> View Submission Details
  270. $studentdos=array('submissions','intro','viewtext','submissiondetails','notes');
  271. $graderdos=array('allsubmissions','options','changeowner','tutors');
  272. // If an unrecognised DO request produce error
  273. if (!in_array($do,$studentdos) AND !in_array($do,$graderdos)) {
  274. turnitintool_print_error('dorequesterror','turnitintool');
  275. exit();
  276. } else if (!has_capability('mod/turnitintool:grade', get_context_instance(CONTEXT_MODULE, $cm->id)) AND in_array($do,$graderdos)) {
  277. turnitintool_print_error('permissiondeniederror','turnitintool');
  278. exit();
  279. }
  280. echo '<br />';
  281. turnitintool_draw_menu($cm,$do);
  282. if ($do=='intro') {
  283. if (isset($notice['error'])) {
  284. turnitintool_box_start('generalbox boxwidthwide boxaligncenter error', 'errorbox');
  285. echo $notice['message'];
  286. turnitintool_box_end();
  287. } else {
  288. $notice=NULL;
  289. }
  290. // Update the GradeBook to make sure the grade stays 'hidden' until and wasn't revealed by modedit
  291. turnitintool_grade_item_update( $turnitintool );
  292. echo turnitintool_duplicatewarning($cm,$turnitintool);
  293. echo turnitintool_introduction($cm,$turnitintool,$notice);
  294. }
  295. if ($do=='submissions') {
  296. if ( !has_capability('mod/turnitintool:grade', get_context_instance(CONTEXT_MODULE, $cm->id))
  297. AND !has_capability('mod/turnitintool:submit', get_context_instance(CONTEXT_MODULE, $cm->id))) {
  298. turnitintool_print_error('permissiondeniederror','turnitintool');
  299. exit();
  300. } else {
  301. echo turnitintool_view_student_submissions($cm,$turnitintool);
  302. if (isset($notice["error"])) {
  303. turnitintool_box_start('generalbox boxwidthwide boxaligncenter error', 'errorbox');
  304. echo $notice["error"];
  305. turnitintool_box_end();
  306. }
  307. echo turnitintool_view_submission_form($cm,$turnitintool);
  308. }
  309. }
  310. if ($do=='allsubmissions') {
  311. if (!empty($notice)) {
  312. turnitintool_box_start('generalbox boxwidthwide boxaligncenter error', 'errorbox');
  313. echo $notice;
  314. turnitintool_box_end();
  315. }
  316. if (isset($param_ob)) {
  317. $ob=$param_ob;
  318. } else {
  319. $ob=1;
  320. }
  321. echo turnitintool_view_all_submissions($cm,$turnitintool,$ob);
  322. }
  323. if ($do=='notes') {
  324. echo turnitintool_view_notes($cm,$turnitintool,$param_s,$post);
  325. if (isset($notice['error'])) {
  326. turnitintool_box_start('generalbox boxwidthwide boxaligncenter error', 'errorbox');
  327. echo $notice['message'];
  328. turnitintool_box_end();
  329. } else {
  330. $notice=NULL;
  331. }
  332. echo turnitintool_addedit_notes($cm,$turnitintool,$param_s,$post,$notice);
  333. }
  334. if ($do=='options') {
  335. if (!empty($notice)) {
  336. turnitintool_box_start('generalbox boxwidthwide boxaligncenter', 'general');
  337. echo $notice;
  338. turnitintool_box_end();
  339. }
  340. echo turnitintool_view_options($cm,$turnitintool);
  341. }
  342. if ($do=='tutors') {
  343. if (!is_null($notice)) {
  344. turnitintool_box_start('generalbox boxwidthwide boxaligncenter error', 'errorbox');
  345. echo $notice;
  346. turnitintool_box_end();
  347. } else {
  348. echo turnitintool_view_tiitutors($cm,$turnitintool,$tutors);
  349. }
  350. }
  351. // Finish the page
  352. echo '</div>';
  353. if (isset($PAGE) AND @is_callable(array($PAGE->requires, 'js'))) { // Are we using new moodle or old?
  354. // We already added the Moodle 2.0+ stuff
  355. } else {
  356. // These need to go to the botton here to avoid conflicts
  357. require_js($CFG->wwwroot.'/mod/turnitintool/scripts/datatables.min.js');
  358. require_js($CFG->wwwroot.'/mod/turnitintool/scripts/datatables.plugins.js');
  359. require_js($CFG->wwwroot.'/mod/turnitintool/scripts/inboxtable.js');
  360. }
  361. turnitintool_footer($course);
  362. $module=turnitintool_get_record('modules','name','turnitintool');
  363. $parts=turnitintool_get_records('turnitintool_parts','turnitintoolid',$turnitintool->id);
  364. $parts_string="(";
  365. foreach ($parts as $part) {
  366. $parts_string.=($parts_string!="(") ? " | " : "";
  367. $parts_string.= $part->partname.': '.$part->tiiassignid;
  368. }
  369. $parts_string.=")";
  370. echo '<!-- Turnitin Moodle Direct Version: '.$module->version.' - '.$parts_string.' -->';
  371. /* ?> */