$levenshtein = levenshtein(strtoupper($real_answer), strtoupper($answer)); if ($status == 'open') { // check answer if (md5(strtoupper($real_answer)) == md5(strtoupper($answer))) { $response['result'] = 'ok'; $stmt_users_quests = $conn->prepare("INSERT INTO users_quests(userid, questid, dt_passed) VALUES(?,?,NOW())"); $stmt_users_quests->execute(array(APISecurity::userid(), $questid)); $new_user_score = APIHelpers::calculateScore($conn); $response['new_user_score'] = intval($new_user_score); if (APISecurity::score() != $response['new_user_score']) { APISecurity::setUserScore($response['new_user_score']); $query2 = 'UPDATE users_games SET date_change = NOW(), score = ? WHERE userid = ? AND gameid = ?;'; $stmt2 = $conn->prepare($query2); $stmt2->execute(array(intval($new_user_score), APISecurity::userid(), APIGame::id())); } APIQuest::updateCountUserSolved($conn, $questid); APIAnswerList::addTryAnswer($conn, $questid, $answer, $real_answer, $levenshtein, 'Yes'); APIAnswerList::movedToBackup($conn, $questid); // add to public events if (!APISecurity::isAdmin()) { APIEvents::addPublicEvents($conn, "users", 'User #' . APISecurity::userid() . ' {' . APISecurity::nick() . '} passed quest #' . $questid . ' {' . $questname . '} from game #' . APIGame::id() . ' {' . APIGame::title() . '} (new user score: ' . $new_user_score . ')'); } } else { // check already try pass $stmt_check_tryanswer = $conn->prepare('select count(*) as cnt from tryanswer where answer_try = ? and iduser = ? and idquest = ?'); $stmt_check_tryanswer->execute(array($answer, $userid, intval($questid))); if ($row_check_tryanswer = $stmt_check_tryanswer->fetch()) { $count = intval($row_check_tryanswer['cnt']); $response['checkanswer'] = array($answer, $userid, intval($questid)); if ($count > 0) { APIHelpers::showerror(1318, 'Your already try this answer. Levenshtein distance: ' . $levenshtein);
$params['gameid'] = APIGame::id(); $params['idauthor'] = intval($params['idauthor']); $params['author'] = $params['author']; $params['gameid'] = APIGame::id(); $params['userid'] = APISecurity::userid(); $params['count_user_solved'] = 0; $conn = APIHelpers::createConnection($config); $values_q = array(); foreach ($params as $k => $v) { $values_q[] = '?'; } $query = 'INSERT INTO quest(' . implode(', ', array_keys($params)) . ', date_change, date_create) VALUES(' . implode(', ', $values_q) . ', NOW(), NOW());'; try { $stmt = $conn->prepare($query); if ($stmt->execute(array_values($params))) { $response['data']['quest']['id'] = $conn->lastInsertId(); $response['result'] = 'ok'; APIQuest::updateCountUserSolved($conn, $response['data']['quest']['id']); // to public evants if ($params['state'] == 'open') { APIEvents::addPublicEvents($conn, "quests", "New quest #" . $response['data']['quest']['id'] . " " . $questname . " (subject: " . $params['subject'] . ")"); } } else { APIHelpers::showerror(1168, 'Could not insert. PDO: ' . $conn->errorInfo()); } } catch (PDOException $e) { APIHelpers::showerror(1167, $e->getMessage()); } APIQuest::updateMaxGameScore($conn, APIGame::id()); APIHelpers::endpage($response);