Browse Source

Implementado o exportador dos resultados para CSV

Igor 5 years ago
parent
commit
1277c0863a
6 changed files with 82 additions and 8 deletions
  1. 1 1
      .gitignore
  2. 1 0
      lang/en/iassign.php
  3. 1 0
      lang/es/iassign.php
  4. 1 0
      lang/fr/iassign.php
  5. 1 0
      lang/pt_br/iassign.php
  6. 77 7
      locallib.php

+ 1 - 1
.gitignore

@@ -1 +1 @@
-ilm/*
+ilm

+ 1 - 0
lang/en/iassign.php

@@ -215,6 +215,7 @@ $string['exercises']                      = 'Exercises';
 $string['experiment']                     = 'Number of attempts:';
 $string['experiment_iassign']             = 'Maximum number of attempts:';
 $string['experiment_student']             = 'Number of attempts the student';
+$string['export_csv']                     = 'Export (CSV)';
 $string['export_ilm']                     = 'Export iLM';
 $string['extension']                      = 'Extension';
 $string['extension_help']                 = 'Enter one or more extensions allowed by the iLM. To various extents separate them with comma (e.g., "ext1,ext2")';

+ 1 - 0
lang/es/iassign.php

@@ -216,6 +216,7 @@ $string['exercises']                      = 'Ejercicios';
 $string['experiment']                     = 'Número de intentos:';
 $string['experiment_iassign']             = 'Limite de intentos:';
 $string['experiment_student']             = 'Número de intentos:';
+$string['export_csv']                     = 'Exportar (CSV)';
 $string['export_ilm']                     = 'Exportar iMA';
 $string['extension']                      = 'Extensíon';
 $string['extension_help']                 = 'Introduzca una o más extensiones permitidas por el iMA. En varias extensiones, sepárelas con comas (por ejemplo, "ext1, ext2")';

+ 1 - 0
lang/fr/iassign.php

@@ -216,6 +216,7 @@ $string['exercises']                      = 'Exercices';
 $string['experiment']                     = 'Nombre d\'essaies :';
 $string['experiment_iassign']             = 'Limite d\'essayes :';
 $string['experiment_student']             = 'Nombre d\'essaies de l\'étudiant :';
+$string['export_csv']                     = 'Exporter (CSV)';
 $string['export_ilm']                     = 'Exporter iMA';
 $string['extension']                      = 'Extension';
 $string['extension_help']                 = 'Entrez une ou plusieurs extensions autorisées par iMA. A des degrés divers, séparez-les par une virgule (par exemple, "ext1, ext2")';

+ 1 - 0
lang/pt_br/iassign.php

@@ -215,6 +215,7 @@ $string['exercises']                      = 'Exercícios';
 $string['experiment']                     = 'Número de tentativas:';
 $string['experiment_iassign']             = 'Limite de tentativas:';
 $string['experiment_student']             = 'Número de tentativas:';
+$string['export_csv']                     = 'Exportar (CSV)';
 $string['export_ilm']                     = 'Exportar iMA';
 $string['extension']                      = 'Extensão';
 $string['extension_help']                 = 'Insira uma ou mais extensões permitidas pelo iMA. Para várias extensões separe por vírgula (,).';

+ 77 - 7
locallib.php

@@ -279,6 +279,7 @@ class iassign {
       'viewsubmission' => '$this->view_iassign_current();',
       'edit_status' => '$this->edit_status();',
       'edit_grade' => '$this->edit_grade();',
+      'export_csv' => '$this->export_csv();',
       'report' => '$this->report();',
       'print' => '$this->report();',
       'stats' => '$this->stats();',
@@ -1332,7 +1333,9 @@ class iassign {
       if ($this->action != 'print') {
         $link_print = "<a href='" . $CFG->wwwroot . "/mod/iassign/view.php?id=" . $id . "&action=print&iassignid=" . $this->iassign->id . "'>" . iassign_icons::insert('print') . '&nbsp;' . get_string('print', 'iassign') . "</a>";
         $link_stats = "<a href='" . $CFG->wwwroot . "/mod/iassign/view.php?id=" . $id . "&action=stats&iassignid=" . $this->iassign->id . "'>" . iassign_icons::insert('results') . '&nbsp;' . get_string('graphic', 'iassign') . "</a>";
+        $link_export = "<a href='" . $CFG->wwwroot . "/mod/iassign/view.php?id=" . $id . "&action=export_csv&iassignid=" . $this->iassign->id . "'>" . iassign_icons::insert('export_ilm') . '&nbsp;' . get_string('export_csv', 'iassign') . "</a>";
         print '<td width=15% align="right">' . $link_stats . '</td>' . "\n";
+        print '<td width=15% align="right">' . $link_export . '</td>' . "\n";
         print '<td width=15% align="right">' . $link_print . '</td>' . "\n";
         } // if ($this->action != 'print')
       print '</tr></table>' . "\n";
@@ -1987,6 +1990,75 @@ class iassign {
     die();
     } // function view_iassign_current()
 
+  /// Export the data from performance report into CSV file format  
+  function export_csv () {
+    global $USER, $CFG, $DB, $OUTPUT;
+    $str = "";
+    $fields = "student_id, student_name";
+    
+    // Finding all iassign activities for the iassign:
+    $id = $this->cm->id;
+    $iassign_list = $DB->get_records_list('iassign_statement', 'iassignid', array('iassignid' => $this->iassign->id + 22), "position ASC");
+    $c = 1;
+    foreach ($iassign_list as $iassign) {
+      $fields .= ", activity_id_$c, activity_name_$c, total_submissions_activity_$c, grade_activity_$c"
+          . ", status_activity_$c, ilm_id_activity_$c, ilm_name_activity_$c";
+      $c ++;
+    }
+
+    // Finding enrolled students:
+    $params = array('shortname' => 'student');
+    $role = $DB->get_record_sql(
+        "SELECT s.id, s.shortname FROM {role} s " .
+        " WHERE s.shortname = :shortname", $params);
+    $context = context_course::instance($this->course->id);
+    $params = array('contextid' => $context->id, 'roleid' => $role->id);
+    $students = $DB->get_records_sql(
+        "SELECT s.userid, a.firstname, a.lastname FROM {role_assignments} s, {user} a " .
+        " WHERE s.contextid = :contextid AND s.userid = a.id AND s.roleid = :roleid " .
+        " ORDER BY a.firstname ASC,a.lastname ASC", $params);
+
+    foreach ($students as $student) {
+      $str .= $student->userid . ',';
+      $str .= '"' . $student->firstname . ' ' . $student->lastname . '"';
+
+      foreach ($iassign_list as $iassign) { 
+        $str .= ',' . $iassign->id . ',';
+        $str .= '"' . $iassign->name . '",';
+
+        $student_submissions = $DB->get_record("iassign_submission", array('iassign_statementid' => $iassign->id, 'userid' => $student->userid));
+        $str .= $student_submissions->experiment . ',';
+        $str .= $student_submissions->grade . ',';
+        switch ($student_submissions->status) {
+          case 3:
+            $str .= '"correct",';
+            break;
+          case 2:
+            $str .= '"incorrect",';
+            break;
+          case 1:
+            $str .= '"post",';
+            break;
+          case 0:
+            $str .= '"not_post",';
+            break;
+        }
+        $str .= $iassign->iassign_ilmid . ',';
+
+        $ilm_activity = $DB->get_record("iassign_ilm", array('id' => $iassign->iassign_ilmid));
+        $str .= '"' . $ilm_activity->name . '"';
+      }
+      $str .= "\n";
+    }
+    $str = $fields . "\n" . $str;
+    header("Content-disposition: attachment; filename=report.csv");
+    header("Pragma: no-cache");
+    header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
+    header('Content-Length: ' . strlen($str));
+    header('Connection: close');
+    echo $str;
+    flush();
+  }
 
   /// Display report of performance
   function report () {
@@ -2177,15 +2249,13 @@ class iassign {
                 else
                   print '<td> <a href="' . $url . '" ' . $last_solution_submission . '>' . $feedback . '</a> </td>' . "\n";
                 print '<td> &nbsp; </td>';
-                print '</tr><tr>';
-                print '<td> &nbsp;</td>';
+                print '</tr>';
                 if ($sum_comment > 0 && $sum_verify_message > 0)
-                  print '<td>  <a href="' . $url . '"> ' . $comment . '</a> &nbsp;(' . $sum_verify_message . '/' . $sum_comment . ') </td>' . "\n";
+                  print '<tr><td colspan="2">  <a href="' . $url . '"> ' . $comment . '</a> &nbsp;(' . $sum_verify_message . '/' . $sum_comment . ') </td></tr>' . "\n";
                 else if ($sum_comment > 0)
-                  print '<td>  <a href="' . $url . '"> ' . $comment . '</a> &nbsp;(' . $sum_comment . ') </td>' . "\n";
-                else
-                  print '<td> &nbsp;</td>' . "\n";
-                print '</tr></table>' . "\n";
+                  print '<tr><td colspan="2">  <a href="' . $url . '"> ' . $comment . '</a> &nbsp;(' . $sum_comment . ') </td></tr>' . "\n";
+                
+                print '</table>' . "\n";
                 }
 
               if ($this->action == 'print')