. /** * 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 */ /// (Replace sqlbox with the name of your module and remove this line) require_once(dirname(dirname(dirname(__FILE__))).'/config.php'); require_once(dirname(__FILE__).'/lib.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 { error('You must specify a course_module ID or an instance ID'); } 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); /// Print the page header $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('some-html-id'); //$PAGE->add_body_class('sqlbox-'.$somevar); // Output starts here echo $OUTPUT->header(); 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'); } // Replace the following lines with you own code $form = new mod_sqlbox_form($PAGE->url->out(false)); $form->display(); $data = $form->get_data(); $correct = true; echo $OUTPUT->heading('SQL Query: '.$data->sqlbox_query); if (isset($data->sqlbox_query)) { $db = pg_connect("host=localhost dbname=sqlbox user=sqlbox password=foobar"); if (!db) error("Failed to connect to sqlbox db"); $table = db_get_table_from_query($db, $data->sqlbox_query); if (strlen($sqlbox->query) > 0) { $table_orig = db_get_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); if ($correct) echo $OUTPUT->heading("Correct!"); else echo $OUTPUT->heading("Incorrect!"); } // Finish the page echo $OUTPUT->footer(); function db_get_table_from_query($db, $query) { $table = new html_table; $result = pg_query($db, $query); if (!$result) error("Query failed: ".pg_last_error($db)); $table = new html_table; $n = pg_num_fields($result); for ($i = 0; $i < $n; $i++) $table->head[] = pg_field_name($result, $i); $table->align = array_fill(0, $n, 'left'); while ($row = pg_fetch_row($result)) $table->data[] = $row; return $table; }