assignment.class.php

来自「很棒的在线教学系统」· PHP 代码 · 共 186 行

PHP
186
字号
<?php // $Id: assignment.class.php,v 1.33.2.5 2008/04/08 03:02:49 scyrma Exp $/** * Extend the base assignment class for assignments where you upload a single file * */class assignment_uploadsingle extends assignment_base {    function print_student_answer($userid, $return=false){           global $CFG, $USER;        $filearea = $this->file_area_name($userid);        $output = '';        if ($basedir = $this->file_area($userid)) {            if ($files = get_directory_list($basedir)) {                require_once($CFG->libdir.'/filelib.php');                foreach ($files as $key => $file) {                    $icon = mimeinfo('icon', $file);                    $ffurl = get_file_url("$filearea/$file");                    //died right here                    //require_once($ffurl);                    $output = '<img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.                            '<a href="'.$ffurl.'" >'.$file.'</a><br />';                }            }        }        $output = '<div class="files">'.$output.'</div>';        return $output;    }    function assignment_uploadsingle($cmid='staticonly', $assignment=NULL, $cm=NULL, $course=NULL) {        parent::assignment_base($cmid, $assignment, $cm, $course);        $this->type = 'uploadsingle';    }    function view() {        global $USER;        $context = get_context_instance(CONTEXT_MODULE,$this->cm->id);        require_capability('mod/assignment:view', $context);        add_to_log($this->course->id, "assignment", "view", "view.php?id={$this->cm->id}", $this->assignment->id, $this->cm->id);        $this->view_header();        $this->view_intro();        $this->view_dates();        $filecount = $this->count_user_files($USER->id);        if ($submission = $this->get_submission()) {            if ($submission->timemarked) {                $this->view_feedback();            }            if ($filecount) {                print_simple_box($this->print_user_files($USER->id, true), 'center');            }        }        if (has_capability('mod/assignment:submit', $context)  && $this->isopen() && (!$filecount || $this->assignment->resubmit || !$submission->timemarked)) {            $this->view_upload_form();        }        $this->view_footer();    }    function view_upload_form() {        global $CFG;        $struploadafile = get_string("uploadafile");        $maxbytes = $this->assignment->maxbytes == 0 ? $this->course->maxbytes : $this->assignment->maxbytes;        $strmaxsize = get_string('maxsize', '', display_size($maxbytes));        echo '<div style="text-align:center">';        echo '<form enctype="multipart/form-data" method="post" '.             "action=\"$CFG->wwwroot/mod/assignment/upload.php\">";        echo '<fieldset class="invisiblefieldset">';        echo "<p>$struploadafile ($strmaxsize)</p>";        echo '<input type="hidden" name="id" value="'.$this->cm->id.'" />';        require_once($CFG->libdir.'/uploadlib.php');        upload_print_form_fragment(1,array('newfile'),false,null,0,$this->assignment->maxbytes,false);        echo '<input type="submit" name="save" value="'.get_string('uploadthisfile').'" />';        echo '</fieldset>';        echo '</form>';        echo '</div>';    }    function upload() {        global $CFG, $USER;        require_capability('mod/assignment:submit', get_context_instance(CONTEXT_MODULE, $this->cm->id));        $this->view_header(get_string('upload'));        $filecount = $this->count_user_files($USER->id);        $submission = $this->get_submission($USER->id);        if ($this->isopen() && (!$filecount || $this->assignment->resubmit || !$submission->timemarked)) {            if ($submission = $this->get_submission($USER->id)) {                //TODO: change later to ">= 0", to prevent resubmission when graded 0                if (($submission->grade > 0) and !$this->assignment->resubmit) {                    notify(get_string('alreadygraded', 'assignment'));                }            }            $dir = $this->file_area_name($USER->id);            require_once($CFG->dirroot.'/lib/uploadlib.php');            $um = new upload_manager('newfile',true,false,$this->course,false,$this->assignment->maxbytes);            if ($um->process_file_uploads($dir)) {                $newfile_name = $um->get_new_filename();                if ($submission) {                    $submission->timemodified = time();                    $submission->numfiles     = 1;                    $submission->submissioncomment = addslashes($submission->submissioncomment);                    unset($submission->data1);  // Don't need to update this.                    unset($submission->data2);  // Don't need to update this.                    if (update_record("assignment_submissions", $submission)) {                        add_to_log($this->course->id, 'assignment', 'upload',                                'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id);                        $submission = $this->get_submission($USER->id);                        $this->update_grade($submission);                        $this->email_teachers($submission);                        print_heading(get_string('uploadedfile'));                    } else {                        notify(get_string("uploadfailnoupdate", "assignment"));                    }                } else {                    $newsubmission = $this->prepare_new_submission($USER->id);                    $newsubmission->timemodified = time();                    $newsubmission->numfiles = 1;                    if (insert_record('assignment_submissions', $newsubmission)) {                        add_to_log($this->course->id, 'assignment', 'upload',                                'view.php?a='.$this->assignment->id, $this->assignment->id, $this->cm->id);                        $submission = $this->get_submission($USER->id);                        $this->update_grade($submission);                        $this->email_teachers($newsubmission);                        print_heading(get_string('uploadedfile'));                    } else {                        notify(get_string("uploadnotregistered", "assignment", $newfile_name) );                    }                }            }        } else {            notify(get_string("uploaderror", "assignment")); //submitting not allowed!        }        print_continue('view.php?id='.$this->cm->id);        $this->view_footer();    }    function setup_elements(&$mform) {        global $CFG, $COURSE;        $ynoptions = array( 0 => get_string('no'), 1 => get_string('yes'));        $mform->addElement('select', 'resubmit', get_string("allowresubmit", "assignment"), $ynoptions);        $mform->setHelpButton('resubmit', array('resubmit', get_string('allowresubmit', 'assignment'), 'assignment'));        $mform->setDefault('resubmit', 0);        $mform->addElement('select', 'emailteachers', get_string("emailteachers", "assignment"), $ynoptions);        $mform->setHelpButton('emailteachers', array('emailteachers', get_string('emailteachers', 'assignment'), 'assignment'));        $mform->setDefault('emailteachers', 0);        $choices = get_max_upload_sizes($CFG->maxbytes, $COURSE->maxbytes);        $choices[0] = get_string('courseuploadlimit') . ' ('.display_size($COURSE->maxbytes).')';        $mform->addElement('select', 'maxbytes', get_string('maximumsize', 'assignment'), $choices);        $mform->setDefault('maxbytes', $CFG->assignment_maxbytes);    }}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?