function game_importsnakes_do($newrec)
{
if (!insert_record('game_snakes_database', $newrec)) {
print_object($newrec);
error("Can't insert to table game_snakes_database");
}
}
function game_importsnakes_do($newrec)
{
global $DB;
if (!$DB->insert_record('game_snakes_database', $newrec)) {
print_object($newrec);
print_error("Can't insert to table game_snakes_database");
}
}
public function generate_questions($courses, $modules)
{
global $DB, $CFG;
if (!is_null($this->get('questions_per_course')) && count($courses) > 0 && is_array($courses)) {
require_once $CFG->libdir . '/questionlib.php';
require_once $CFG->dirroot . '/mod/quiz/editlib.php';
$questions = array();
$questionsmenu = question_type_menu();
$questiontypes = array();
foreach ($questionsmenu as $qtype => $qname) {
$questiontypes[] = $qtype;
}
// Add the questions
foreach ($courses as $courseid) {
$questions[$courseid] = array();
for ($i = 0; $i < $this->get('questions_per_course'); $i++) {
$qtype = $questiontypes[array_rand($questiontypes)];
// Only the following types are supported right now. Hang around for more!
$supported_types = array('match', 'essay', 'multianswer', 'multichoice', 'shortanswer', 'numerical', 'truefalse', 'calculated');
$qtype = $supported_types[array_rand($supported_types)];
if ($qtype == 'calculated') {
continue;
}
$classname = "question_{$qtype}_qtype";
if ($qtype == 'multianswer') {
$classname = "embedded_cloze_qtype";
}
$question = new $classname();
$question->qtype = $qtype;
$questions[$courseid][] = $question->generate_test("question{$qtype}-{$i}", $courseid);
$this->verbose("Generated a question of type {$qtype} for course id {$courseid}.");
}
}
// Assign questions to quizzes, if such exist
if (!empty($modules['quiz']) && !empty($questions) && !is_null($this->get('questions_per_quiz'))) {
$quizzes = $modules['quiz'];
// Cannot assign more questions per quiz than are available, so determine which is the largest
$questions_per_quiz = max(count($questions), $this->get('questions_per_quiz'));
foreach ($quizzes as $quiz) {
$questions_added = array();
for ($i = 0; $i < $questions_per_quiz; $i++) {
// Add a random question to the quiz
do {
if (empty($quiz->course)) {
print_object($quizzes);
die;
}
$random = rand(0, count($questions[$quiz->course]));
} while (in_array($random, $questions_added) || !array_key_exists($random, $questions[$quiz->course]));
if (!quiz_add_quiz_question($questions[$quiz->course][$random]->id, $quiz)) {
// Could not add question to quiz!! report error
if (!$this->get('quiet')) {
echo "WARNING: Could not add question id {$random} to quiz id {$quiz->id}{$this->eolchar}";
}
} else {
$this->verbose("Adding question id {$random} to quiz id {$quiz->id}.");
$questions_added[] = $random;
}
}
}
}
return $questions;
}
return null;
}
//.........这里部分代码省略.........
$test->status = true;
}
}
$tests['find sequence name'] = $test;
}
/// 47th test. Inserting TEXT contents
$textlib = textlib_get_instance();
if ($test->status) {
$test = new stdClass();
$test->status = false;
$test->sql = array();
$basetext = "\\ ''語 • Русский • Deutsch • English • Español • Français • Italiano • Nederlands • Polski • Português • Svenska • العربية • فارسی 한국어 • עברית • ไทย中文 Ελληνικά • Български • Српски • Українська • Bosanski • Català • Česky • Dansk • Eesti • Simple English • Esperanto • Euskara • Galego • Hrvatski • Ido • Bahasa Indonesia • Íslenska • Lëtzebuergesch • Lietuvių • Magyar • Bahasa Melayu اردو • ئۇيغۇرچه • हिन्दी • नेपाल भाषा मराठी • தமிழ் Հայերեն • Беларуская • Чăваш • Ирон æвзаг • Македонски • Сибирской говор • Afrikaans • Aragonés • Arpitan • Asturianu • Kreyòl Ayisyen • Azərbaycan • Bân-lâm-gú • Basa Banyumasan • Brezhoneg • Corsu • Cymraeg • Deitsch • Føroyskt • Frysk • Furlan • Gaeilge • Gàidhlig • Ilokano • Interlingua • Basa Jawa • Kapampangan • Kernewek • Kurdî كوردی • Ladino לאדינו • Latina • Latviešu • Limburgs • Lumbaart • Nedersaksisch • Nouormand • Occitan • O‘zbek • Piemontèis • Plattdüütsch • Ripoarisch • Sámegiella • Scots • Shqip • Sicilianu • Sinugboanon • Srpskohrvatski / Српскохрватски • Basa Sunda • Kiswahili • Tagalog • Tatarça • Walon • Winaray Авар • Башҡорт • Кыргызча Монгол • Қазақша • Тоҷикӣ • Удмурт • Armãneashce • Bamanankan • Eald Englisc • Gaelg • Interlingue • Kaszëbsczi • Kongo • Ligure • Lingála • lojban • Malagasy • Malti • Māori • Nāhuatl • Ekakairũ Naoero • Novial • Pangasinán • Tok Pisin • Romani / रोमानी • Rumantsch • Runa Simi • Sardu • Tetun • Türkmen / تركمن / Туркмен • Vèneto • Volapük • Võro • West-Vlaoms • Wollof • Zazaki • Žemaitėška";
/// Create one big text (1.500.000 chars)
$fulltext = '';
for ($i = 0; $i < 1000; $i++) {
//1500 * 1000 chars
$fulltext .= $basetext;
}
/// Build the record to insert
$rec->intro = addslashes($fulltext);
$rec->name = 'texttest';
/// Calculate its length
$textlen = $textlib->strlen($fulltext);
if ($rec->id = insert_record('newnameforthetable', $rec)) {
if ($new = get_record('newnameforthetable', 'id', $rec->id)) {
delete_records('newnameforthetable', 'id', $new->id);
$newtextlen = $textlib->strlen($new->intro);
if ($fulltext === $new->intro) {
$test->sql = array($newtextlen . ' cc. (text) sent and received ok');
$test->status = true;
} else {
$test->error = $db->ErrorMsg();
$test->sql = array($newtextlen . ' cc. (text) transfer failed. Data changed!');
print_object($new);
$test->status = false;
}
} else {
$test->error = $db->ErrorMsg();
}
} else {
$test->error = $db->ErrorMsg();
}
$tests['insert record ' . $textlen . ' cc. (text)'] = $test;
}
/// 48th test. Inserting BINARY contents
if ($test->status) {
$test = new stdClass();
$test->status = false;
/// Build the record to insert
$rec->avatar = addslashes($fulltext);
$rec->name = 'binarytest';
/// Calculate its length
$textlen = strlen($fulltext);
if ($rec->id = insert_record('newnameforthetable', $rec)) {
if ($new = get_record('newnameforthetable', 'id', $rec->id)) {
$newtextlen = strlen($new->avatar);
if ($fulltext === $new->avatar) {
$test->sql = array($newtextlen . ' bytes (binary) sent and received ok');
$test->status = true;
} else {
$test->error = $db->ErrorMsg();
$test->sql = array($newtextlen . ' bytes (binary) transfer failed. Data changed!');
$test->status = false;
}
} else {
$test->error = $db->ErrorMsg();
/**
* Get a single record as an object using the specified SQL statement
*
* A LIMIT is normally added to only look for 1 record
* If debugging is OFF only the first record is returned even if there is
* more than one matching record!
*
* @uses $CFG
* @uses $db
* @param string $sql The SQL string you wish to be executed.
* @param array $values If using placeholder ?s in the $sql, pass values here.
* @return Found record as object. False if not found or error
*/
function get_record_sql($sql, $values = null, $expectmultiple = false, $nolimit = false)
{
global $db, $CFG;
if (isset($CFG->debug) && $CFG->debug > 7 && !$expectmultiple) {
// Debugging mode - don't use limit
$limit = '';
} else {
if ($nolimit) {
$limit = '';
} else {
$limit = ' LIMIT 1';
// Workaround - limit to one record
}
}
if (defined('ELGG_PERFDB')) {
global $PERF;
$PERF->dbqueries++;
}
$rs = false;
if (!empty($values) && is_array($values) && count($values) > 0) {
$stmt = $db->Prepare($sql . $limit);
$rs = $db->Execute($stmt, $values);
} else {
$rs = $db->Execute($sql . $limit);
}
if (!$rs) {
if (isset($CFG->debug) and $CFG->debug > 7) {
// Debugging mode - print checks
notify($db->ErrorMsg() . '<br /><br />' . $sql . $limit);
}
if (!empty($CFG->dblogerror)) {
$debug = debug_backtrace();
foreach ($debug as $d) {
if (strpos($d['file'], 'datalib') === false) {
error_log("SQL " . $db->ErrorMsg() . " in {$d['file']} on line {$d['line']}. STATEMENT: {$sql}{$limit}");
break;
}
}
}
return false;
}
if (!($recordcount = $rs->RecordCount())) {
return false;
// Found no records
}
if ($recordcount == 1) {
// Found one record
return (object) $rs->fields;
} else {
// Error: found more than one record
notify('Error: Turn off debugging to hide this error.');
notify($sql . $limit);
if ($records = $rs->GetAssoc(true)) {
notify('Found more than one record in get_record_sql !');
print_object($records);
} else {
notify('Very strange error in get_record_sql !');
print_object($rs);
}
print_continue("{$CFG->wwwroot}/{$CFG->admin}/config.php");
}
}
请发表评论