Ejemplo n.º 1
0
            echo $id;
            ?>
)});
							$('#word'+id+'_value_pron' ).keypress(function(e){if (e.which == 13)dict.word_add_pron(<?php 
            echo $id;
            ?>
)});
							$('#word'+id+'_value_templ').keypress(function(e){if (e.which == 13)dict.word_run_templ(<?php 
            echo $id;
            ?>
)});
							var names = <?php 
            global $mysqli;
            $stmt = $mysqli->prepare("\n\t\t\t\t\t\t\t\t\tSELECT word_name FROM words\n\t\t\t\t\t\t\t\t\tWHERE word_id in (\n\t\t\t\t\t\t\t\t\t\tSELECT word_id FROM attributes\n\t\t\t\t\t\t\t\t\t\tWHERE attr_tag = 'template' AND attr_value = 'true'\n\t\t\t\t\t\t\t\t\t) AND word_spart = (?)\n\t\t\t\t\t\t\t\t");
            $res = [];
            sql_getmany($stmt, $res, ["s", $w->speechpart()]);
            echo json_encode($res);
            ?>
;
							var lock=false;
							var last = [$('#word'+id+'_value_templ').val()];
							$('#word'+id+'_value_templ').autocomplete({
								lookup: names,
							});
							var id2vals = <?php 
            echo "{" . $id . ":[" . $id2val . "]}";
            ?>
;
							var dependencies = <?php 
            echo "{" . $id . ":{" . $dependency . "}}";
            ?>
Ejemplo n.º 2
0
    <table style="border-spacing: 8px 2px;">
    <tr><th>Select</th>
    <?php 
if ($master) {
    echo "<th>UserName</th>";
}
?>
    <th>Name</th><th>Score/Grade</th><th>Date</th></tr>
    <?php 
global $sql_stmts;
$quizzes = [];
$quizzes_data = [];
if ($master) {
    sql_getmany(sql_stmt("all quizzes"), $quizzes, []);
} else {
    sql_getmany(sql_stmt("user_id->quiz_id reversed"), $quizzes, ["i", $suid]);
}
foreach ($quizzes as &$q) {
    $q = QUIZ($q);
    $quizzes_data[$q->id()] = $q->completed();
    ?>
<tr>
            <td><input name="quizzes" type="radio" value="<?php 
    echo $q->id();
    ?>
"></td>
            <?php 
    if ($master) {
        echo "<td>" . $q->username() . "</td>";
    }
    ?>
Ejemplo n.º 3
0
 function all($order_by = NULL)
 {
     global $mysqli;
     if (count($this->args) === 1) {
         $this->args = [];
     }
     if ($order_by !== NULL) {
         $this->stmt .= " ORDER BY word_{$order_by}";
     }
     if ($this->limit_values !== NULL) {
         list($start, $limit) = $this->limit_values;
         $this->stmt .= " LIMIT {$start}, {$limit}";
     }
     $value = $this->stmt;
     $this->stmt = $mysqli->prepare($this->stmt);
     if (!$this->stmt) {
         echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
         echo "\nStatement was: " . var_export($value, 1);
         return;
     }
     #error_log($value);
     sql_getmany($this->stmt, $this->map, $this->args);
     $this->stmt->close();
     #var_dump($this->map, $this->args);
     #echo "\nStatement was: " . var_export($value, 1);
     if ($this->map) {
         foreach ($this->map as &$w) {
             $w = WORD($this->db, $w);
         }
     }
     return $this->map;
 }
Ejemplo n.º 4
0
 function attrs()
 {
     global $sql_stmts;
     if ($this->issql and $this->_id !== NULL) {
         $added = [];
         # id's returned
         sql_getmany(sql_stmt("word_id->attr_tag"), $added, ["i", $this->_id]);
         foreach ($added as $attr) {
             $cont = FALSE;
             foreach ($this->_attrs as $_attr) {
                 if (ISPATH($_attr) ? $_attr->tag() == $attr : $_attr == $attr) {
                     $cont = TRUE;
                     break;
                 }
             }
             if (!$cont) {
                 $this->_attrs[] = ATTR($this, $attr);
             }
         }
     }
     return $this->_attrs;
 }
Ejemplo n.º 5
0
    }
    foreach ($res as &$r) {
        $r = ["correct" => $r->word()->id() === $pick_db["word"]->id(), "value" => ((string) $r->path() ? "(" . $r->path() . ") " : "") . str_replace("\n", ", ", $r->value())];
    }
    return $res;
}, "choices0-tooltip" => "Pick correct definition"]]], "random-definitions-stage28-29-fr" => ["name" => "Stage 28–29 Vocabulary (FR)", "category" => "Vocabulary", "lang" => "la", "options" => [["help" => "Choose a correct definition for the given word", "selections" => ["word" => function ($_, $db, $path) {
    $s = $db->searcher();
    $s->stmt .= "\n\t\t\t\t\t\tWHERE word_id IN (\n\t\t\t\t\t\t\tSELECT word_id FROM definitions\n\t\t\t\t\t\t\tWHERE def_lang = 'en'\n\t\t\t\t\t\t\tAND def_type IS NULL\n\t\t\t\t\t\t)\n\t\t\t\t\t\tAND word_lang = 'la'\n\t\t\t\t\t\tAND word_id NOT IN (\n\t\t\t\t\t\t\tSELECT word_id FROM attributes\n\t\t\t\t\t\t\tWHERE attr_tag = 'template' OR attr_tag = 'hidden'\n\t\t\t\t\t\t)\n\t\t\t\t\t\tAND (\n\t\t\t\t\t\t\tSELECT attr_value FROM attributes\n\t\t\t\t\t\t\tWHERE word_id = words.word_id\n\t\t\t\t\t\t\tAND attr_tag = 'clc-stage' \n\t\t\t\t\t\t) IN (28,29)";
    $s->args = [];
    return $s->rand();
}], "sentence" => [$OP_LQUOTE, function ($pick_db) {
    return format_word($pick_db["word"]->name());
}, $OP_RQUOTE, $OP_COLON, $OP_USER_INPUT], "answer0-language" => "en", "answer0" => function ($pick_db, $db) {
    global $mysqli;
    $query = $mysqli->prepare("\n\t\t\t\t\tSELECT DISTINCT def_id FROM definitions\n\t\t\t\t\tWHERE def_lang = 'en'\n\t\t\t\t\tAND def_type IS NULL\n\t\t\t\t\tAND word_id = (?)\n\t\t\t\t");
    $res = NULL;
    sql_getmany($query, $res, ["i", $pick_db["word"]->id()]);
    $query->close();
    if (!$res) {
        return NULL;
    }
    $ret = [];
    $ret2 = [];
    foreach ($res as $r) {
        $ret = array_merge($ret, explode("\n", definition(defaultDB(), $r)->value()));
    }
    foreach ($ret as $r) {
        $ret2 = array_merge($ret2, array_map("trim", explode(",", $r)));
    }
    return ["correct" => explode(",", $ret[0]), "acceptable" => $ret2];
}, "answer0-tooltip" => "Type correct definition"]]], "009" => ["name" => "Synonyms", "lang" => "la", "category" => "Vocabulary", "n_questions" => "auto", "options" => [make_matching(["cædō" => "interficiō", "exeō" => "discēdō", "pulsō" => "verberō", "volō" => "cupiō"]), make_matching(["turba" => "multitūdō", "mīles" => "arma", "imperātor" => "rēx"])]]]);
Ejemplo n.º 6
0
}
$db = defaultDB();
$s = $db->searcher();
$s->stmt .= "\n\tWHERE word_id IN (\n\t\tSELECT word_id FROM definitions\n\t\tWHERE def_lang = 'en'\n\t\tAND def_type IS NULL\n\t)\n\tAND word_lang = '{$la}'\n\tAND word_id NOT IN (\n\t\tSELECT word_id FROM attributes\n\t\tWHERE attr_tag = 'template' OR attr_tag = 'hidden'\n\t)\n\tORDER BY RAND() LIMIT 1";
$s->args = [];
$word = $s->rand();
$query = $mysqli->prepare("\n\tSELECT DISTINCT def_id FROM definitions\n\tWHERE def_lang = 'en'\n\tAND def_type IS NULL\n\tAND word_id = (?)\n\tORDER BY rand()\n\tLIMIT 1\n");
$res0 = NULL;
sql_getmany($query, $res0, ["i", $word->id()]);
$query->close();
if (!$res0) {
    exit('An error occurred');
}
$query = $mysqli->prepare("\n\tSELECT DISTINCT def_id FROM definitions\n\tWHERE def_lang = 'en'\n\tAND def_type IS NULL\n\tAND word_id != (?)\n\tAND def_value != ''\n\tAND def_value != (?)\n\tAND word_id in (\n\t\tSELECT word_id FROM words WHERE word_lang = '{$la}'\n\t)\n\tAND word_id NOT IN (\n\t\tSELECT word_id FROM attributes\n\t\tWHERE attr_tag = 'template' OR attr_tag = 'hidden'\n\t)\n\tORDER BY RAND() LIMIT 4\n");
$res1 = NULL;
sql_getmany($query, $res1, ["is", $word->id(), definition($db, $res0[0])->value()]);
$query->close();
if (!$res1) {
    exit('An error occurred');
}
#$res1 = choose_n_unique($res1, 4);
$res = array_merge($res0, $res1);
$options = [];
foreach ($res as &$r) {
    $options[] = str_replace("\n", ", ", definition($db, $r)->value());
}
$correct = $options[0];
shuffle($options);
$indices = array_keys($options);
shuffle($indices);
$correct_index = array_values(array_filter($indices, function ($i) use($options, $correct) {
Ejemplo n.º 7
0
function which3($lang, $spart, $key, $N = NULL, $given = NULL, $rand = NULL, $name = NULL)
{
    global $OP_MULTIPLE_CHOICE;
    global $OP_PARAGRAPH;
    global $OP_LPAREN;
    global $OP_RPAREN;
    global $OP_LQUOTE;
    global $OP_RQUOTE;
    $selections = [];
    $path = [];
    $mgr = defaultDB()->get_mgr($lang, $spart);
    $given = PATH($mgr, $given);
    $_gender = null;
    if ($N === NULL) {
        $N = count($mgr->key2values[$key]);
    }
    $selections["answers"] = PICK($N, $key, safe_get($key, $rand))->l($lang);
    $recurse = function ($mgr) use(&$_gender, $spart, $given, &$recurse, &$path, $rand, &$selections, $lang) {
        foreach ($mgr->simple_keys as $k) {
            if ($given->key_exists($k)) {
                $path[] = $given->key_value($k);
            } else {
                if ($k === "gender" and $spart === "verb") {
                    $_gender = make_pick(PICK($k, safe_get($k, $rand))->l($lang), $k);
                } else {
                    $path[] = make_pick(PICK($k, safe_get($k, $rand))->l($lang), $k);
                }
            }
        }
        foreach ($mgr->recursive_keys as $k) {
            if ($given->key_exists($k)) {
                $path[] = $given->key_value($k);
                $recurse($mgr->level[$k][$given->key_value($k)]);
            }
        }
    };
    $recurse($mgr);
    $answers = [];
    $selections[$key] = function ($pick_db) {
        error_log(var_export($pick_db, 1));
        return $pick_db["answers"][0];
    };
    for ($v = 0; $v < $N; $v++) {
        $answers[] = ["correct" => function ($pick_db) use($v) {
            return safe_get($pick_db["answers"][$v], $pick_db);
        }, "value" => function ($pick_db) use($v) {
            return $pick_db["answers"][$v];
        }];
    }
    $ret = ["help" => "What {$key} is this word?", "selections" => $selections, "sentence" => [["lang" => $lang, "speechpart" => $spart, "path" => $path, "attr" => ["!template" => NULL, "!hidden" => NULL], "store_word" => "word", "store" => "result"], function (&$pick_db) use($key) {
        global $mysqli;
        $query = $mysqli->prepare("\n\t\t\t\t\tSELECT form_tag FROM forms\n\t\t\t\t\tWHERE word_id = (?)\n\t\t\t\t\tAND form_value = (?)\n\t\t\t\t");
        $res = NULL;
        sql_getmany($query, $res, ["is", $pick_db["word"]->id(), $pick_db["result"]]);
        $query->close();
        foreach ($res as $tag) {
            $p = PATH($pick_db["word"], $tag);
            $v = $p->key_value($key);
            $pick_db[$v] = TRUE;
        }
        return FALSE;
        // No word
    }, $OP_PARAGRAPH, $OP_MULTIPLE_CHOICE], "choices0" => $answers, "choices0-tooltip" => "What {$key}?", "choices0-language" => "en"];
    if ($name !== null) {
        $ret["sentence"][0]["name"] = $name;
    }
    if ($_gender !== null) {
        $ret["sentence"][0]["verb-gender"] = $_gender;
    }
    return $ret;
}
Ejemplo n.º 8
0
    $stmt->close();
    $stmt = $mysqli->prepare("CREATE TABLE {$table2} like {$table}");
    sql_exec($stmt, []);
    $stmt->close();
    $stmt = $mysqli->prepare("INSERT {$table2} SELECT * FROM {$table}");
    sql_exec($stmt, []);
    $stmt->close();
}
$stmt = $mysqli->prepare("SELECT MAX({$column}) FROM {$table2}");
sql_getone($stmt, $max_id, []);
$stmt->close();
$stmt = $mysqli->prepare("SELECT {$column} FROM {$table2} ORDER BY {$order}");
sql_getmany($stmt, $ids, []);
$stmt->close();
$stmt = $mysqli->prepare("SELECT word_name FROM {$table2} ORDER BY {$order}");
sql_getmany($stmt, $names, []);
$stmt->close();
$safe = $max_id + 1;
if ($safe < 1000) {
    $safe = 1000;
}
echo $max_id . "," . $safe . "<br>";
foreach ($names as $id => $name) {
    //if($e)echo ($id+1)." “".$name."”<br>";
}
if ($e) {
    echo "<br>";
}
$last = 0;
function move($old, $new, $table2, $column)
{
Ejemplo n.º 9
0
    if ($forms) {
        //$searcher = $searcher->form_includes($forms);
        $op = " AND (";
        foreach ($forms as $f) {
            $stmt .= $op . "form_value LIKE CONCAT('%',?,'%')";
            $searcher->args[0] .= "s";
            $searcher->args[] .= $f;
            $op = " OR ";
        }
        if ($op === " OR ") {
            $stmt .= ")";
        }
    }
    $value = $stmt;
    error_log($value);
    $stmt = $mysqli->prepare($stmt);
    if (!$stmt) {
        echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
        echo "\nStatement was: " . var_export($value, 1);
    }
    $_start = microtime(true);
    $list = sql_getmany($stmt, $searcher->map, $searcher->args);
    error_log("-- Took " . (microtime(true) - $_start) . "s");
    $stmt->close();
} else {
    $list = [];
}
$res = vec_norm(array_map(function ($e) {
    return ["data" => $e, "value" => $e, "display" => format_word($e)];
}, $list));
echo json_encode($res);
Ejemplo n.º 10
0
    $_ = "";
    foreach (explode(",", $_GET["spart"]) as $l) {
        if (!preg_match("/^[a-zA-Z0-9]+\$/", $l)) {
            continue;
        }
        $stmt .= "{$_} word_spart = '{$l}'";
        $_ = " OR ";
    }
    $stmt .= ")";
    $op = " AND ";
}
if ($op === " AND ") {
    $stmt .= ")";
} else {
    $op = " WHERE ";
}
if ($attr_t) {
    $stmt .= "{$op} attr_tag = '" . explode("=", $attr)[0] . "'";
    $stmt .= "AND attr_value LIKE '%" . explode("=", $attr)[1] . "%'";
} elseif ($attr) {
    $stmt .= "{$op} attr_tag LIKE '%" . explode("=", $attr)[0] . "%'";
}
$stmt .= " {$group} ORDER BY attr_tag, attr_value";
//echo $stmt;
$stmt = $mysqli->prepare($stmt);
if (!$stmt) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$res = [];
sql_getmany($stmt, $res, []);
echo json_encode(array_values($res));
Ejemplo n.º 11
0
if ($table2 != $table) {
    $stmt = $mysqli->prepare("DROP TABLE IF EXISTS {$table2}");
    sql_exec($stmt, []);
    $stmt->close();
    $stmt = $mysqli->prepare("CREATE TABLE {$table2} like {$table}");
    sql_exec($stmt, []);
    $stmt->close();
    $stmt = $mysqli->prepare("INSERT {$table2} SELECT * FROM {$table}");
    sql_exec($stmt, []);
    $stmt->close();
}
$stmt = $mysqli->prepare("SELECT MAX({$column}) FROM {$table2}");
sql_getone($stmt, $max_id, []);
$stmt->close();
$stmt = $mysqli->prepare("SELECT {$column} FROM {$table2}");
sql_getmany($stmt, $_ids, []);
$stmt->close();
$safe = $max_id + 1;
$ids = [];
foreach ($_ids as $id) {
    $ids[$id] = $id;
}
foreach ($ids as $id) {
    if ($e) {
        echo "{$id} ";
    }
}
if ($e) {
    echo "<br>";
}
$last = 0;