-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutilities.php
More file actions
81 lines (73 loc) · 1.75 KB
/
utilities.php
File metadata and controls
81 lines (73 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
/**
* Gets an array of SQL statemnets from a file.
*
* @param string $filename
* @return array
*/
function file_get_sql(string $filename):array
{
if (!file_exists($filename)) return [];
return array_get_sql(file_get_contents($filename));
}
/**
* Gets an array of SQL statemnets from text.
*
* @param string $text
* @return array
*/
function array_get_sql(string $text=''):array
{
$text = str_replace(["\r\n","\r"], "\n", $text);
// Remove comment
$text = preg_replace("/\/\*.*?\*\//s", '', $text);
$text = preg_replace("/--.*?$/m", '', $text);
// Split SQL text
$sql = preg_split("/\s*;\s*/", $text);
array_walk($sql, function(&$item){
$item = trim($item);
});
$sql = array_filter($sql, function($val){
return !empty(trim($val));
});
return $sql;
}
/**
* Generate an API token.
*
* @param string $filename
* @return string URL
*/
function generate_api_token():string
{
if (!array_key_exists('API_TOKEN', $_SESSION))
{
$_SESSION['API_TOKEN'] = base64_encode(openssl_random_pseudo_bytes(32));
}
return $_SESSION['API_TOKEN'];
}
/**
* Comfirm the API token.
*
* @return bool
*/
function comfirm_api_token():bool
{
$headers = getallheaders();
if (!isset($headers['Authorization'])) return false;
list($bearer, $token) = preg_split('/[\s,]+/', $headers['Authorization']);
return
isset($bearer) && (strtolower($bearer) === 'bearer') &&
isset($token) && ($token === $_SESSION['API_TOKEN']);
}
/**
* Gets the versioned asset URL.
*
* @param string $filename
* @return string URL
*/
function asset_get(string $filename):string
{
$modified_at = (@filemtime(getenv('APP_DIR')."/{$filename}"));
return "{$filename}?v={$modified_at}";
}