Esempio n. 1
0
// get some useful stuff...
if (!($cm = get_coursemodule_from_id('workshop', $id))) {
    error("Course Module ID was incorrect");
}
if (!($course = get_record("course", "id", $cm->course))) {
    error("Course is misconfigured");
}
if (!($workshop = get_record("workshop", "id", $cm->instance))) {
    error("Course module is incorrect");
}
require_login($course->id, false, $cm);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
$strworkshops = get_string("modulenameplural", "workshop");
$strworkshop = get_string("modulename", "workshop");
// ...and if necessary set default action
if (workshop_is_teacher($workshop)) {
    if (empty($action)) {
        // no action specified, either go straight to elements page else the admin page
        // has the assignment any elements
        if (count_records("workshop_elements", "workshopid", $workshop->id) >= $workshop->nelements) {
            $action = "teachersview";
        } else {
            redirect("assessments.php?action=editelements&id={$cm->id}");
        }
    }
} else {
    // it's a student then
    if (!$cm->visible) {
        notice(get_string("activityiscurrentlyhidden"));
    }
    if ($timenow < $workshop->submissionstart) {
Esempio n. 2
0
function workshop_submission_grade($workshop, $submission)
{
    // returns the current (external) grade of the submission based on the "good" (cold) assessments
    // (needed as it's called by grade)
    $grade = 0;
    if ($assessments = workshop_get_assessments($submission)) {
        $n = 0;
        foreach ($assessments as $assessment) {
            if ($workshop->agreeassessments and !$assessment->timeagreed) {
                // ignore assessments which have not been agreed
                continue;
            }
            if ($assessment->gradinggrade or !$assessment->timegraded) {
                // a good assessment (or one that has not been graded yet)
                if (workshop_is_teacher($workshop, $assessment->userid)) {
                    $timenow = time();
                    if ($timenow > $workshop->releasegrades) {
                        // teacher's grade is available
                        $grade += $workshop->teacherweight * $assessment->grade;
                        $n += $workshop->teacherweight;
                    }
                } else {
                    $grade += $assessment->grade;
                    $n++;
                }
            }
        }
        if ($n) {
            // stop division by zero
            $grade = $grade / $n;
        }
    }
    return number_format($grade * $workshop->grade / 100, 1);
}
    // save number of entries in showleaguetable option
    if ($nentries == 'All') {
        $nentries = 99;
    }
    set_field("workshop", "showleaguetable", $nentries, "id", "{$workshop->id}");
    // save the anonymous option
    set_field("workshop", "anonymous", $anonymous, "id", "{$workshop->id}");
    add_to_log($course->id, "workshop", "league table", "view.php?id={$cm->id}", $nentries, $cm->id);
    redirect("view.php?id={$cm->id}");
} elseif ($action == 'updatesubmission') {
    if (empty($sid)) {
        error("Update submission: submission id missing");
    }
    $submission = get_record("workshop_submissions", "id", $sid);
    // students are only allowed to update their own submission and only up to the deadline
    if (!(workshop_is_teacher($workshop) or $USER->id = $submission->userid and $timenow < $workshop->submissionend and ($timenow < $workshop->assessmentstart or $timenow < $submission->timecreated + $CFG->maxeditingtime))) {
        error("You are not authorized to update your submission");
    }
    // check existence of title
    if (empty($title)) {
        $title = get_string("notitle", "workshop");
    }
    set_field("workshop_submissions", "title", $title, "id", $submission->id);
    set_field("workshop_submissions", "description", trim($description), "id", $submission->id);
    set_field("workshop_submissions", "timecreated", $timenow, "id", $submission->id);
    if ($workshop->nattachments) {
        require_once $CFG->dirroot . '/lib/uploadlib.php';
        $um = new upload_manager(null, false, false, $course, false, $workshop->maxbytes);
        if ($um->preprocess_files()) {
            $dir = workshop_file_area_name($workshop, $submission);
            if ($um->save_files($dir)) {
         if ($assessments = workshop_get_assessments($submission)) {
             foreach ($assessments as $studentassessment) {
                 // skip if it's not a student assessment
                 if (!workshop_is_student($workshop, $studentassessment->userid)) {
                     continue;
                 }
                 $gradinggrade = workshop_compare_assessments($workshop, $assessment, $studentassessment);
                 set_field("workshop_assessments", "timegraded", $timenow, "id", $studentassessment->id);
                 set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $studentassessment->id);
             }
         }
     } else {
         //it's a student assessment, see if there's a corresponding teacher's assessment
         if ($assessments = workshop_get_assessments($submission)) {
             foreach ($assessments as $teacherassessment) {
                 if (workshop_is_teacher($workshop, $teacherassessment->userid)) {
                     $gradinggrade = workshop_compare_assessments($workshop, $assessment, $teacherassessment);
                     set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
                     set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id);
                     break;
                     // only look for the first teacher assessment
                 }
             }
         }
     }
 }
 // any comment?
 if (!empty($form->generalcomment)) {
     set_field("workshop_assessments", "generalcomment", clean_param($form->generalcomment, PARAM_CLEAN), "id", $assessment->id);
 }
 add_to_log($course->id, "workshop", "assess", "viewassessment.php?id={$cm->id}&amp;aid={$assessment->id}", "{$assessment->id}", "{$cm->id}");
Esempio n. 5
0
function workshop_print_submission_assessments($workshop, $submission, $type)
{
    global $USER, $CFG;
    // Returns the teacher or peer grade and a hyperlinked list of grades for this submission
    if (!($cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course))) {
        error("Course Module ID was incorrect");
    }
    $str = '';
    // get the assessments in grade order, highest first
    if ($assessments = workshop_get_assessments($submission, "", "grade DESC")) {
        if ($type == 'teacher' or $type == 'all') {
            // students can see teacher assessments only if the release date has passed
            $timenow = time();
            if (workshop_is_teacher($workshop, $USER->id) or $timenow > $workshop->releasegrades) {
                foreach ($assessments as $assessment) {
                    if (workshop_is_teacher($workshop, $assessment->userid)) {
                        if ($type == 'all') {
                            $str .= workshop_fullname($assessment->userid, $workshop->course) . ': ';
                        }
                        $str .= "<a href=\"viewassessment.php?aid={$assessment->id}\">" . "[" . number_format($assessment->grade * $workshop->grade / 100, 0) . "]</a>";
                        if (workshop_is_teacher($workshop, $USER->id)) {
                            $str .= ' <a title="' . get_string('reassess', 'workshop') . "\" href=\"assess.php?id={$cm->id}&amp;sid={$submission->id}\"><img src=\"{$CFG->pixpath}/t/edit.gif\" " . ' class="iconsmall" alt="' . get_string('reassess', 'workshop') . '" /></a>';
                            $str .= ' <a title="' . get_string('delete', 'workshop') . "\" href=\"assessments.php?action=confirmdelete&amp;wid={$workshop->id}&amp;aid={$assessment->id}\"><img src=\"{$CFG->pixpath}/t/delete.gif\" " . ' class="iconsmall" alt="' . get_string('delete', 'workshop') . '" /></a><br />';
                        }
                    }
                }
            }
        }
        if ($type == 'student' or $type == 'all') {
            foreach ($assessments as $assessment) {
                if (workshop_is_student($workshop, $assessment->userid)) {
                    if ($type == 'all') {
                        $str .= workshop_fullname($assessment->userid, $workshop->course) . ': ';
                    }
                    $str .= "<a href=\"viewassessment.php?aid={$assessment->id}\">";
                    if ($workshop->agreeassessments and !$assessment->timeagreed and workshop_is_student($workshop, $submission->userid)) {
                        // agreement on student work only
                        $str .= "&lt;&lt;" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")&gt;&gt;</a> ";
                    } elseif ($assessment->timegraded) {
                        if ($assessment->gradinggrade) {
                            $str .= "{" . number_format($assessment->grade * $workshop->grade / 100, 0);
                            if ($assessment->teachergraded) {
                                $str .= " [" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . "]}</a> ";
                            } else {
                                $str .= " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")}</a> ";
                            }
                        } else {
                            $str .= "&lt;" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (0)&gt;</a> ";
                        }
                    } else {
                        $str .= "{" . number_format($assessment->grade * $workshop->grade / 100, 0) . "}</a> ";
                    }
                    $str .= '<br />';
                }
            }
        }
    }
    if (!$str) {
        $str = "&nbsp;";
        // be kind to Mozilla browsers!
    }
    return $str;
}