Bläddra i källkod

config csv and file exporter functional

bernardo 5 år sedan
förälder
incheckning
db708d4bfb
8 ändrade filer med 142 tillägg och 70 borttagningar
  1. 9 0
      db/access.php
  2. 3 1
      lang/en/gradeimporter.php
  3. 13 11
      lib.php
  4. 79 44
      locallib.php
  5. 0 2
      submission.php
  6. 0 2
      submissiontype.php
  7. 1 1
      version.php
  8. 37 9
      view.php

+ 9 - 0
db/access.php

@@ -35,5 +35,14 @@
                         'editingteacher' => CAP_ALLOW,
                         'manager' => CAP_ALLOW
                     )
+        ),
+
+        
+        'mod/gradeimporter:student'=> array(
+            'captype'=> 'read',
+            'contextlevel' =>  CONTEXT_MODULE,
+            'archetypes' => array(
+                'student' => CAP_ALLOW
+            )
         )
 );

+ 3 - 1
lang/en/gradeimporter.php

@@ -71,4 +71,6 @@ $string['newsubmission'] = "Add new submission";
     $string['newsubtype_help'] = 'Goes to new sub type form (sub type examples: Exam, Test, Activity)';
 
 //events string
-    $string['eventmodelsubmissioncreated'] = 'Submission created';
+    $string['eventmodelsubmissioncreated'] = 'Submission created';
+
+$string['downloadconfigcsv'] = 'Download config CSV';

+ 13 - 11
lib.php

@@ -123,16 +123,7 @@ function gradeimporter_check_for_zips ($context, $cm, $submission){
                 foreach ($tempfiles as $storedfile) {
                   if ($storedfile->get_filename() == $csv[$i]['file']){
 
-                    $fileinfo = array(
-                      'contextid'   =>  $context->id,
-                      'component'   =>  'mod_gradeimporter',
-                      'filearea'    =>  'gradeimporter_feedback',
-                      'itemid'      =>  $submission->id,
-                      'filepath'    =>  '/'.$csv[$i]['file'].'.',
-                      'filename'        =>  $csv[$i]['file']
-                    );
-
-                    //$storedfile = $fs->create_file_from_storedfile($fileinfo, $storedfile);
+                    
 
                     $dbentry = new stdClass();
                     $dbentry->id = null;
@@ -140,7 +131,7 @@ function gradeimporter_check_for_zips ($context, $cm, $submission){
                     $dbentry->studentid     = $csv[$i]['id'];
                     $dbentry->grade        = $csv[$i]['grade'];
                     $dbentry->comment      = $csv[$i]['comment'];
-                    $dbentry->fileid      = 0; //precisa consertar
+                    $dbentry->fileid      = $submission->id;
                     $dbentry->usermodified = 0;
                     $dbentry->timecreated   = time();
                     $dbentry->timemodified   = time();
@@ -148,6 +139,17 @@ function gradeimporter_check_for_zips ($context, $cm, $submission){
                     $dbentry->name    = $csv[$i]['file'];
 
                     $dbentry->id = $DB->insert_record('gradeimporter_feedback', $dbentry);
+
+                    $fileinfo = array(
+                      'contextid'   =>  $context->id,
+                      'component'   =>  'mod_gradeimporter',
+                      'filearea'    =>  'gradeimporter_feedback',
+                      'itemid'      =>  $dbentry->id,
+                      'filepath'    =>  '/',
+                      'filename'        =>  $csv[$i]['file']
+                    );
+
+                    $storedfile = $fs->create_file_from_storedfile($fileinfo, $storedfile);
                     break;
                   }
                 }

+ 79 - 44
locallib.php

@@ -1,51 +1,86 @@
 <?php
 
-namespace gradeimporter;
-
-class feedback {
-    public static function get_comments() {
-        global $DB, $USER, $CFG;
-        $tp = $CFG->prefix; // gets moodle tables prefix, not everyone uses mdl_
-
-        $sql = "
-        SELECT gf.id,
-               gf.grade,
-               gf.comment,
-               gf.contextid,
-               gf.name gf_name,
-               gs.name gs_name,
-               gs.description gs_description,
-               gst.name gst_name,
-               gst.description gst_description,
-               fileid
-          FROM ".$tp."gradeimporter_feedback gf
-          JOIN ".$tp."gradeimporter_submission gs
-            ON gf.submissionid = gs.id
-          JOIN ".$tp."gradeimporter_submissiontype gst
-            ON gs.type = gst.id
-         WHERE gf.studentid = ?";
-        $comments = array();
-        $records = $DB->get_records_sql($sql, array('studentid'=>$USER->id));
-
-        $data = array();
-        if (count($records)) {
-          foreach ($records as $key => $value) {
-            if (!array_key_exists($value->gst_name, $data)) $data[$value->gst_name] = array();
-            
-              //$fileurl = moodle_url::make_pluginfile_url($value->gf_contextid, 'mod_gradeimporter', 'gradeimporter_feedback', $value->gf_submissionid, '/', $value->gf_filename, false);
-
-              $data[$value->gst_name][] = array($value->gs_name, $value->grade, $value->gf_name);
-              //$data[$value->gst_name][] = array($value->gs_name, $value->grade, $value->fileid);
+namespace gradeimporter{
+
+  class feedback {
+      public static function get_comments($cmid, $id) {
+          global $DB, $USER, $CFG;
+          $tp = $CFG->prefix; // gets moodle tables prefix, not everyone uses mdl_
+
+          $sql = "
+          SELECT gf.id gf_id,
+                gf.grade,
+                gf.comment,
+                gf.contextid gf_contextid,
+                gf.fileid gf_fileid,
+                gf.name gf_name,
+                gs.name gs_name,
+                gs.description gs_description,
+                gst.name gst_name,
+                gst.description gst_description,
+                fileid
+            FROM ".$tp."gradeimporter_feedback gf
+            JOIN ".$tp."gradeimporter_submission gs
+              ON gf.submissionid = gs.id
+            JOIN ".$tp."gradeimporter_submissiontype gst
+              ON gs.type = gst.id
+          WHERE gf.studentid = ?";
+          $comments = array();
+          $records = $DB->get_records_sql($sql, array('studentid'=>$USER->id));
+
+          $data = array();
+          if (count($records)) {
+            foreach ($records as $key => $value) {
+              if (!array_key_exists($value->gst_name, $data)) $data[$value->gst_name] = array();
+              
+                
+                $fileurl = buildurl ($cmid, $id, $value->gf_id, $value->gf_name);
+                
+                $data[$value->gst_name][] = array($value->gs_name, $value->grade, $fileurl);
+                //$data[$value->gst_name][] = array($value->gs_name, $value->grade, $value->fileid);
+            }
           }
-        }
 
-        return $data;
-    }
+          return $data;
+      }
+  }
+
 }
 
+namespace{
+  require_once($CFG->libdir.'/filelib.php');
+  require_once("$CFG->libdir/csvlib.class.php");
+
+
+  function buildurl($cmid, $id, $fileid, $filename){
+
+    $fileurl = new moodle_url("/mod/gradeimporter/view.php", array('cmid'=>$cmid, 'id'=>$id, 'fileid'=>$fileid, 'filename'=>$filename, 'action'=>1));
+    return "<a href=$fileurl> $filename</a>";
+    /*$fs = get_file_storage();
+    $file = $fs->get_file($contextid, 'mod_gradeimporter', 'gradeimporter_feedback', $fileid, '/', $filename);
+    if ($file){
+      send_stored_file($file, 86400, 0, true);
+    }
+    return moodle_url::make_pluginfile_url($contextid, 'mod_gradeimporter', 'gradeimporter_feedback', $fileid, '/', $filename, $forcedownload);*/
+  }
+
+  function exportCSV($context){
+    $enrolledusers = get_enrolled_users ($context, 'mod/gradeimporter:student');
+    $data = array();
+    $header = array('id', 'name', 'email', 'grade', 'comment', 'file');
+
+    $csvexport = new csv_export_writer();
+    $csvexport->set_filename('config');
+    $csvexport->add_data($header);
+
+    foreach ($enrolledusers as $value){
+      $name = $value->firstname.' '.$value->lastname;
+      $studententry = array($value->id, $name, $value->email,'','','');
+      $csvexport->add_data($studententry);
+    }
+
+    $csvexport->download_file();
+    //$dlfile = $csvexporter->download_array('config', $data);
 
-//
-// INSERT INTO `mdl_gradeimporter_feedback` (`id`, `submissionid`, `studentid`, `grade`, `comment`, `fileid`, `usermodified`, `timecreated`, `timemodified`)
-// VALUES
-// 	(1, 10, 1, 10.00, 'ok muito bem', 100, 0, 0, 0);
-//
+  }
+}

+ 0 - 2
submission.php

@@ -36,8 +36,6 @@ $PAGE->set_url($url);
 
 require_login($course, false, $cm);
 
-//attempt to get the correct submission
-$submission = $DB->get_record('gradeimporter_submission', array('gradeimporterid'=>$gradeimporter->id));
 
 if($submission){
     if (isguestuser()){

+ 0 - 2
submissiontype.php

@@ -33,8 +33,6 @@ $PAGE->set_url($url);
 
 require_login($course, false, $cm);
 
-//attempt to get the correct type
-$submissiontype = $DB->get_record('gradeimporter_submissiontype', array('gradeimporterid'=>$gradeimporter->id));
 
 if ($submissiontype){
     if (isguestuser()){

+ 1 - 1
version.php

@@ -2,7 +2,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version = 20191111;
+$plugin->version = 20191114;
 $plugin->requires = 2014021100;
 $plugin->release = 'v1.0';
 $plugin->component = 'mod_gradeimporter';

+ 37 - 9
view.php

@@ -1,12 +1,22 @@
 <?php
     require_once(dirname(dirname(dirname(__FILE__))).'/config.php');
     require_once(dirname(__FILE__).'/lib.php');
+    require_once($CFG->libdir.'/filelib.php');
+    require_once('locallib.php');
+
 
     global $DB;
 
 
     $id = optional_param('id', 0, PARAM_INT); // course_module ID, or
     $g  = optional_param('g', 0, PARAM_INT);  // gradeimporter instance ID, should be named as the first character of the module
+    $action = optional_param('action', 0, PARAM_INT);
+    $cmid = optional_param('cmid', 0, PARAM_INT);
+    $id       = optional_param('id', 0, PARAM_INT);
+    $fileid     = optional_param('fileid', 0, PARAM_INT);
+    $filename   = optional_param('filename', 'a', PARAM_TEXT);
+
+    
 
     if ($id) {
         if (! $cm = get_coursemodule_from_id('gradeimporter', $id)) {
@@ -42,6 +52,20 @@
 
 
 
+    if ($action==1 && has_capability('mod/gradeimporter:edit', $context)){
+      //download feedback file
+      $fs = get_file_storage();
+      echo 'file storage';
+      $file = $fs->get_file($context->id, 'mod_gradeimporter', 'gradeimporter_feedback', $fileid, '/', $filename);
+      if ($file){
+        echo 'found file';
+        send_stored_file($file, 86400, 0, true);
+      }
+    } else if ($action == 2 && has_capability('mod/gradeimporter:edit', $context)){
+      exportCSV($context);
+    }
+
+
     /// Print the page header
     $PAGE->set_cm($cm);
     $PAGE->set_url('/mod/gradeimporter/view.php', array('id' => $cm->id));
@@ -69,17 +93,25 @@ echo $output->heading($heading);
 //button to add new submission
 if (has_capability('mod/gradeimporter:edit', $context)) {
   $url = new moodle_url('/mod/gradeimporter/submission.php');
-  $newSubmission = '<form action="'. $url . '">'.
+  $newbutton = '<form action="'. $url . '">'.
           '<input type="hidden" name="id" value="'. $gradeimporter->id .'" />'.
           '<input type="hidden" name="cmid" value="'.$cm->id.'" />'.
           '<input type="hidden" name="page" value="0" />'.
           '<input type="submit" Value="'.get_string('newsubmission', 'gradeimporter').'" />'.
           '</form>';
-  echo $newSubmission;
+  echo $newbutton;
+
+  $url = new moodle_url("/mod/gradeimporter/view.php", array('id'=>$id, 'cmid'=>$cm->id, 'action'=>2));
+  $newbutton = '<form action="'. $url . '">'.
+        '<input type="hidden" name="id" value="'. $id .'" />'.
+        '<input type="hidden" name="cmid" value="'.$cm->id.'" />'.
+        '<input type="hidden" name="action" value="2" />'.
+        '<input type="submit" Value="'.get_string('downloadconfigcsv', 'gradeimporter').'" />'.
+        '</form>';
+  echo $newbutton;
 }
 
 //tabela com as notas vem aqui
-echo 'parte principal do importador de notas Z';
 
 require_once($CFG->libdir . '/tablelib.php');
 require_once(dirname(__FILE__).'/locallib.php');
@@ -95,7 +127,7 @@ use \gradeimporter\feedback;
 // $data["teste"][] = array("E1", "-", "fulanoE1.pdf.pdf");
 // $data["teste"][] = array("E2", "-", "fulanoE2.pdf.pdf");
 
-$data = feedback::get_comments();
+$data = feedback::get_comments($cm->id, $id);
 
 $table = new html_table();
 $table->attributes['class'] = 'generaltable mod_index';
@@ -131,9 +163,5 @@ if (count($data)) {
 }
 
 echo html_writer::table($table);
-
 /// Finish the page
-echo $output->footer();
-
-
-
+echo $output->footer();