. /** * Prints a particular instance of sqlbox * * You can have a rather longer description of the file as well, * if you like, and it can span multiple lines. * * @package mod * @subpackage sqlbox * @copyright 2012 Jan Klemkow, Benjamin Franzke * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once(dirname(dirname(dirname(__FILE__))).'/config.php'); require_once(dirname(__FILE__).'/lib.php'); require_once(dirname(__FILE__).'/locallib.php'); require_once(dirname(__FILE__).'/sqlbox_form.php'); $id = optional_param('id', 0, PARAM_INT); // course_module ID, or $n = optional_param('n', 0, PARAM_INT); // sqlbox instance ID - it should be named as the first character of the module if ($id) { $cm = get_coursemodule_from_id('sqlbox', $id, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $sqlbox = $DB->get_record('sqlbox', array('id' => $cm->instance), '*', MUST_EXIST); } elseif ($n) { $sqlbox = $DB->get_record('sqlbox', array('id' => $n), '*', MUST_EXIST); $course = $DB->get_record('course', array('id' => $sqlbox->course), '*', MUST_EXIST); $cm = get_coursemodule_from_instance('sqlbox', $sqlbox->id, $course->id, false, MUST_EXIST); } else { print_error('invalidcourse'); } require_login($course, true, $cm); $context = get_context_instance(CONTEXT_MODULE, $cm->id); add_to_log($course->id, 'sqlbox', 'view', "view.php?id={$cm->id}", $sqlbox->name, $cm->id); $PAGE->set_url('/mod/sqlbox/view.php', array('id' => $cm->id)); $PAGE->set_title(format_string($sqlbox->name)); $PAGE->set_heading(format_string($course->fullname)); $PAGE->set_context($context); // other things you may want to set - remove if not needed //$PAGE->set_cacheable(false); $PAGE->set_focuscontrol('id_sqlbox_query'); //$PAGE->add_body_class('sqlbox-'.$somevar); echo $OUTPUT->header(); if (isguestuser()) { echo $OUTPUT->confirm("Guest not allowed, Login?", get_login_url(), new moodle_url('/course/view.php', array('id'=>$course->id))); echo $OUTPUT->footer(); exit; } if ($sqlbox->intro) { // Conditions to show the intro can change to look for own settings or whatever echo $OUTPUT->box(format_module_intro('sqlbox', $sqlbox, $cm->id), 'generalbox mod_introbox', 'sqlboxintro'); } $form = new mod_sqlbox_form($PAGE->url->out(false)); $data = $form->get_data(); $current = $DB->get_record('sqlbox_solutions', array('sqlboxid' => $sqlbox->id, 'userid' => $USER->id)); if ($current) $form->set_query($current->query); $form->display(); $data = $form->get_data(); $correct = true; if (isset($data->sqlbox_query)) { echo $OUTPUT->heading('SQL Query: '.$data->sqlbox_query); $con = sprintf("host=%s dbname=%s user=%s password=%s", $CFG->sqlbox_hostname ? $CFG->sqlbox_hostname : "localhost", $CFG->sqlbox_database ? $CFG->sqlbox_database : "sqlbox", $CFG->sqlbox_user ? $CFG->sqlbox_user : "sqlbox", $CFG->sqlbox_password ? $CFG->sqlbox_password : "sqlbox_pw" ); $db = pg_connect($con); if (!$db) print_error('dbconnectionfailed', 'sqlbox'); $table = db_table_from_query($db, $data->sqlbox_query); if (strlen($sqlbox->query) > 0) { $table_orig = db_table_from_query($db, $sqlbox->query); if ($table->data != $table_orig->data || $table->head != $table_orig->head) $correct = false; } pg_close($db); echo html_writer::table($table); sqlbox_submit_response($data->sqlbox_query, $sqlbox, $correct, $USER->id); } else if ($current) { $correct = $current->correct; } if (isset($data->sqlbox_query) || $current) { if ($correct) echo $OUTPUT->heading("Die Anfrage ist korrekt!"); else echo $OUTPUT->heading("Die Ergebnismenge der Anfrage ist fehlerhaft!"); } echo $OUTPUT->footer();