예제 #1
0
파일: get.php 프로젝트: azizjonm/fhq
    APIHelpers::showerror(1066, 'parameter "taskid" must be numeric');
}
$response['result'] = 'ok';
$conn = APIHelpers::createConnection($config);
$response['userid'] = APISecurity::userid();
$params = array();
$params[] = APISecurity::userid();
$params[] = intval($questid);
$filter_by_state = '';
$filter_by_score = '';
$filter_by_game = '';
if (!APISecurity::isAdmin()) {
    $filter_by_state = ' AND quest.state = ?';
    $params[] = 'open';
    $filter_by_score = ' AND quest.min_score <= ?';
    $params[] = APISecurity::score();
    $filter_by_game = ' AND quest.gameid = ? ';
    $params[] = APIGame::id();
}
$query = '
			SELECT 
				quest.idquest,
				quest.name,
				quest.score,
				quest.min_score,
				quest.text,
				quest.state,
				quest.subject,
				quest.author,
				quest.gameid,
				users_quests.dt_passed
예제 #2
0
파일: pass.php 프로젝트: azizjonm/fhq
 } else {
     $status = 'completed';
 }
 $response['data'] = array('questid' => $row['idquest'], 'dt_passed' => $row['dt_passed']);
 $response['quest'] = $row['idquest'];
 $real_answer = $row['answer'];
 $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 = ?');
예제 #3
0
파일: list.php 프로젝트: azizjonm/fhq
// TODO: must be added filters
$conn = APIHelpers::createConnection($config);
$response['result'] = 'ok';
$response['status']['open'] = 0;
$response['status']['current'] = 0;
$response['status']['completed'] = 0;
$response['filter']['open'] = APIHelpers::getParam('filter_open', true);
$response['filter']['current'] = APIHelpers::getParam('filter_current', true);
$response['filter']['completed'] = APIHelpers::getParam('filter_completed', false);
$response['filter']['open'] = filter_var($response['filter']['open'], FILTER_VALIDATE_BOOLEAN);
$response['filter']['current'] = filter_var($response['filter']['current'], FILTER_VALIDATE_BOOLEAN);
$response['filter']['completed'] = filter_var($response['filter']['completed'], FILTER_VALIDATE_BOOLEAN);
$response['gameid'] = APIGame::id();
$response['userid'] = APISecurity::userid();
$filter_by_state = APISecurity::isAdmin() ? '' : ' AND quest.state = "open" ';
$filter_by_score = APISecurity::isAdmin() ? '' : ' AND quest.min_score <= ' . APISecurity::score() . ' ';
// calculate count summary
try {
    $stmt = $conn->prepare('
			SELECT
				count(quest.idquest) as cnt
			FROM
				quest
			WHERE
				gameid = ?
				' . $filter_by_state . '
				' . $filter_by_score . '
	');
    $stmt->execute(array(APIGame::id()));
    if ($row = $stmt->fetch()) {
        $response['status']['summary'] = $row['cnt'];