]> jfr.im git - uguu.git/blame - src/Classes/Connector.php
1.7.0
[uguu.git] / src / Classes / Connector.php
CommitLineData
e480c0e5 1<?php
e480c0e5 2 /**
96bb2d33 3 * Uguu
8f7f8840 4 *
52053519 5 * @copyright Copyright (c) 2022-2023 Go Johansson (nokonoko) <neku@pomf.se>
96bb2d33
GJ
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.
8f7f8840 11 *
96bb2d33
GJ
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/>.
e480c0e5 19 */
96bb2d33 20
f059e2cf 21 namespace Pomf\Uguu\Classes;
96bb2d33 22
96bb2d33
GJ
23 use PDO;
24
25 class Connector extends Database
e480c0e5 26 {
96bb2d33 27 public PDO $DB;
52053519 28 public string $dbType;
96bb2d33 29 public array $CONFIG;
52053519 30 public Response $response;
96bb2d33 31
52053519 32 public function errorHandler(int $errno, string $errstr):void
96bb2d33 33 {
52053519
GJ
34 if ($this->CONFIG['DEBUG']) {
35 $this->response->error(500, 'Server error: ' . $errstr);
36 } else {
37 $this->response->error(500, 'Server error.');
96bb2d33 38 }
52053519
GJ
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 }
96bb2d33
GJ
49 }
50 }
51
52 /**
52053519
GJ
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.
96bb2d33 55 *
96bb2d33 56 */
52053519 57 public function __construct()
96bb2d33 58 {
52053519
GJ
59 $this->response = new Response('json');
60 if (!file_exists(__DIR__ . '/../config.json')) {
61 $this->response->error(500, 'Cant read settings file.');
96bb2d33 62 }
52053519
GJ
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 );
e480c0e5 76 }
52053519 77 }