add_node($devcoursenode); } function gradeimporter_supports($feature) { switch($feature) { case FEATURE_MOD_ARCHETYPE: return MOD_ARCHETYPE_RESOURCE; case FEATURE_GROUPS: return false; case FEATURE_GROUPINGS: return false; case FEATURE_MOD_INTRO: return true; case FEATURE_COMPLETION_TRACKS_VIEWS: return true; case FEATURE_GRADE_HAS_GRADE: return false; case FEATURE_GRADE_OUTCOMES: return false; case FEATURE_BACKUP_MOODLE2: return true; default: return null; } } function gradeimporter_add_instance ($data, $mform) { /* *Given an object containing all the necessary data, *(defined by the form in mod_form.php) this function *creates a new instance and returns the id of this new *instance. * *@param $data: an object from the form in mod_form.php *@return int: the id of the newly inserted gradeimport record */ global $DB; $data->timemodified = time(); $data->id = $DB->insert_record("gradeimporter", $data); return $data->id; } function gradeimporter_update_instance ($data){ /* *given an object containing all the necessary data, *(defined by the form in mod_form.php) this function *updates an existing instance with the new data. * *@param $data: an object from the form mod_form.php *@return boolean: if the record update was a success of fail */ global $DB; $data->timemodified = time(); $data->id = $data->instance; return $DB->update_record('gradeimporter', $data); } function gradeimporter_delete_instance($data){ /* *Given an id of a gradeimporter instance, * this function permanently deletes the instance * and any data that depends on it. * *@param int $id: Id of the gradeimporter instance *@return boolean, if the deletion was a success or * a failure. */ global $DB; if (!$data = $DB->get_record('gradeimporter', array('id'=>$id) ) ){ return false; } $cm = get_coursemodule_from_instance('gradeimporter', $gradeimporter->id); $context = context_module::instance($cm->id); // Files $fs = get_file_storage(); $fs->delete_area_files($context->id, 'mod_gradeimporter'); //delete all files and submissions associated with this instance $DB->delete_records('gradeimporter_submission', array('gradeimporterid' => $gradeimporter->id)); $DB->delete_records('gradeimporter_feedback', array('gradeimporterid' => $gradeimporter->id)); //delete the instance itself $DB->delete_records('gradeimporter', array('id'=>$id) ); return true; } function gradeimporter_check_for_zips ($context, $cm, $submission){ global $DB; $fs = get_file_storage(); $files = $fs->get_area_files($context->id, 'mod_gradeimporter', 'submission', $submission->id, "itemid, filepath, filename", false); foreach ($files as $storedfile) { if ($storedfile->get_mimetype() == 'application/zip') { //unpack zip $packer = get_file_packer('application/zip'); $fs->delete_area_files($context->id, 'mod_gradeimporter', 'unpacktemp', 0); $storedfile->extract_to_storage($packer, $context->id, 'mod_gradeimporter', 'unpacktemp', 0, "item, filepath, filename", false); $tempfiles = $fs->get_area_files($context->id, 'mod_gradeimporter', 'unpacktemp', 0, "itemid, filepath, filename", false); if (count($tempfiles) > 0) { $storedfile->delete(); // delete the zip foreach ($tempfiles as $storedfile){ if ($storedfile->get_mimetype() == 'text/csv'){ $csvData = $storedfile->get_content(); $csvLines = explode(PHP_EOL, $csvData); $csv = array(); foreach($csvLines as $line){ $csv[] = str_getcsv($line); } //array_map('str_getcsv', $storedfile->get_content() ); array_walk($csv, function(&$a) use ($csv) { //adds first row as keys $a = array_combine($csv[0], $a); }); array_shift($csv); // remove column header for ($i = 0; $i< sizeof($csv); $i++){ 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; $dbentry->submissionid = $submission->id; $dbentry->studentid = $csv[$i]['id']; $dbentry->grade = $csv[$i]['grade']; $dbentry->comment = $csv[$i]['comment']; $dbentry->fileid = 0; //precisa consertar $dbentry->usermodified = 0; $dbentry->timecreated = time(); $dbentry->timemodified = time(); $dbentry->contextid = $context->id; $dbentry->name = $csv[$i]['file']; $dbentry->id = $DB->insert_record('gradeimporter_feedback', $dbentry); break; } } } } } } $fs->delete_area_files($context->id, 'mod_gradeimporter', 'unpacktemp', 0); } } }