locallib.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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->attributes['class'] = 'generaltable mod_index';
  39. $table->align = array();
  40. //creates table head
  41. /*$subrow = new html_table_row();
  42. $subrow->cells[] = new html_table_cell(get_string('nameCol', 'gradeimporter'));
  43. */
  44. $subrow = array(get_string('nameCol', 'gradeimporter'));
  45. $table->align[] = 'center';
  46. $submissionsSQL = "SELECT id, name
  47. FROM mdl_gradeimporter_submission
  48. WHERE gradeimporterid = 1
  49. ORDER BY id";
  50. $submissions = $DB->get_records_sql($submissionsSQL);
  51. foreach ($submissions as $submission){
  52. $subrow[] = $submission->name;
  53. $table->align[] = 'center';
  54. }
  55. $table->head = $subrow;
  56. //all submissions names are on the table
  57. $sql = " SELECT gs.id gs_id,
  58. gs.gradeimporterid gs_gradeimporterid,
  59. gs.type gs_type,
  60. gs.name gs_name,
  61. gst.name gst_name,
  62. gf.id gf_id,
  63. gf.studentid gf_studentid,
  64. gf.grade gf_grade,
  65. gf.fileid gf_fileid,
  66. gf.contextid gf_contextid,
  67. gf.name gf_name,
  68. user.firstname user_firstname,
  69. user.lastname user_lastname
  70. FROM ".$tp."gradeimporter_feedback gf
  71. JOIN ".$tp."user user
  72. ON user.id = gf.studentid
  73. JOIN ".$tp."gradeimporter_submission gs
  74. ON gs.id = gf.submissionid
  75. JOIN ".$tp."gradeimporter_submissiontype gst
  76. ON gst.id = gs.type
  77. WHERE gs.gradeimporterid = $gradeimporterid
  78. ORDER BY user.firstname, user.lastname, gs.id, gf.id";
  79. $records = $DB->get_recordset_sql($sql);
  80. $usersList = array();
  81. foreach ($enrolledusers as $user){
  82. $usersList[$user->id] = array('name'=>$user->firstname." ".$user->lastname);
  83. }
  84. ksort($usersList);
  85. foreach ($records as $record){
  86. echo "passou userid $record->gf_studentid fileid $record->gf_fileid <br>";
  87. $url = buildurl($cmid, $record->gf_id, $record->gf_name);
  88. $usersList[$record->gf_studentid][$record->gs_id] = array('grade'=>$record->gf_grade, 'file'=>$url);
  89. }
  90. foreach($usersList as $user){
  91. $row = new html_table_row();
  92. $cell = new html_table_cell($user['name']);
  93. $row->cells[] = $cell;
  94. foreach ($submissions as $submission){
  95. if (array_key_exists($submission->id, $user)){
  96. $url = $user[$submission->id]['file'];
  97. $grade = $user[$submission->id]['grade'];
  98. } else{
  99. $url = '-';
  100. $grade = '-';
  101. }
  102. $cell = new html_table_cell ($grade);
  103. $row->cells[] = $cell;
  104. $cell = new html_table_cell ($url);
  105. $row->cells[] = $cell;
  106. }
  107. $table->data[] = $row;
  108. }
  109. //gets all submission types relative to the gradeimporter instance
  110. /*$subtype_array = $DB->get_records("gradeimporter_submissiontype", array('gradeimporterid' => $gradeimporterid), 'id', '*');
  111. foreach ($subtype_array as $subtype) {
  112. //gets all submissions from a subtype;
  113. $submission_array = $DB->get_records("gradeimporter_submission", array('type' => $subtype->id), 'id', '*');
  114. foreach ($submission_array as $submission) {
  115. //gets all feedbacks from a submission
  116. $feedback_array = $DB->get_records("gradeimporter_feedback", array('submissionid' => $submission->id), 'id', '*');
  117. $cell = new html_table_cell($submission->name);
  118. $cell->colspan = 2;
  119. $subrow->cells[] = $cell;
  120. foreach ($feedback_array as $feedback) {
  121. //for each feedback add it to the correspondent user list in $enrolledusers
  122. }
  123. }
  124. $table->data[] = $subrow;
  125. }*/
  126. echo html_writer::table($table);
  127. }
  128. require_once($CFG->libdir . '/filelib.php');
  129. require_once("$CFG->libdir/csvlib.class.php");
  130. function buildurl($cmid, $fileid, $filename){
  131. $fileurl = new moodle_url("/mod/gradeimporter/view.php", array('id' => $cmid, 'fileid' => $fileid, 'filename' => $filename, 'action' => 1));
  132. return "<a href=$fileurl> $filename</a>";
  133. }
  134. function exportCSV($context){
  135. $enrolledusers = get_enrolled_users($context, 'mod/gradeimporter:student');
  136. $header = array('id', 'name', 'email', 'grade', 'comment', 'file');
  137. $csvexport = new csv_export_writer();
  138. $csvexport->set_filename('config');
  139. $csvexport->add_data($header);
  140. foreach ($enrolledusers as $value) {
  141. $name = $value->firstname . ' ' . $value->lastname;
  142. $studententry = array($value->id, $name, $value->email, '', '', '');
  143. $csvexport->add_data($studententry);
  144. }
  145. $csvexport->download_file();
  146. //$dlfile = $csvexporter->download_array('config', $data);
  147. }