) // // If the submission was successful, the status code will be 1. // Otherwise, the codes above may be returned (although -10204 will only appear as a side effect). // Status code -103 will appear if some assignment submission to the database fails. // /** Lets Sloodle know we are in a linker script. */ define('SLOODLE_LINKER_SCRIPT', true); /** Grab the Sloodle/Moodle configuration. */ require_once('../../init.php'); /** Include the Sloodle PHP API. */ require_once(SLOODLE_LIBROOT.'/sloodle_session.php'); // Authenticate the request, load the Sloodle Object assignment module, and validate the user $sloodle = new SloodleSession(); $sloodle->authenticate_request(); $sloodle->load_module('sloodleobject', true); // Has user data been omitted? $uuid = $sloodle->request->get_avatar_uuid(false); $avname = $sloodle->request->get_avatar_name(false); if ($uuid == null && $avname == null) { // Just query the assignment details $sloodle->response->set_status_code(1); $sloodle->response->set_status_descriptor('OK'); $sloodle->response->add_data_line($sloodle->module->get_name()); $sloodle->response->add_data_line(strip_tags($sloodle->module->get_intro())); $sloodle->response->render_to_output(); exit(); } // Some user data has been provided, so make sure we can validate the user $sloodle->validate_user(); // Check the requirements for allowing submissions $status = 1; // This means it's OK if (!$sloodle->module->user_can_submit($sloodle->user)) $status = -10201; else if ($sloodle->module->user_has_submitted($sloodle->user) == true && $sloodle->module->resubmit_allowed() == false) $status = -10205; else if ($sloodle->module->is_too_early()) $status = -10202; else { $late = $sloodle->module->is_too_late(); if ($late > 0) $status = -10203; else if ($late < 0) $sloodle->response->add_side_effect(-10204); // Still OK... just late! :-) } // If the status was bad, then report it if ($status < 1) { $sloodle->response->set_status_code($status); $sloodle->response->set_status_descriptor('ASSIGNMENT'); $sloodle->response->render_to_output(); exit(); } // Has an object name been provided? $sloodleobjname = $sloodle->request->optional_param('sloodleobjname', null); if ($sloodleobjname == null || empty($sloodleobjname)) { // No - just checking if the user can submit $sloodle->response->set_status_code(1); $sloodle->response->set_status_descriptor('OK'); $sloodle->response->add_data_line('Checked assignment status'); $sloodle->response->render_to_output(); exit(); } // Object being submitted - fetch our other data $sloodleprimcount = (int)$sloodle->request->required_param('sloodleprimcount'); $sloodleprimdropname = $sloodle->request->required_param('sloodleprimdropname'); $sloodleprimdropuuid = $sloodle->request->required_param('sloodleprimdropuuid'); $sloodleregion = $sloodle->request->required_param('sloodleregion'); $sloodlepos = $sloodle->request->required_param('sloodlepos'); // Make sure the position is valid $arr = sloodle_vector_to_array($sloodlepos); if (!$arr) $sloodlepos = '<0,0,0>'; else $sloodlepos = sloodle_round_vector($sloodlepos); // Submit all the data if ($sloodle->module->submit($sloodle->user, $sloodleobjname, $sloodleprimcount, $sloodleprimdropname, $sloodleprimdropuuid, $sloodleregion, $sloodlepos)) { // OK $sloodle->response->set_status_code(1); $sloodle->response->set_status_descriptor('OK'); $sloodle->response->add_data_line('SUBMITTED OBJECT'); } else { // Error $sloodle->response->set_status_code(-103); $sloodle->response->set_status_descriptor('SYSTEM'); $sloodle->response->add_data_line('Failed to add assignment data into database.'); } // Render the response $sloodle->response->render_to_output(); exit(); ?>