SettingsRepository.php
1.2 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
<?php
final class SettingsRepository
{
private const DEFAULTS = [
'group_aluno_filter' => 'cn=grpCI-Aluno-Info',
];
public static function get(string $key, $default = null)
{
$stmt = Database::pdo()->prepare('SELECT valor FROM settings WHERE chave = :chave');
$stmt->execute(['chave' => $key]);
$value = $stmt->fetchColumn();
if ($value !== false) {
return $value;
}
return self::DEFAULTS[$key] ?? $default;
}
public static function set(string $key, string $value, string $usuario): void
{
$stmt = Database::pdo()->prepare(
'INSERT INTO settings (chave, valor, atualizado_por) VALUES (:chave, :valor, :usuario)
ON DUPLICATE KEY UPDATE valor = VALUES(valor), atualizado_por = VALUES(atualizado_por)'
);
$stmt->execute(['chave' => $key, 'valor' => $value, 'usuario' => $usuario]);
}
public static function all(): array
{
$rows = Database::pdo()->query('SELECT chave, valor FROM settings')->fetchAll();
$result = self::DEFAULTS;
foreach ($rows as $row) {
$result[$row['chave']] = $row['valor'];
}
return $result;
}
}