/** * @desc Creates an auto_login link to the URL of the webwork problem set pointed to by wwassignmentid for the current user. (will force set creation if necessary) * @param string $wwassignmentid The Moodle ID of the wwassignment. * @return URL to the assignment. */ function wwassignment_view_link($wwassignmentid) { global $COURSE, $USER; $webworkclient = new webwork_client(); $webworkcourse = _wwassignment_mapped_course($COURSE->id, false); $webworkset = _wwassignment_mapped_set($wwassignmentid, false); $webworkuser = $webworkclient->mapped_user($webworkcourse, $USER->username); if ($webworkuser == -1) { $tempuser = $USER; $newuser = $webworkclient->create_user($webworkcourse, $tempuser); } $webworksetuser = $webworkclient->mapped_user_set($webworkcourse, $webworkuser, $webworkset); if ($webworksetuser == -1) { $newsetuser = $webworkclient->create_user_set($webworkcourse, $webworkuser, $webworkset); } $key = $webworkclient->login_user($webworkcourse, $webworkuser, false); return _wwassignment_link_to_set_auto_login($webworkcourse, $webworkset, $webworkuser, $key); }
/** * @desc Creates an auto_login link to the URL of the webwork problem set pointed to by wwassignmentid for the current user. (will force set creation if necessary) * @param string $wwassignmentid The Moodle ID of the wwassignment. * @return URL to the assignment. */ function wwassignment_view_link($wwassignmentid) { global $COURSE, $USER; $webworkclient = webwork_client::get_instance(); $webworkcourse = _wwassignment_mapped_course($COURSE->id, false); $webworkset = _wwassignment_mapped_set($wwassignmentid, false); $webworkuser = $webworkclient->mapped_user($webworkcourse, $USER->username); if ($webworkuser == -1) { error_log(get_string("user_not_mapped", "wwassignment")); $newuser = $webworkclient->create_user($webworkcourse, $USER); $webworkuser = $webworkclient->mapped_user($webworkcourse, $USER->username, false); } $webworksetuser = $webworkclient->mapped_user_set($webworkcourse, $webworkuser, $webworkset); if ($webworksetuser == -1) { error_log(get_string("set_user_not_mapped", "wwassignment")); //try and do it now $newsetuser = $webworkclient->create_user_set($webworkcourse, $webworkuser, $webworkset); //AGAIN FOR GOOD MEASURE $webworksetuser = $webworkclient->mapped_set_user($webworkcourse, $webworkuser, $webworkset, false); } $key = $webworkclient->login_user($webworkcourse, $webworkuser, false); return _wwassignment_link_to_set_auto_login($webworkcourse, $webworkset, $webworkuser, $key); }
# 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 // Print webwork in iframe and link to escape to have webwork in a single window print "<p style='font-size: smaller; color: #aaa;'>" . get_string("iframeNoShow-1", "wwassignment") . "<a href='{$wwsetlink}'>" . get_string("iframeNoShow-2", "wwassignment") . "</a><p align='center'></iframe></p>\n"; print "<iframe id='wwPage' src='{$wwsetlink}' frameborder='1' " . "width='" . $CFG->wwassignment_iframewidth . "' " . "height='" . $CFG->wwassignment_iframeheight . "'>"; print "<script>ww.Init(" . isteacher($course->id) . ")</script>"; /// Finish the page print_footer($course);