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; }
/** * @desc Gets derived questions from a webworkquestion record object by calling the SOAP server. * @param $webworkquestion The record to create from * @return $response The recordset from the WeBWorK Question Server. */ function webwork_get_derivations($wwquestion) { //parameters needed from the webworkquestion object $code = $wwquestion->code; $seed = $wwquestion->seed; $trials = $wwquestion->trials; $files = $wwquestion->files; //problem to be generated $problem = array(); $problem['code'] = $code; $problem['seed'] = $seed; $problem['files'] = $files; //requested # times for generation $request = array(); $request['trials'] = $trials; $request['problem'] = $problem; //SOAP CALL $params = array($request); $client = new webwork_client(); $response = $client->handler('generateProblem', $params); return $response; }
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; }
/** * @desc Test Basic Communication */ function test_basic_communication() { $client = new webwork_client(); $response = $client->handler('hello'); $this->assertEqual('hello world!', $response, 'Webwork Server Communication Test.'); }
/** * @desc Insures that all students in the moodle course exist in the webwork course (only one way). * @param integer $courseid Moodle Course ID. * @param integer $wwassignment default is -1, which means the function will synchronize all assignments in a course. * @return true */ function _wwassignment_synchronize($courseid, $wwassignmentid = -1) { $newones = array(); $webworkclient = new webwork_client(); $roleid = get_field('role', 'id', 'name', 'student'); $context = get_context_instance(CONTEXT_COURSE, $courseid); $users = get_role_users($roleid, $context); if ($wwassignmentid == -1) { $records = get_records('wwassignment', 'course', $courseid); } else { $records = get_records('wwassignment', 'id', $wwassignmentid); } foreach ($users as $user) { $webworkuser = $user->username; $webworkuser = $webworkclient->mapped_user($webworkcourse, $webworkuser); if ($webworkuser == -1) { $webworkuser = $user->username; //this user isnt mapped create him/her $webworkclient->create_user($webworkcourse, $user); } foreach ($records as $wwassignment) { $webworkset = $wwassignment->webwork_set; $webworkuserset = $webworkclient->mapped_user_set($webworkcourse, $webworkuser, $webworkset); if ($webworkuserset == -1) { //this user isnt in a particular set $webworkclient->create_user_set($webworkcourse, $webworkuser, $webworkset); } } } return true; }
$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") {
/** * @desc Gets the correct answers from the SOAP server for the seed in state. Places them into the state->responses array. * @param $question object The question object. * @param $state object The state object. * @return object Object containing the seed,derivedid, and answers. */ function get_correct_responses(&$question, &$state) { //get code and seed of response $code = base64_encode($question->code); $seed = $state->responses['seed']; $derivationid = $state->responses['derivationid']; //get empty answers & build answer request $answerarray = array(); foreach ($state->responses as $key => $value) { array_push($answerarray, array('field' => $key, 'answer' => $value)); } //build problem request $problem = array(); $problem['code'] = $code; $problem['seed'] = $seed; //SOAP request $params = array(); $params['request'] = $problem; $params['answers'] = $answerarray; //SOAP Call $client = new webwork_client(); $response = $client->handler('checkAnswers', $params); //make the state perfect graded $state->raw_grade = 1; $state->event = $state->event == QUESTION_EVENTCLOSE ? QUESTION_EVENTCLOSEANDGRADE : QUESTION_EVENTGRADE; $state->penalty = 0; //process correct answers into fields $answers = $response; $ret = array(); $ret['answers'] = array(); foreach ($answers as $answer) { $ret['answers'][$answer['field']] = $answer; $ret['answers'][$answer['field']]['answer'] = $answer['correct']; $ret['answers'][$answer['field']]['score'] = 1; $ret['answers'][$answer['field']]['evaluated'] = ""; $ret['answers'][$answer['field']]['preview'] = ""; } //push the seed onto the answer array, keep track of what seed these are for. $ret['seed'] = $seed; $ret['derivationid'] = $derivationid; return $ret; }
/** * @desc Retrieves the singleton instance of the webwork_client class. * @return The instance of the class. */ public function get_instance() { if (self::$instance == NULL) { self::$instance = new webwork_client(); } return self::$instance; }