From 19382835832e6f3463985a79c2a44da08af855f7 Mon Sep 17 00:00:00 2001 From: Leander Date: Tue, 4 Apr 2017 12:19:55 +0200 Subject: [PATCH] T201704041219 --- answer.php | 96 +++++++++++++++++++++++++------------------------- categories.php | 15 ++++++++ register.php | 38 ++++++++++---------- rename.php | 38 ++++++++++---------- start.php | 84 +++++++++++++++++++++---------------------- 5 files changed, 143 insertions(+), 128 deletions(-) create mode 100644 categories.php diff --git a/answer.php b/answer.php index c5790ed..606e374 100644 --- a/answer.php +++ b/answer.php @@ -6,58 +6,58 @@ * Time: 14:00 */ - require_once('includes.inc.php'); - $data = ''; - $error = 0; - $uid = isset($_GET['uid']) ? $_GET['uid'] : ''; - $time = isset($_GET['time']) ? $_GET['time'] : ''; - $time = (($time === '0') || ($time && gettype(+$time) == 'integer')) ? +$_GET['time'] : 0; - $db = new Database(); - $chosen_answer = isset($_GET['answer']) ? $_GET['answer'] : ''; - $chosen_answer = (($chosen_answer === '0') || ($chosen_answer && gettype(+$chosen_answer) == 'integer')) ? +$_GET['answer'] : -1; +require_once('includes.inc.php'); +$data = ''; +$error = 0; +$uid = isset($_GET['uid']) ? $_GET['uid'] : ''; +$time = isset($_GET['time']) ? $_GET['time'] : ''; +$time = (($time === '0') || ($time && gettype(+$time) == 'integer')) ? +$_GET['time'] : 0; +$db = new Database(); +$chosen_answer = isset($_GET['answer']) ? $_GET['answer'] : ''; +$chosen_answer = (($chosen_answer === '0') || ($chosen_answer && gettype(+$chosen_answer) == 'integer')) ? +$_GET['answer'] : -1; - function calculate_points($time) { - $points = $time < 2000 ? 100 : 141.1421 - 0.02842916 * $time + 0.000004132312 * pow($time, 2) - - 3.432331e-10 * pow($time, 3) + 1.391508e-14 * pow($time, 4) - 2.166078e-19 * pow($time, 5); - $points = $points < 10 ? 10 : intval($points); - return $points; - } +function calculate_points($time) { + $points = $time < 2000 ? 100 : 141.1421 - 0.02842916 * $time + 0.000004132312 * pow($time, 2) + - 3.432331e-10 * pow($time, 3) + 1.391508e-14 * pow($time, 4) - 2.166078e-19 * pow($time, 5); + $points = $points < 10 ? 10 : intval($points); + return $points; +} - $correct_answer = $db->query('SELECT "current_right_answer" FROM "Games" WHERE "ID" = $1', array($uid)) - ['data'][0]['current_right_answer']; - $correct = $correct_answer == $chosen_answer ? true : false; - $score = $correct_answer == $chosen_answer ? calculate_points($time) : 0; - if($uid == '') { - $error = 13101; - } else if($time == 0) { - $error = 13102; - } else if($chosen_answer == -1) { - $error = 13103; - } else if($db->query('SELECT EXISTS (SELECT 1 FROM "Games" WHERE "ID" = $1)', array($uid)) - ['data'][0]['exists'] == 'f') { - $error = 13104; +$correct_answer = $db->query('SELECT "current_right_answer" FROM "Games" WHERE "ID" = $1', array($uid)) + ['data'][0]['current_right_answer']; +$correct = $correct_answer == $chosen_answer ? true : false; +$score = $correct_answer == $chosen_answer ? calculate_points($time) : 0; +if($uid == '') { + $error = 13101; +} else if($time == 0) { + $error = 13102; +} else if($chosen_answer == -1) { + $error = 13103; +} else if($db->query('SELECT EXISTS (SELECT 1 FROM "Games" WHERE "ID" = $1)', array($uid)) + ['data'][0]['exists'] == 'f') { + $error = 13104; +} else { + $old_points = $db->query('SELECT "current_score" FROM "Games" WHERE "ID" = $1', array($uid)) + ['data'][0]['current_score']; + $new_points = $old_points + $score; + $db->query('UPDATE "Games" SET "current_score" = $1 WHERE "ID" = $2', array($new_points, $uid)); + $results = array('correct' => $correct, 'score' => $score); + $old_time = $db->query('SELECT "total_time" FROM "Games" WHERE "ID" = $1', array($uid)) + ['data'][0]['total_time']; + $new_time = $old_time + $time; + $db->query('UPDATE "Games" SET "total_time" = $1 WHERE "ID" = $2', array($new_time, $uid)); + if($db->query('SELECT EXISTS (SELECT 1 FROM "GamesQuestions" WHERE "Games_ID" = $1)',array($uid)) + ['data'][0]['exists'] == 't') { + $next_question = Question::get_next_question($db, $uid); + $data = array('results' => $results, 'next' => $next_question); } else { - $old_points = $db->query('SELECT "current_score" FROM "Games" WHERE "ID" = $1', array($uid)) - ['data'][0]['current_score']; - $new_points = $old_points + $score; - $db->query('UPDATE "Games" SET "current_score" = $1 WHERE "ID" = $2', array($new_points, $uid)); - $results = array('correct' => $correct, 'score' => $score); - $old_time = $db->query('SELECT "total_time" FROM "Games" WHERE "ID" = $1', array($uid)) - ['data'][0]['total_time']; - $new_time = $old_time + $time; - $db->query('UPDATE "Games" SET "total_time" = $1 WHERE "ID" = $2', array($new_time, $uid)); - if($db->query('SELECT EXISTS (SELECT 1 FROM "GamesQuestions" WHERE "Games_ID" = $1)',array($uid)) - ['data'][0]['exists'] == 't') { - $next_question = Question::get_next_question($db, $uid); - $data = array('results' => $results, 'next' => $next_question); - } else { - $end = array('score' => $new_points, 'time' => $new_time); - $data = array('results' => $results, 'end' => $end); - $db->query('DELETE FROM "Games" WHERE "ID" = $1', array($uid)); - } + $end = array('score' => $new_points, 'time' => $new_time); + $data = array('results' => $results, 'end' => $end); + $db->query('DELETE FROM "Games" WHERE "ID" = $1', array($uid)); } +} - $response = Database::create_response($data, $error); - print_r($response); +$response = Database::create_response($data, $error); +print_r($response); ?> \ No newline at end of file diff --git a/categories.php b/categories.php new file mode 100644 index 0000000..9ba109b --- /dev/null +++ b/categories.php @@ -0,0 +1,15 @@ +query('SELECT "ID", "name" FROM "Categories"')['data']; +print_r($categories); + +?> \ No newline at end of file diff --git a/register.php b/register.php index 8e7565e..dcd2786 100644 --- a/register.php +++ b/register.php @@ -6,27 +6,27 @@ * Time: 10:23 */ - require_once('includes.inc.php'); - define('PATTERN', '/^[a-zA-Z0-9 ]{6,20}$/'); - $data = ''; - $error = 0; - $name = isset($_GET['name']) ? $_GET['name'] : ''; - $uid = md5(uniqid(rand(), true)); - $db = new Database(); +require_once('includes.inc.php'); +define('PATTERN', '/^[a-zA-Z0-9 ]{6,20}$/'); +$data = ''; +$error = 0; +$name = isset($_GET['name']) ? $_GET['name'] : ''; +$uid = md5(uniqid(rand(), true)); +$db = new Database(); - if(preg_match(PATTERN, $name) != 1) { - $error = 11101; +if(preg_match(PATTERN, $name) != 1) { + $error = 11101; +} else { + // Create user. + $db->query('INSERT INTO "Users" ("ID", "name") VALUES ($1, $2)', array($uid, $name)); + // Create error if user to create already exists. + if(preg_match('/violates unique constraint "Users_name_unique"/', pg_last_error()) == 1) { + $error = 11102; } else { - // Create user. - $db->query('INSERT INTO "Users" ("ID", "name") VALUES ($1, $2)', array($uid, $name)); - // Create error if user to create already exists. - if(preg_match('/violates unique constraint "Users_name_unique"/', pg_last_error()) == 1) { - $error = 11102; - } else { - $data = array('uid' => $uid, 'name' => $name); - } + $data = array('uid' => $uid, 'name' => $name); } - $response = Database::create_response($data, $error); - print $response; +} +$response = Database::create_response($data, $error); +print $response; ?> \ No newline at end of file diff --git a/rename.php b/rename.php index ffdc1f3..2973783 100644 --- a/rename.php +++ b/rename.php @@ -6,27 +6,27 @@ * Time: 12:07 */ - require_once('includes.inc.php'); - define('PATTERN', '/^[a-zA-Z0-9 ]{6,20}$/'); - $data = ''; - $error = 0; - $name = isset($_GET['name']) ? $_GET['name'] : ''; - $uid = md5(uniqid(rand(), true)); - $db = new Database(); +require_once('includes.inc.php'); +define('PATTERN', '/^[a-zA-Z0-9 ]{6,20}$/'); +$data = ''; +$error = 0; +$name = isset($_GET['name']) ? $_GET['name'] : ''; +$uid = md5(uniqid(rand(), true)); +$db = new Database(); - if(preg_match(PATTERN, $name) != 1) { - $error = 14101; +if(preg_match(PATTERN, $name) != 1) { + $error = 14101; +} else { + // Create user. + $db->query('UPDATE "Users" SET "name" = $1 WHERE "ID" = $2', array($name, $uid)); + // Create error if user to create already exists. + if(preg_match('/violates unique constraint "Users_name_unique"/', pg_last_error()) == 1) { + $error = 14102; } else { - // Create user. - $db->query('UPDATE "Users" SET "name" = $1 WHERE "ID" = $2', array($name, $uid)); - // Create error if user to create already exists. - if(preg_match('/violates unique constraint "Users_name_unique"/', pg_last_error()) == 1) { - $error = 14102; - } else { - $data = array('uid' => $uid, 'name' => $name); - } + $data = array('uid' => $uid, 'name' => $name); } - $response = Database::create_response($data, $error); - print $response; +} +$response = Database::create_response($data, $error); +print $response; ?> \ No newline at end of file diff --git a/start.php b/start.php index d537b9a..431f94e 100644 --- a/start.php +++ b/start.php @@ -6,51 +6,51 @@ * Time: 14:07 */ - require_once('includes.inc.php'); - $data = ''; - $error = 0; - $values = null; - $uid = isset($_GET['uid']) ? $_GET['uid'] : ''; - $length = isset($_GET['length']) ? $_GET['length'] : ''; - $length = (($length === '0') || ($length && gettype(+$length) == 'integer')) ? +$_GET['length'] : 10; - $db = new Database(); - $questions_count = $db->query('SELECT COUNT(*) FROM "Questions"')['data'][0]['count']; +require_once('includes.inc.php'); +$data = ''; +$error = 0; +$values = null; +$uid = isset($_GET['uid']) ? $_GET['uid'] : ''; +$length = isset($_GET['length']) ? $_GET['length'] : ''; +$length = (($length === '0') || ($length && gettype(+$length) == 'integer')) ? +$_GET['length'] : 10; +$db = new Database(); +$questions_count = $db->query('SELECT COUNT(*) FROM "Questions"')['data'][0]['count']; - // Return $count random, non repeating numbers in range from $min to $max. - function random_numbers($min, $max, $count){ - $numbers = range($min, $max); - shuffle($numbers); - return array_slice($numbers, 0, $count-1); +// Return $count random, non repeating numbers in range from $min to $max. +function random_numbers($min, $max, $count){ + $numbers = range($min, $max); + shuffle($numbers); + return array_slice($numbers, 0, $count-1); +} + +if($uid == '') { + $error = 12101; +} else if($length == 0) { + $error = 12102; +} else if($length > $questions_count) { + $error = 12103; + $values = array($questions_count); +} else { + // Delete existing game for user. + if($db->query('SELECT EXISTS (SELECT 1 FROM "Games" WHERE "ID" = $1)', array($uid))['data'][0]['exists'] == 't') { + $db->query('DELETE FROM "Games" WHERE "ID" = $1', array($uid)); } - - if($uid == '') { - $error = 12101; - } else if($length == 0) { - $error = 12102; - } else if($length > $questions_count) { - $error = 12103; - $values = array($questions_count); - } else { - // Delete existing game for user. - if($db->query('SELECT EXISTS (SELECT 1 FROM "Games" WHERE "ID" = $1)', array($uid))['data'][0]['exists'] == 't') { - $db->query('DELETE FROM "Games" WHERE "ID" = $1', array($uid)); - } - // Create new game for user. - $db->query('INSERT INTO "Games" ("ID") VALUES ($1)', array($uid)); - if(preg_match('/violates foreign key constraint "Games_ID_fkey"/', pg_last_error()) == 1) { - $error = 12104; - } - // Find questions for new game and insert into table. - $questions = random_numbers(0, $questions_count-1, $length); - foreach($questions as $question) { - $q = $db->query('SELECT "ID" FROM "Questions" OFFSET $1 LIMIT 1', array($question))['data'][0]['ID']; - $db->query('INSERT INTO "GamesQuestions" ("Games_ID", "Questions_ID") VALUES ($1, $2)', array($uid, $q)); - } + // Create new game for user. + $db->query('INSERT INTO "Games" ("ID") VALUES ($1)', array($uid)); + if(preg_match('/violates foreign key constraint "Games_ID_fkey"/', pg_last_error()) == 1) { + $error = 12104; } + // Find questions for new game and insert into table. + $questions = random_numbers(0, $questions_count-1, $length); + foreach($questions as $question) { + $q = $db->query('SELECT "ID" FROM "Questions" OFFSET $1 LIMIT 1', array($question))['data'][0]['ID']; + $db->query('INSERT INTO "GamesQuestions" ("Games_ID", "Questions_ID") VALUES ($1, $2)', array($uid, $q)); + } +} - $next_question = Question::get_next_question($db, $uid); - $data = array('next' => $next_question); +$next_question = Question::get_next_question($db, $uid); +$data = array('next' => $next_question); - $response = Database::create_response($data, $error, $values); - print_r($response); +$response = Database::create_response($data, $error, $values); +print_r($response); ?> \ No newline at end of file