summaryrefslogtreecommitdiff
path: root/sqlbox/locallib.php
blob: e913291a8a4957e01a25feaaab5e60cffcedbef0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php

// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Internal library of functions for module sqlbox
 *
 * All the sqlbox specific functions, needed to implement the module
 * logic, should go here. Never include this file from your lib.php!
 *
 * @package    mod
 * @subpackage sqlbox
 * @copyright  2012 Jan Klemkow, Benjamin Franzke
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

defined('MOODLE_INTERNAL') || die();

/**
 * Does something really useful with the passed things
 *
 * @param array $things
 * @return object
 */
//function sqlbox_do_something_useful(array $things) {
//    return new stdClass();
//}

function db_table_from_query($db, $query) {
    global $PAGE;

    $table = new html_table;
    $result = @pg_query($db, $query);
    if (!$result)
        print_error('queryfailed', 'sqlbox', $PAGE->url, 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 = $n > 0 ? array_fill(0, $n, 'left') : array();
    while ($row = pg_fetch_row($result))
        $table->data[] = $row;

    return $table;
}

function sqlbox_submit_response($query, $sqlbox, $correct, $userid) {
    global $DB, $CFG;

    // TODO: Add timemodified
    //
    $current = $DB->get_record('sqlbox_solutions', array('sqlboxid' => $sqlbox->id, 'userid' => $userid));
    if ($current) {
        $newsolution = $current;
    } else {
        $newsolution = new stdClass();
        $newsolution->userid = $userid;
        $newsolution->sqlboxid = $sqlbox->id;
    }
    $newsolution->query = $query;
    $newsolution->correct = $correct;

    if ($current)
        $DB->update_record("sqlbox_solutions", $newsolution);
    else
        $DB->insert_record("sqlbox_solutions", $newsolution);
}