SettingsRepository.php 1.2 KB
<?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;
    }
}