Files
postgrachelor-php/Database.php
2017-04-03 23:30:50 +02:00

76 lines
2.4 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:
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:
return 'User name already exists. Please pick a different name.';
case 12101:
return 'User name 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.';
default:
return 'An unknown error occurred.';
}
}
}
?>