Ejemplo n.º 1
0
 function definition()
 {
     global $COURSE;
     $mform =& $this->_form;
     //Is this particular course mapped to a course in WeBWorK
     $webworkclient = new webwork_client();
     $coursemapped = _wwassignment_mapped_course($COURSE->id);
     if ($coursemapped == -1) {
         $mform->addElement('link', 'mainpage', get_string('mainpage_link_desc', 'wwassignment'), "view.php?id={$COURSE->id}", get_string('mainpage_link_name', 'wwassignment'));
         return;
     }
     //links
     $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 != "") {
         $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'));
     }
     //define the mapping
     $mform->addElement('header', 'set_initialization', get_string('set_initialization', 'wwassignment'));
     //name
     $mform->addElement('text', 'name', get_string('wwassignmentname', 'wwassignment'), array('size' => '64'));
     $mform->setType('name', PARAM_TEXT);
     $mform->addRule('name', null, 'required', null, 'client');
     //set select
     $options = $webworkclient->options_set($coursemapped, false);
     $mform->addElement('select', 'webwork_set', get_string('webwork_set', 'wwassignment'), $options);
     $mform->setHelpButton('webwork_set', array('webwork_set', get_string('webwork_set', 'wwassignment'), 'wwassignment'));
     //description
     $mform->addElement('htmleditor', 'description', get_string('description', 'assignment'));
     $mform->setType('description', PARAM_RAW);
     $mform->setHelpButton('description', array('writing', 'questions', 'richtext'), false, 'editorhelpbutton');
     $this->add_action_buttons();
     $this->standard_hidden_coursemodule_elements();
     return;
 }
Ejemplo n.º 2
0
 function definition()
 {
     global $COURSE, $USER, $OUTPUT;
     $mform =& $this->_form;
     //Is this particular course mapped to a course in WeBWorK
     $wwclient = new wwassignment_client();
     $wwcoursename = _wwassignment_mapped_course($COURSE->id, false);
     $wwsetname = _wwassignment_mapped_set($this->_instance);
     $wwusername = $USER->username;
     //create the instructor if necessary
     $wwusername = _wwassignment_mapcreate_user($wwcoursename, $wwusername, '10');
     //login the instructor
     $wwkey = _wwassignment_login_user($wwcoursename, $wwusername);
     $wwinstructorlink = _wwassignment_link_to_instructor_auto_login($wwcoursename, $wwusername, $wwkey);
     $mform->addElement('link', 'instructor_page_link', get_string('instructor_page_link_desc', 'wwassignment'), $wwinstructorlink, get_string('instructor_page_link_name', 'wwassignment'));
     if ($wwsetname != -1) {
         //we are doing an update, since an id exists in moodle db
         $wwsetlink = _wwassignment_link_to_edit_set_auto_login($wwcoursename, $wwsetname, $wwusername, $wwkey);
         $mform->addElement('link', 'edit_set', get_string('edit_set_link_desc', 'wwassignment'), $wwsetlink, get_string('edit_set_link_name', 'wwassignment'));
         $wwsetdata = $wwclient->get_assignment_data($wwcoursename, $wwsetname, false);
         $opendate = strftime("%c", $wwsetdata['open_date']);
         $duedate = strftime("%c", $wwsetdata['due_date']);
         $mform->addElement('static', 'opendate', 'WeBWorK Set Open Date', $opendate);
         $mform->addElement('static', 'duedate', 'WeBWorK Set Due Date', $duedate);
     }
     //define the mapping
     $mform->addElement('header', 'set_initialization', get_string('set_initialization', 'wwassignment'));
     //name
     $mform->addElement('text', 'name', get_string('wwassignmentname', 'wwassignment'), array('size' => '64'));
     $mform->setType('name', PARAM_TEXT);
     $mform->addRule('name', null, 'required', null, 'client');
     //set select
     $options = $wwclient->options_set($wwcoursename, false);
     $mform->addElement('select', 'webwork_set', get_string('webwork_set', 'wwassignment'), $options);
     //	$OUTPUT->help_icon('enablenotification','assignment');
     $mform->addHelpButton('webwork_set', 'webwork_set', 'wwassignment');
     //description
     $mform->addElement('htmleditor', 'description', get_string('description', 'assignment'));
     $mform->setType('description', PARAM_RAW);
     $mform->addHelpButton('description', 'writing', 'wwassignment');
     $features = new stdClass();
     $features->gradecat = true;
     $features->groups = false;
     $this->standard_coursemodule_elements($features);
     $this->add_action_buttons();
     //$this->standard_hidden_coursemodule_elements();
     return;
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
        error("Course Module ID was incorrect");
    }
}
//catch the guests
global $USER;
if ($USER->username == 'guest') {
    # this allows guests to view webwork (signed in as user guest)
    #FIXME  -- replace this with a method that uses the automatic guest sign in on webwork.
    // print_error('Guests cannot view WeBWorK Problem Sets');
}
//force login
$courseid = $course->id;
$wwassignmentid = $wwassignment->id;
require_login($courseid);
//webwork code
$wwcoursename = _wwassignment_mapped_course($courseid, false);
$wwusername = $USER->username;
$wwsetname = $wwassignment->webwork_set;
_wwassignment_mapcreate_user($wwcoursename, $wwusername);
_wwassignment_mapcreate_user_set($wwcoursename, $wwusername, $wwsetname);
$wwkey = _wwassignment_login_user($wwcoursename, $wwusername);
$wwsetlink = _wwassignment_link_to_set_auto_login($wwcoursename, $wwsetname, $wwusername, $wwkey);
add_to_log($course->id, "wwassignment", "view", "view.php?id={$cm->id}", "{$wwassignmentid}", _wwassignment_cmid());
/// Print the page header
if ($course->category) {
    $navigation = "<a href=\"../../course/view.php?id={$course->id}\">{$course->shortname}</a> ->";
}
$strwwassignments = get_string("modulenameplural", "wwassignment");
$strwwassignment = get_string("modulename", "wwassignment");
print_header("{$course->shortname}: {$wwassignment->name}", "{$course->fullname}", "{$navigation} <a href='index.php?id={$course->id}'>{$strwwassignments}</a> -> {$wwassignment->name}", "", "", true, update_module_button($cm->id, $course->id, $strwwassignment), navmenu($course, $cm));
/// Print the main part of the page
Ejemplo n.º 5
0
$strOpenDate = get_string("open_date", "wwassignment");
$strDueDate = get_string("due_date", "wwassignment");
if ($course->format == "weeks") {
    $table->head = array($strweek, $strname, $strdescription, $strOpenDate, $strDueDate);
    $table->align = array("center", "left", "left", "left", "left");
} else {
    if ($course->format == "topics") {
        $table->head = array($strtopic, $strname, $strdescription, $strOpenDate, $strDueDate);
        $table->align = array("center", "left", "left", "left", "left", "left", "left");
    } else {
        $table->head = array($strname, $strdescription, $strOpenDate, $strDueDate);
        $table->align = array("left", "left", "left", "left", "left", "left");
    }
}
$webworkclient =& new webwork_client();
$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);
        $description = $wwassignment->description;
        if (!$wwassignment->visible) {
            //Show dimmed if the mod is hidden
            $link = "<a class=\"dimmed\" href=\"view.php?id={$wwassignment->coursemodule}\">{$wwassignment->name}</a>";
        } else {
            //Show normal if the mod is visible
            $link = "<a href=\"view.php?id={$wwassignment->coursemodule}\">{$wwassignment->name}</a>";
        }
        if ($course->format == "weeks" or $course->format == "topics") {
            $table->data[] = array($wwassignment->section, $link, $description, strftime("%c", $wwassignmentsetinfo['open_date']), strftime("%c", $wwassignmentsetinfo['due_date']));
Ejemplo n.º 6
0
/**
* @desc Contacts webwork to find out the completion status of a problem set for all users in a course.
* @param integer $wwassignmentid The problem set
*/
function wwassignment_grades($wwassignmentid)
{
    global $COURSE;
    $webworkclient = new webwork_client();
    $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);
    $usernamearray = array();
    foreach ($students as $student) {
        array_push($usernamearray, $student->username);
    }
    $gradearray = $webworkclient->grade_users_sets($webworkcourse, $usernamearray, $webworkset);
    $i = 0;
    foreach ($students as $student) {
        $studentgrades->grades[$student->id] = $gradearray[$i];
        $i++;
    }
    $studentgrades->maxgrade = $webworkclient->get_max_grade($webworkcourse, $webworkset);
    return $studentgrades;
}
Ejemplo n.º 7
0
function wwassignment_refresh_events($courseid = 0)
{
    //    error_log('wwassignment_refresh_events called --not yet defined');
    global $DB;
    // This standard function will check all instances of this module
    // and make sure there are up-to-date events created for each of them.
    // If courseid = 0, then every wwassignment event in the site is checked, else
    // only wwassignment events belonging to the course specified are checked.
    // This function is used, in its new format, by restore_refresh_events() and by the cron function
    //
    // find wwassignment instances associated with this course or all wwassignment modules
    $courses = array();
    # create array of courses
    if ($courseid) {
        if (!($wwassignments = $DB->get_records("wwassignment", array("course" => $courseid)))) {
            return true;
        } else {
            $courses[$courseid] = array();
            // collect wwassignments for this course
            array_push($courses[$courseid], $wwassignments);
        }
    } else {
        if (!($wwassignments = $DB->get_records("wwassignment"))) {
            return true;
        } else {
            foreach ($wwassignments as $ww) {
                // collect wwassignments for each course
                //        		error_log("course id ".$ww->course);
                if (!$courses[$ww->course]) {
                    $courses[$ww->course] = array();
                }
                array_push($courses[$ww->course], $ww);
                // push wwassignment onto an exisiting one
            }
        }
    }
    // $courses now holds a list of courses with wwassignment modules
    $moduleid = _wwassignment_cmid();
    $cids = array_keys($courses);
    # collect course ids
    //    error_log("cids".print_r($cids, true));
    $wwclient = new wwassignment_client();
    foreach ($cids as $cid) {
        // connect to WeBWorK
        $wwcoursename = _wwassignment_mapped_course($cid, false);
        $wwassignment->webwork_course = $wwcoursename;
        if ($wwcoursename == -1) {
            //		error_log("Can't connect course $cid to webwork");
            break;
        }
        // retrieve wwassignments associated with this course
        foreach ($courses[$cid] as $wwassignment) {
            //checking mappings
            $wwsetname = $wwassignment->webwork_set;
            // 			error_log("updating events for $wwcoursename $wwsetname");
            //get data from WeBWorK
            $wwsetdata = $wwclient->get_assignment_data($wwcoursename, $wwsetname, false);
            $wwassignment->grade = $wwclient->get_max_grade($wwcoursename, $wwsetname, false);
            $wwassignment->timemodified = time();
            $returnid = $DB->update_record('wwassignment', $wwassignment);
            // update event
            //this part won't work because these items implicitly require the course.
            _wwassignment_delete_events($wwassignment->id);
            _wwassignment_create_events($wwassignment, $wwsetdata);
        }
    }
    return true;
}
Ejemplo n.º 8
0
function _wwassignment_refresh_event($wwassignment)
{
    global $DB;
    $cid = $wwassignment->course;
    $wwcoursename = _wwassignment_mapped_course($cid, false);
    if ($wwcoursename == -1) {
        error_log("Can't connect course {$cid} to webwork");
        return false;
    }
    $wwclient = new wwassignment_client();
    $wwsetname = $wwassignment->webwork_set;
    error_log("updating events for {$wwcoursename} {$wwsetname}");
    //get data from WeBWorK
    $wwsetdata = $wwclient->get_assignment_data($wwcoursename, $wwsetname, false);
    $wwassignment->grade = $wwclient->get_max_grade($wwcoursename, $wwsetname, false);
    $wwassignment->timemodified = time();
    $returnid = $DB->update_record('wwassignment', $wwassignment);
    // update event
    _wwassignment_delete_events($wwassignment->id);
    _wwassignment_create_events($wwassignment, $wwsetdata);
    return true;
}
Ejemplo n.º 9
0
$strduedate = get_string("due_date", "wwassignment");
$strtotalpoints = get_string("total_points", "wwassignment");
if ($course->format == "weeks") {
    $table->head = array($strweek, $strname, $strdescription, $stropendate, $strduedate, $strtotalpoints);
    $table->align = array("center", "left", "left", "left", "left");
} else {
    if ($course->format == "topics") {
        $table->head = array($strtopic, $strname, $strdescription, $stropendate, $strduedate);
        $table->align = array("center", "left", "left", "left", "left", "left", "left");
    } else {
        $table->head = array($strname, $strdescription, $stropendate, $strduedate);
        $table->align = array("left", "left", "left", "left", "left", "left");
    }
}
$wwclient = new wwassignment_client();
$wwcoursename = _wwassignment_mapped_course($COURSE->id, false);
foreach ($wwassignments as $wwassignment) {
    // grab specific info for this set:
    if (isset($wwassignment)) {
        $wwsetname = $wwassignment->webwork_set;
        $wwsetinfo = $wwclient->get_assignment_data($wwcoursename, $wwsetname, false);
        if (!$wwassignment->visible) {
            //Show dimmed if the mod is hidden
            $link = "<a class=\"dimmed\" href=\"view.php?id={$wwassignment->coursemodule}\">{$wwassignment->name}</a>";
        } else {
            //Show normal if the mod is visible
            $link = "<a href=\"view.php?id={$wwassignment->coursemodule}\">{$wwassignment->name}</a>";
        }
        if ($course->format == "weeks" or $course->format == "topics") {
            $totalpoints = $wwclient->get_max_grade($wwcoursename, $wwsetname, false);
            $table->data[] = array($wwassignment->section, $link, $wwassignment->description, strftime("%c", $wwsetinfo['open_date']), strftime("%c", $wwsetinfo['due_date']), $totalpoints);
Ejemplo n.º 10
0
/**
* @desc Contacts webwork to find out the completion status of a problem set for all users in a course.
* @param integer $wwassignmentid The problem set
* @return object The student grades indexed by student ID.
*/
function wwassignment_grades($wwassignmentid)
{
    global $COURSE;
    $wwclient = new wwassignment_client();
    $studentgrades = new stdClass();
    $studentgrades->grades = array();
    $studentgrades->maxgrade = 0;
    $gradeformula = '$finalgrade += ($problem->status > 0) ? 1 : 0;';
    $wwcoursename = _wwassignment_mapped_course($COURSE->id, false);
    $wwsetname = _wwassignment_mapped_set($wwassignmentid, false);
    // enumerate over the students in the course:
    $students = get_course_students($COURSE->id);
    $usernamearray = array();
    foreach ($students as $student) {
        array_push($usernamearray, $student->username);
    }
    $gradearray = $wwclient->grade_users_sets($wwcoursename, $usernamearray, $wwsetname);
    $i = 0;
    foreach ($students as $student) {
        $studentgrades->grades[$student->id] = $gradearray[$i];
        $i++;
    }
    $studentgrades->maxgrade = $wwclient->get_max_grade($wwcoursename, $wwsetname);
    return $studentgrades;
}
Ejemplo n.º 11
0
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;
}