Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        $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();
}
Exemplo n.º 3
0
 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;
                     }
                 }
             }
         }
     }
 }