PageRenderTime 40ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/filelink.php

https://github.com/eviweb/moodle-mod_turnitintool
PHP | 110 lines | 85 code | 19 blank | 6 comment | 19 complexity | ee0e9db26c9032e00e2347b9be59463f 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. $id = required_param('id', PARAM_INT); // Course Module ID, or
  9. $a = optional_param('a', 0, PARAM_INT); // turnitintool ID
  10. if ($id) {
  11. if (! $cm = get_coursemodule_from_id('turnitintool', $id)) {
  12. turnitintool_print_error("Course Module ID was incorrect");
  13. }
  14. if (! $course = turnitintool_get_record("course", "id", $cm->course)) {
  15. turnitintool_print_error("Course is misconfigured");
  16. }
  17. if (! $turnitintool = turnitintool_get_record("turnitintool", "id", $cm->instance)) {
  18. turnitintool_print_error("Course module is incorrect");
  19. }
  20. } else {
  21. if (! $turnitintool = turnitintool_get_record("turnitintool", "id", $a)) {
  22. turnitintool_print_error("Course module is incorrect");
  23. }
  24. if (! $course = turnitintool_get_record("course", "id", $turnitintool->course)) {
  25. turnitintool_print_error("Course is misconfigured");
  26. }
  27. if (! $cm = get_coursemodule_from_instance("turnitintool", $turnitintool->id, $course->id)) {
  28. turnitintool_print_error("Course Module ID was incorrect");
  29. }
  30. }
  31. require_login($course->id);
  32. $param_sub=optional_param('sub',null,PARAM_CLEAN);
  33. $param_type=optional_param('type',null,PARAM_CLEAN);
  34. $param_part=optional_param('part',null,PARAM_CLEAN);
  35. $param_papers=optional_param('papers',null,PARAM_CLEAN);
  36. if (!is_null($param_sub)) {
  37. if (!$submission = turnitintool_get_record('turnitintool_submissions','id',$param_sub)) {
  38. turnitintool_print_error('submissiongeterror', 'turnitintool', $CFG->wwwroot.'/mod/turnitintool/view.php?id='.$cm->id, NULL, __FILE__, __LINE__);
  39. exit();
  40. }
  41. if (!has_capability('mod/turnitintool:grade', get_context_instance(CONTEXT_MODULE, $cm->id)) AND $USER->id!=$submission->userid) {
  42. // Check to see if the user logged in is the user that submitted or is a grader (tutor)
  43. turnitintool_print_error('permissiondeniederror','turnitintool',NULL,NULL,__FILE__,__LINE__);
  44. exit();
  45. }
  46. $fs = get_file_storage();
  47. $file = $fs->get_file($cm->id,'mod_turnitintool','submission',$submission->id,'/',$submission->submission_filename);
  48. send_stored_file($file, 0, 0, true);
  49. } if (!is_null($param_part)) {
  50. if (!has_capability('mod/turnitintool:grade', get_context_instance(CONTEXT_MODULE, $cm->id))) {
  51. turnitintool_print_error('permissiondeniederror','turnitintool',NULL,NULL,__FILE__,__LINE__);
  52. exit();
  53. }
  54. $owner=turnitintool_get_owner($course->id);
  55. $loaderbar = null;
  56. $tii = new turnitintool_commclass(turnitintool_getUID($owner),$owner->firstname,$owner->lastname,$owner->email,2,$loaderbar);
  57. $post = new stdClass();
  58. $post->cid=turnitintool_getCID($course->id);
  59. $post->assignid=turnitintool_getAID($param_part);
  60. $post->ctl=turnitintool_getCTL($course->id);
  61. $post->assign=$turnitintool->name.' - '.turnitintool_partnamefromnum($param_part).' (Moodle '.$post->assignid.')';
  62. $post->fcmd=4;
  63. $tii->listSubmissions($post, get_string('downloadingfile','turnitintool'));
  64. if ($tii->getRerror()) {
  65. if (!$tii->getAPIunavailable()) {
  66. $reason=($tii->getRcode()==TURNITINTOOL_DB_UNIQUEID_ERROR) ? get_string('assignmentdoesnotexist','turnitintool') : $tii->getRmessage();
  67. } else {
  68. $reason=get_string('apiunavailable','turnitintool');
  69. }
  70. turnitintool_print_error('downloadingfileerror','turnitintool',NULL,NULL,__FILE__,__LINE__);
  71. exit();
  72. } else {
  73. $output = $tii->getFileData();
  74. if (function_exists('mb_strlen')) {
  75. $size = mb_strlen($output, '8bit');
  76. } else {
  77. $size = strlen($output);
  78. }
  79. header("Pragma: public");
  80. header("Expires: 0");
  81. header("Cache-control: must-revalidate, post-check=0, pre-check=0");
  82. header("Content-type: application/force-download");
  83. header("Content-type: application/octet-stream");
  84. header("Content-type: application/download");;
  85. header("Content-disposition: attachment; filename=".get_string('file','turnitintool')."_".$post->assignid.".xls");
  86. header("Content-transfer-encoding: binary ");
  87. header("Content-length: " . $size);
  88. echo $output;
  89. }
  90. }
  91. //?>