Example #1
0
 $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);
Example #2
0
    $stmt = $conn->prepare('SELECT * FROM quest WHERE idquest = ?');
    $stmt->execute(array(intval($questid)));
    if ($row = $stmt->fetch()) {
        $name = $row['name'];
        $subject = $row['subject'];
    } else {
        APIHelpers::showerror(1190, 'Quest #' . $gameid . ' does not exists.');
    }
} catch (PDOException $e) {
    APIHelpers::showerror(1152, $e->getMessage());
}
// todo recalculate score for users
try {
    $stmt_quest = $conn->prepare('DELETE FROM quest WHERE idquest = ?');
    $stmt_quest->execute(array(intval($questid)));
    // remove from tryanswer
    $stmt_tryanswer = $conn->prepare('DELETE FROM tryanswer WHERE idquest = ?');
    $stmt_tryanswer->execute(array(intval($questid)));
    // remove from tryanswer_backup
    $stmt_tryanswer_backup = $conn->prepare('DELETE FROM tryanswer_backup WHERE idquest = ?');
    $stmt_tryanswer_backup->execute(array(intval($questid)));
    // remove from users_quests
    $stmt_users_quests = $conn->prepare('DELETE FROM users_quests WHERE questid = ?');
    $stmt_users_quests->execute(array(intval($questid)));
    $response['result'] = 'ok';
    APIEvents::addPublicEvents($conn, "quests", "Removed quest #" . $questid . ' ' . htmlspecialchars($name) . ' (subject: ' . htmlspecialchars($subject) . ') ');
} catch (PDOException $e) {
    APIHelpers::showerror(1063, $e->getMessage());
}
APIQuest::updateMaxGameScore($conn, APIGame::id());
APIHelpers::endpage($response);