function game_cryptex_continue($id, $game, $attempt, $cryptexrec, $endofgame, $context) { global $DB, $USER; if ($endofgame) { game_updateattempts($game, $attempt, -1, true); $endofgame = false; } if ($attempt != false and $cryptexrec != false) { $crossm = $DB->get_record('game_cross', array('id' => $attempt->id)); return game_cryptex_play($id, $game, $attempt, $cryptexrec, $crossm, false, false, false, $context); } if ($attempt === false) { $attempt = game_addattempt($game); } $textlib = textlib_get_instance(); $cryptex = new CryptexDB(); $questions = array(); $infos = array(); $answers = array(); $recs = game_questions_shortanswer($game); if ($recs == false) { print_error(get_string('no_words', 'game')); } $infos = array(); $reps = array(); foreach ($recs as $rec) { if ($game->param7 == false) { if ($textlib->strpos($rec->answertext, ' ')) { continue; //spaces not allowed } } $rec->answertext = game_upper($rec->answertext); $answers[$rec->answertext] = game_repairquestion($rec->questiontext); $infos[$rec->answertext] = array($game->sourcemodule, $rec->questionid, $rec->glossaryentryid); $a = array('gameid' => $game->id, 'userid' => $USER->id, 'questionid' => $rec->questionid, 'glossaryentryid' => $rec->glossaryentryid); if (($rec2 = $DB->get_record('game_repetitions', $a, 'id,repetitions r')) != false) { $reps[$rec->answertext] = $rec2->r; } } $cryptex->setwords($answers, $game->param1, $reps); if ($cryptex->computedata($crossm, $crossd, $letters, $game->param2)) { $new_crossd = array(); foreach ($crossd as $rec) { if (array_key_exists($rec->answertext, $infos)) { $info = $infos[$rec->answertext]; $rec->id = 0; $rec->sourcemodule = $info[0]; $rec->questionid = $info[1]; $rec->glossaryentryid = $info[2]; } game_update_queries($game, $attempt, $rec, 0, ''); $new_crossd[] = $rec; } $cryptexrec = $cryptex->save($game, $crossm, $new_crossd, $attempt->id, $letters); } game_updateattempts($game, $attempt, 0, 0); return game_cryptex_play($id, $game, $attempt, $cryptexrec, $crossm, false, false, false, $context); }
function game_cryptex_continue($id, $game, $attempt, $cryptexrec, $endofgame) { if ($endofgame) { game_updateattempts($game, $attempt, -1, true); $endofgame = false; } if ($attempt != false and $cryptexrec != false) { $crossm = get_record_select('game_cross', "id={$attempt->id}"); return game_cryptex_play($id, $game, $attempt, $cryptexrec, $crossm); } if ($attempt === false) { $attempt = game_addattempt($game); } $textlib = textlib_get_instance(); $cryptex = new CryptexDB(); $questions = array(); $infos = array(); $answers = array(); $recs = game_questions_shortanswer($game); if ($recs == false) { error(get_string('cryptex_nowords', 'game')); } $infos = array(); foreach ($recs as $rec) { if ($game->param7 == false) { if ($textlib->strpos($rec->answertext, ' ')) { continue; //spaces not allowed } } $rec->answertext = game_upper($rec->answertext); $answers[$rec->answertext] = game_repairquestion($rec->questiontext); $infos[$rec->answertext] = array($game->sourcemodule, $rec->questionid, $rec->glossaryentryid); } $cryptex->setwords($answers, $game->param1); if ($cryptex->computedata($crossm, $crossd, $letters, $game->param2)) { $new_crossd = array(); foreach ($crossd as $rec) { if (array_key_exists($rec->answertext, $infos)) { $info = $infos[$rec->answertext]; $rec->id = 0; $rec->sourcemodule = $info[0]; $rec->questionid = $info[1]; $rec->glossaryentryid = $info[2]; } game_update_queries($game, $attempt, $rec, 0, ''); $new_crossd[] = $rec; } $cryptexrec = $cryptex->save($game, $crossm, $new_crossd, $attempt->id, $letters); } game_updateattempts($game, $attempt, 0, 0); return game_cryptex_play($id, $game, $attempt, $cryptexrec, $crossm); }