locallib.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. function get_comments($cmid, $id){
  3. global $DB, $USER, $CFG;
  4. $tp = $CFG->prefix; // gets moodle tables prefix, not everyone uses mdl_
  5. $sql = "
  6. SELECT gf.id gf_id,
  7. gf.grade,
  8. gf.comment gf_comment,
  9. gf.contextid gf_contextid,
  10. gf.fileid gf_fileid,
  11. gf.name gf_name,
  12. gs.name gs_name,
  13. gs.description gs_description,
  14. gst.name gst_name,
  15. gst.description gst_description,
  16. fileid
  17. FROM ".$tp."gradeimporter_feedback gf
  18. JOIN ".$tp."gradeimporter_submission gs
  19. ON gf.submissionid = gs.id
  20. JOIN ".$tp."gradeimporter_submissiontype gst
  21. ON gs.type = gst.id
  22. WHERE gf.studentid = ?";
  23. $records = $DB->get_records_sql($sql, array('studentid' => $USER->id));
  24. $data = array();
  25. if (count($records)) {
  26. foreach ($records as $value) {
  27. if (!array_key_exists($value->gst_name, $data)) $data[$value->gst_name] = array();
  28. $fileurl = buildurl($cmid, $value->gf_id, $value->gf_name);
  29. $data[$value->gst_name][] = array($value->gs_name, $value->grade, $value->gf_comment, $fileurl);
  30. }
  31. }
  32. return $data;
  33. }
  34. function get_teacher_view($cmid, $gradeimporterid, $enrolledusers){
  35. global $DB, $CFG;
  36. $tp = $CFG->prefix; // gets moodle tables prefix, not everyone uses mdl_
  37. $table = new html_table();
  38. $table->align = array('center');
  39. $table->attributes = array('class'=>'generaltable mod_index');
  40. //creates table head
  41. $subrow = new html_table_row();
  42. $cell = new html_table_cell(get_string('nameCol', 'gradeimporter'));
  43. $cell->style = "border:1px solid black";
  44. $cell->colspan = 1;
  45. $subrow->cells[] = $cell;
  46. $submissionsSQL = "SELECT id, name
  47. FROM ".$tp."gradeimporter_submission
  48. WHERE gradeimporterid = $gradeimporterid
  49. ORDER BY id";
  50. $submissions = $DB->get_records_sql($submissionsSQL);
  51. foreach ($submissions as $submission){
  52. $subname = editSub($submission->name, $gradeimporterid, $cmid, $submission->id);
  53. $cell = new html_table_cell($subname);
  54. $cell->colspan = 2;
  55. $cell->style = "border:1px solid black";
  56. $subrow->cells[] = $cell;
  57. //adds 2 align, one for grade and another to the file
  58. $table->align[] = 'center';
  59. $table->align[] = 'center';
  60. }
  61. $table->data[] = $subrow;
  62. //all submissions names are on the table
  63. $sql = " SELECT gs.id gs_id,
  64. gs.gradeimporterid gs_gradeimporterid,
  65. gs.type gs_type,
  66. gs.name gs_name,
  67. gst.name gst_name,
  68. gf.id gf_id,
  69. gf.studentid gf_studentid,
  70. gf.grade gf_grade,
  71. gf.fileid gf_fileid,
  72. gf.contextid gf_contextid,
  73. gf.name gf_name,
  74. user.firstname user_firstname,
  75. user.lastname user_lastname
  76. FROM ".$tp."gradeimporter_feedback gf
  77. JOIN ".$tp."user user
  78. ON user.id = gf.studentid
  79. JOIN ".$tp."gradeimporter_submission gs
  80. ON gs.id = gf.submissionid
  81. JOIN ".$tp."gradeimporter_submissiontype gst
  82. ON gst.id = gs.type
  83. WHERE gs.gradeimporterid = $gradeimporterid
  84. ORDER BY user.firstname, user.lastname, gs.id, gf.id";
  85. $records = $DB->get_recordset_sql($sql);
  86. $usersList = array();
  87. foreach ($enrolledusers as $user){
  88. $usersList[$user->id] = array('name'=>$user->firstname." ".$user->lastname);
  89. }
  90. //ksort($usersList);
  91. foreach ($records as $record){
  92. $url = buildurl($cmid, $record->gf_id, $record->gf_name);
  93. $usersList[$record->gf_studentid][$record->gs_id] = array('grade'=>$record->gf_grade, 'file'=>$url);
  94. }
  95. foreach($usersList as $user){
  96. $row = new html_table_row();
  97. $cell = new html_table_cell($user['name']);
  98. $cell->style = "border:1px solid black";
  99. $row->cells[] = $cell;
  100. foreach ($submissions as $submission){
  101. if (array_key_exists($submission->id, $user)){
  102. $url = $user[$submission->id]['file'];
  103. $grade = $user[$submission->id]['grade'];
  104. } else{
  105. $url = '-';
  106. $grade = '-';
  107. }
  108. $cell = new html_table_cell ($grade);
  109. $cell->style = "border:1px solid black; border-right:0";
  110. $row->cells[] = $cell;
  111. $cell = new html_table_cell ($url);
  112. $cell->style = "border:1px solid black; border-left:0";
  113. $row->cells[] = $cell;
  114. }
  115. $table->data[] = $row;
  116. }
  117. echo html_writer::table($table);
  118. }
  119. require_once($CFG->libdir . '/filelib.php');
  120. require_once("$CFG->libdir/csvlib.class.php");
  121. function buildurl($cmid, $fileid, $filename){
  122. $fileurl = new moodle_url("/mod/gradeimporter/view.php", array('id' => $cmid, 'fileid' => $fileid, 'filename' => $filename, 'action' => 1));
  123. return "<a href=$fileurl target=_blank> $filename</a>";
  124. }
  125. function editSub($subname, $gradeimporterid, $cmid, $subid){
  126. $url = new moodle_url("/mod/gradeimporter/submission.php", array('id'=>$gradeimporterid, 'cmid'=>$cmid, 'subid'=>$subid, 'update'=>1));
  127. return $subname.'<a href='.$url.' target="_blank"><i class="icon fa fa-pencil fa-fw" title="'.get_string('editSub','gradeimporter').'" aria-label="'.get_string('editSub','gradeimporter').'"></i>';
  128. }
  129. function exportCSV($context){
  130. $enrolledusers = get_enrolled_users($context, 'mod/gradeimporter:student');
  131. $header = array('id', 'name', 'email', 'grade', 'comment', 'file');
  132. $csvexport = new csv_export_writer();
  133. $csvexport->set_filename('config');
  134. $csvexport->add_data($header);
  135. foreach ($enrolledusers as $value) {
  136. $name = $value->firstname . ' ' . $value->lastname;
  137. $studententry = array($value->id, $name, $value->email, '', '', '');
  138. $csvexport->add_data($studententry);
  139. }
  140. $csvexport->download_file();
  141. //$dlfile = $csvexporter->download_array('config', $data);
  142. }