123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- //adds gradeimporter to add new activity page
- function tool_devcourse_extend_navigation_course($navigation, $course, $coursecontext) {
- $url = new moodle_url('/admin/tool/devcourse/index.php');
- $devcoursenode = navigation_node::create('Development course', $url, navigation_node::TYPE_CUSTOM, 'Dev course', 'devcourse');
- $navigation->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);
- }
- }
- }
|