function definition() { global $COURSE; $mform =& $this->_form; //Is this particular course mapped to a course in WeBWorK $webworkclient = webwork_client::get_instance(); $coursemapped = _wwassignment_mapped_course($COURSE->id); if ($coursemapped == -1) { //define the mapping $mform->addElement('header', 'course_initialization', get_string('course_initialization', 'wwassignment')); $options = $webworkclient->options_course(); $mform->addElement('select', 'webwork_course', get_string('webwork_course', 'wwassignment'), $options); $mform->setHelpButton('webwork_course', array('webwork_course', get_string('webwork_course', 'wwassignment'), 'wwassignment')); $mform->addElement('checkbox', 'auto_enroll_course', get_string('auto_enroll_course', 'wwassignment'), get_string('auto_enroll_course_desc', 'wwassignment')); $this->add_action_buttons(); $this->standard_hidden_coursemodule_elements(); return; } $mform->addElement('link', 'instructor_page_link', get_string('instructor_page_link_desc', 'wwassignment'), wwassignment_instructor_page_link(), get_string('instructor_page_link_name', 'wwassignment')); if ($this->_instance == "") { //doing an addition $mform->addElement("header", 'set_initialization', get_string('set_initialization', 'wwassignment')); $options = $webworkclient->options_set($coursemapped); $mform->addElement('select', 'webwork_set', get_string('webwork_set', 'wwassignment'), $options); $mform->setHelpButton('webwork_set', array('webwork_set', get_string('webwork_set', 'wwassignment'), 'wwassignment')); $mform->addElement('checkbox', 'auto_enroll_set', get_string('auto_enroll_set', 'wwassignment'), get_string('auto_enroll_set_desc', 'wwassignment')); $this->add_action_buttons(); $this->standard_hidden_coursemodule_elements(); return; } else { //doing an update //$this->standard_hidden_coursemodule_elements(); $mform->addElement('link', 'edit_set', get_string('edit_set_link_desc', 'wwassignment'), wwassignment_edit_set_link($this->_instance), get_string('edit_set_link_name', 'wwassignment')); //$this->add_action_buttons(false); } return; }
$strtopic = get_string("topic"); $strOpenDate = get_string("openDate", "wwassignment"); $strDueDate = get_string("dueDate", "wwassignment"); if ($course->format == "weeks") { $table->head = array($strweek, $strname, $strOpenDate, $strDueDate); $table->align = array("center", "left", "left", "left"); } else { if ($course->format == "topics") { $table->head = array($strtopic, $strname, $strOpenDate, $strDueDate); $table->align = array("center", "left", "left", "left", "left", "left"); } else { $table->head = array($strname, $strOpenDate, $strDueDate); $table->align = array("left", "left", "left", "left", "left"); } } $webworkclient = webwork_client::get_instance(); $webworkcourse = _wwassignment_mapped_course($COURSE->id, false); foreach ($wwassignments as $wwassignment) { // grab specific info for this set: if (isset($wwassignment)) { //var_dump($wwassignment); $wwassignmentsetinfo = $webworkclient->get_assignment_data($webworkcourse, $wwassignment->webwork_set, false); if (!$wwassignment->visible) { //Show dimmed if the mod is hidden $link = "<a class=\"dimmed\" href=\"view.php?id={$wwassignment->coursemodule}\">{$wwassignmentsetinfo->name}</a>"; } else { //Show normal if the mod is visible $setinfoname = $wwassignmentsetinfo['name']; $link = "<a href=\"view.php?id={$wwassignment->coursemodule}\">{$setinfoname}</a>"; } if ($course->format == "weeks" or $course->format == "topics") {
function wwassignment_grades($wwassignmentid) { /// Must return an array of grades for a given instance of this module, /// indexed by user. It also returns a maximum allowed grade. /// /// $return->grades = array of grades; /// $return->maxgrade = maximum allowed grade; /// /// return $return; // here's how we compute the grade: // NOTE: each set has P problems in it. // NOTE: each problem may be attempted M times. // NOTE: each problem has been attempted A times (by a given user). // NOTE: each problem was gotten correct C times (by a given user). // NOTE: each problem was gotten incorrect I times (by a given user). // Thus, a users grade is: sigma(over P) C/A // And the max score is P // Alternately, code is provided for: // sigma(over P) { if( C > 0) 1 else 0 } // again with a max of P // redefine it here, 'cause for some reason we can't global it... //debug_log("start grades ".$wwassignmentid); global $COURSE; $webworkclient = webwork_client::get_instance(); $studentgrades->grades = array(); $studentgrades->maxgrade = 0; //debug_log("record ".print_r($oMod,true)); $gradeformula = '$finalgrade += ($problem->status > 0) ? 1 : 0;'; //debug_log("formula ".print_r($gradeFormula, true)); $webworkcourse = _wwassignment_mapped_course($COURSE->id, false); $webworkset = _wwassignment_mapped_set($wwassignmentid, false); // enumerate over the students in the course: $students = get_course_students($COURSE->id); foreach ($students as $student) { $webworkuser = $webworkclient->mapped_user($webworkcourse, $student->username, false); $webworkuserset = $webworkclient->mapped_user_set($webworkcourse, $webworkuser, $webworkset, false); $studentproblems = $webworkclient->get_user_problems($webworkcourse, $webworkuser, $webworkset); $finalgrade = 0.0; foreach ($studentproblems as $problem) { $finalgrade += $problem->status; } $studentgrades->grades[$student->id] = $finalgrade; } $studentgrades->maxgrade = $webworkclient->get_max_grade($webworkcourse, $webworkset); //error_log("all grades".print_r($studentgrades, true)); return $studentgrades; }