85 lines
2.8 KiB
PHP
85 lines
2.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: leanderschmedemann
|
|
* Date: 02/03/2017
|
|
* Time: 09:59
|
|
*/
|
|
|
|
require_once('includes.inc.php');
|
|
|
|
class Database
|
|
{
|
|
private $db;
|
|
|
|
function __construct() {
|
|
$this->db = pg_connect("host=".DATABASE_URL." dbname=".DATABASE_NAME." user=".DATABASE_USER." password=".DATABASE_PASSWORD);
|
|
}
|
|
|
|
// Execute $sql unsing array $params as params when needed.
|
|
function query($sql, $params = null) {
|
|
$result = null;
|
|
$error = 0;
|
|
if(isset($params)) {
|
|
$result = @pg_query_params($this->db, $sql, $params);
|
|
} else {
|
|
$result = @pg_query($this->db, $sql);
|
|
}
|
|
if(!$result) {
|
|
$error = 10101;
|
|
}
|
|
if($error == 0) {
|
|
$data = pg_fetch_all($result);
|
|
} else {
|
|
$data = null;
|
|
}
|
|
$query_response=array('data' => $data, 'error' => $error);
|
|
return $query_response;
|
|
}
|
|
|
|
// Create response to API request.
|
|
static function create_response($data, $error, $values = null) {
|
|
$status_message = Database::create_status_code($error, $values);
|
|
$meta = array('status'=>$error, 'message'=>$status_message);
|
|
if($error != 0){
|
|
$data = '';
|
|
}
|
|
$response_element_json = json_encode(array('meta'=>$meta, 'data'=>$data), JSON_PRETTY_PRINT);
|
|
return $response_element_json;
|
|
}
|
|
|
|
// Create status message from status code.
|
|
static function create_status_code($error, $values) {
|
|
switch ($error) {
|
|
case 0:
|
|
return 'Success.';
|
|
case 10101:
|
|
return 'SQL statement did not give a result.';
|
|
case 11101:
|
|
case 14101:
|
|
return 'User name does not match rules. User name must be 6 to 20 characters and consist of English letters and numbers only.';
|
|
case 11102:
|
|
case 14102:
|
|
return 'User name already exists. Please pick a different name.';
|
|
case 12101:
|
|
case 13101:
|
|
return 'User ID not specified. This is an internal error.';
|
|
case 12102:
|
|
return 'A game without a question is not possible. Please select new game length.';
|
|
case 12103:
|
|
return 'Sorry, we only have '.$values[0].' questions. Please try again.';
|
|
case 12104:
|
|
return 'The specified user name does not exist. This is an internal error.';
|
|
case 13102:
|
|
return 'No valid time specified. This is an internal error.';
|
|
case 13103:
|
|
return 'No chosen answer specified. This is an internal error.';
|
|
case 13104:
|
|
return 'No game for specified user name. This is an internal error.';
|
|
default:
|
|
return 'An unknown error occurred.';
|
|
}
|
|
}
|
|
}
|
|
?>
|