diff options
| author | Connor Thomson <blumatrikz@gmail.com> | 2026-09-20 18:40:35 -0700 |
|---|---|---|
| committer | Connor Thomson <blumatrikz@gmail.com> | 2026-09-20 18:40:35 -0700 |
| commit | 09cda8862f59f25918c64477d829e46acfc676cb (patch) | |
| tree | c2125d2b21bac3813e9a73873c88db1b98fa81fa /php | |
| parent | 0f9326e4e643a239897b80c8017cc9ff3e7be235 (diff) | |
Seperate some of the php files
Diffstat (limited to 'php')
| -rw-r--r-- | php/database.php | 70 | ||||
| -rw-r--r-- | php/mail.php | 30 |
2 files changed, 100 insertions, 0 deletions
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 @@ +<?php +/* + * GNUfault.org - GNUfault's website + * Copyright (C) 2026 Connor Thomson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +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 @@ +<?php +/* + * GNUfault.org - GNUfault's website + * Copyright (C) 2026 Connor Thomson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +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); +} + +?> |
