From 09cda8862f59f25918c64477d829e46acfc676cb Mon Sep 17 00:00:00 2001 From: Connor Thomson Date: Sun, 20 Sep 2026 18:40:35 -0700 Subject: Seperate some of the php files --- php/database.php | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ php/mail.php | 30 ++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 php/database.php create mode 100644 php/mail.php (limited to 'php') diff --git a/php/database.php b/php/database.php new file mode 100644 index 0000000..e84ded3 --- /dev/null +++ b/php/database.php @@ -0,0 +1,70 @@ +. + */ + +function database(): PDO { + static $pdo = null; + + if ($pdo !== null) { + return $pdo; + } + + $host = '127.0.0.1'; + $name = 'gnufaultdb'; + $user = 'gnufaultdb_user'; + $password = trim(file_get_contents('/etc/gnufault.d/password')); + $charset = 'utf8mb4'; + + $dsn = "mysql:host=$host;dbname=$name;charset=$charset"; + + $options = [ + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false + ]; + + try { + $pdo = new PDO($dsn, $user, $password, $options); + } catch (\PDOException $e) { + throw new \PDOException($e->getMessage(), (int)$e->getCode()); + } + + return $pdo; +} + +function query(string $sql, array $parameters = []): PDOStatement { + $statement = database()->prepare($sql); + + $statement->execute($parameters); + + return $statement; +} + +function fetch_row(string $sql, array $parameters = []): ?array { + $row = query($sql, $parameters)->fetch(); + + return $row === false ? null : $row; +} + +function insert_row(string $sql, array $parameters = []): int { + query($sql, $parameters); + + return (int)database()->lastInsertId(); +} + +?> diff --git a/php/mail.php b/php/mail.php new file mode 100644 index 0000000..155e6b4 --- /dev/null +++ b/php/mail.php @@ -0,0 +1,30 @@ +. + */ + +function send_mail(string $to, string $subject, string $content): bool { + $from = 'noreply@gnufault.org'; + + $headers = "From: $from" . "\r\n" . + "Reply-To: $from" . "\r\n" . + "X-Mailer: PHP/" . phpversion(); + + return mail($to, $subject, $content, $headers); +} + +?> -- cgit v1.2.3