]> jfr.im git - uguu.git/blob - src/Classes/Connector.php
add extension determination when its not provided
[uguu.git] / src / Classes / Connector.php
1 <?php
2 /**
3 * Uguu
4 *
5 * @copyright Copyright (c) 2022-2023 Go Johansson (nokonoko) <neku@pomf.se>
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21 namespace Pomf\Uguu\Classes;
22
23 use PDO;
24
25 class Connector extends Database
26 {
27 public PDO $DB;
28 public string $dbType;
29 public array $CONFIG;
30 public Response $response;
31
32 public function errorHandler(int $errno, string $errstr):void
33 {
34 if ($this->CONFIG['DEBUG']) {
35 $this->response->error(500, 'Server error: ' . $errstr);
36 } else {
37 $this->response->error(500, 'Server error.');
38 }
39 }
40
41 public function fatalErrorHandler():void
42 {
43 if (!is_null($e = error_get_last())) {
44 if ($this->CONFIG['DEBUG']) {
45 $this->response->error(500, 'FATAL Server error: ' . print_r($e, true));
46 } else {
47 $this->response->error(500, 'Server error.');
48 }
49 }
50 }
51
52 /**
53 * Reads the config.json file and populates the CONFIG property with the settings
54 * Also assembles the PDO DB connection and registers error handlers.
55 *
56 */
57 public function __construct()
58 {
59 $this->response = new Response('json');
60 if (!file_exists(__DIR__ . '/../config.json')) {
61 $this->response->error(500, 'Cant read settings file.');
62 }
63 $this->CONFIG = json_decode(
64 file_get_contents(__DIR__ . '/../config.json'),
65 true,
66 );
67 ini_set('display_errors', 0);
68 set_error_handler([$this, "errorHandler"]);
69 register_shutdown_function([$this, "fatalErrorHandler"]);
70 $this->dbType = $this->CONFIG['DB_MODE'];
71 $this->DB = new PDO(
72 $this->CONFIG['DB_MODE'] . ':' . $this->CONFIG['DB_PATH'],
73 $this->CONFIG['DB_USER'],
74 $this->CONFIG['DB_PASS']
75 );
76 }
77 }