Newer
Older
flow-task / server / libs / utils.php
<?php

function response_json(Array $resp = []) {
	@header('Content-Type: application/json');
	return json_encode($resp);
}

function app() {
	global $app;

	return $app;
};

function dd($var) {
	die(var_dump($var));
}

function gen_token(int $user_id) :String {
	return hash_hmac('sha256', bin2hex(random_bytes(16)), $user_id);
}

function sanitize_input(String $var) :String {
	return htmlspecialchars(strip_tags(trim($var)), ENT_QUOTES, 'UTF-8');
}

function get_formatted_timestamp() :String {
	return date("Y-m-d H:i:s");
}

function error_response(String $class, String $errtext) :Array {
	return response(false, [
		"error" => [
			"class" => ucfirst($class),
			"text" => $errtext
		]
	]);
}

function success_response(Array $data = []) :Array {
	return response(true, [
		"data" => $data
	]); 
}

function response(bool $status = true, Array $body = []) :Array {	
	return [
		"status" => $status,
		"response" => $body
	];
}

function force_error_response(String $class, String $errtext) {
	die(response_json(error_response($class, $errtext)));
}

function get_current_session() {
	$token = sanitize_input($_GET["token"]);

	$session = new \App\Entity\Session();

	if(!$session -> init_by_token($token)) {
		force_error_response("Auth", "Invalid token");
	}
	
	return $session;
}

function get_expected_vars(Array $vars_scope, Array $vars_list) :Array {
	$result = [];

	foreach($vars_list as $var_name) {
		if(!isset($vars_scope[$var_name])) {
			$expected_vars = implode(", ", $vars_list);
			force_error_response("Router", "Controller expects ({$expected_vars})");
		}

		$result[] = $vars_scope[$var_name];
	}

	return $result;
}