public static function get_submitted_files($vpl, $userid, &$CE) { $CE = false; $lastsub = $vpl->last_user_submission($userid); if ($lastsub) { $submission = new mod_vpl_submission($vpl, $lastsub); $fgp = $submission->get_submitted_fgm(); $filelist = $fgp->getFileList(); $nf = count($filelist); for ($i = 0; $i < $nf; $i++) { $filename = $filelist[$i]; $filedata = $fgp->getFileData($filelist[$i]); $files[$filename] = $filedata; } $CE = $submission->get_CE_for_editor(); } else { $files = self::get_requested_files($vpl); } return $files; }
$grader = FALSE; if ($submissionid && $vpl->has_capability(VPL_GRADE_CAPABILITY)) { $subinstance = $DB->get_record('vpl_submissions', array('id' => $submissionid)); } else { $subinstance = $vpl->last_user_submission($userid); } $vpl->password_check(); } //Check consistence if (!$subinstance) { throw new Exception(get_string('nosubmission', VPL)); } if ($subinstance->vpl != $vpl->get_instance()->id) { throw new Exception(get_string('invalidcourseid')); } $submissionid = $subinstance->id; if ($vpl->is_inconsistent_user($subinstance->userid, $userid)) { throw new Exception('vpl submission user inconsistence'); } if ($vpl->get_instance()->id != $subinstance->vpl) { throw new Exception('vpl submission vpl inconsistence'); } $submission = new mod_vpl_submission($vpl, $subinstance); $fgm = $submission->get_submitted_fgm(); $fgm->download_files($vpl->get_printable_name()); } catch (Exception $e) { $vpl->prepare_page('views/downloadsubmission.php', array('id' => $id)); $vpl->print_header(get_string('download', VPL)); echo $OUTPUT->box($e->getMessage()); $vpl->print_footer(); }
static function vpl_get_similfile($f, $vpl, &$HTMLheader, &$filename, &$data) { global $DB; $HTMLheader = ''; $filename = ''; $data = ''; $type = required_param('type' . $f, PARAM_INT); if ($type == 1) { $subid = required_param('subid' . $f, PARAM_INT); $filename = required_param('filename' . $f, PARAM_TEXT); $subinstance = $DB->get_record('vpl_submissions', array('id' => $subid)); if ($subinstance !== false) { $vpl = new mod_vpl(false, $subinstance->vpl); $vpl->require_capability(VPL_SIMILARITY_CAPABILITY); $submission = new mod_vpl_submission($vpl, $subinstance); $user = $DB->get_record('user', array('id' => $subinstance->userid)); if ($user) { $HTMLheader .= '<a href="' . vpl_mod_href('/forms/submissionview.php', 'id', $vpl->get_course_module()->id, 'userid', $subinstance->userid) . '">'; } $HTMLheader .= s($filename) . ' '; if ($user) { $HTMLheader .= '</a>'; $HTMLheader .= $vpl->user_fullname_picture($user); } $fg = $submission->get_submitted_fgm(); $data = $fg->getFileData($filename); \mod_vpl\event\vpl_diff_viewed::log($submission); } } elseif ($type == 2) { //FIXME adapt to moodle 2.x /* global $CFG; $dirname = required_param('dirname'.$f,PARAM_RAW); $filename = required_param('filename'.$f,PARAM_RAW); $base=$CFG->dataroot.'/'.$vpl->get_course()->id.'/'; $data = file_get_contents($base.$dirname.'/'.$filename); $HTMLheader .= $filename.' '.optional_param('username'.$f,'',PARAM_TEXT); */ } elseif ($type == 3) { global $CFG; $data = ''; $zipname = required_param('zipfile' . $f, PARAM_RAW); $filename = required_param('filename' . $f, PARAM_RAW); $HTMLheader .= $filename . ' ' . optional_param('username' . $f, '', PARAM_TEXT); $ext = strtoupper(pathinfo($zipfile, PATHINFO_EXTENSION)); if ($ext != 'ZIP') { print_error('nozipfile'); } $zip = new ZipArchive(); $zipfilename = self::get_zip_filepath($zipname); if ($zip->open($zipfilename)) { $data = $zip->getFromName($filename); $zip->close(); } } else { print_error('type error'); } }
/** * scan_activity load activity files into $simil array * @param $simil array of file processed objects * @param $vpl activity to process * @param $filesselected array if set only files selected or unselected will be processed * @param $SPB Box used to show load process * @param $selected boolean switch to get selected or no selected files (default true) * @return void */ public static function scan_activity(&$simil, $vpl, $filesselected = array(), $SPB, $selected = true) { global $CFG; $vpl->require_capability(VPL_SIMILARITY_CAPABILITY); $list = $vpl->get_students(); if (count($list) == 0) { return; } $submissions = $vpl->all_last_user_submission(); $SPB->set_max(count($list)); //debugging("Submissions ".count($submissions), DEBUG_DEVELOPER); $i = 0; foreach ($list as $user) { $i++; $SPB->set_value($i); if (isset($submissions[$user->id])) { $subinstance = $submissions[$user->id]; $origin = ''; $submission = new mod_vpl_submission($vpl, $subinstance); $subf = $submission->get_submitted_fgm(); $filelist = $subf->getFileList(); foreach ($filelist as $filename) { //debugging("Filename ".$filename, DEBUG_DEVELOPER); if ($selected) { if (count($filesselected) > 0 && !isset($filesselected[$filename])) { continue; } } else { if (isset($filesselected[$filename])) { continue; } } //debugging("Added ".$filename, DEBUG_DEVELOPER); $sim = vpl_similarity_factory::get($filename); if ($sim) { $data = $subf->getFileData($filename); $from = new vpl_file_from_activity($filename, $vpl, $subinstance); $sim->init($data, $from); if ($sim->size > 10) { $simil[] = $sim; } } } } } }