Files
cmsPRO/autoload/Domain/Settings/SettingsRepository.php
Jacek Pyziak 9ee4116f50 Refaktoryzacja Faza 0+1: PSR-4 autoloader + Shared/Domain klasy
- Dodano PSR-4 autoloader do wszystkich 6 punktów wejścia
- Shared\: CacheHandler, Helpers, Html, ImageManipulator, Tpl
- Domain\: LanguagesRepository, SettingsRepository, UserRepository
- Stare class.*.php → cienkie wrappery (kompatybilność wsteczna)
- Dodano dokumentację: docs/PROJECT_STRUCTURE.md + pozostałe docs/
- Dodano CLAUDE.md z workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 23:43:55 +01:00

73 lines
1.8 KiB
PHP

<?php
namespace Domain\Settings;
class SettingsRepository
{
private $db;
public function __construct($db)
{
$this->db = $db;
}
/**
* Zwraca wszystkie ustawienia jako tablicę asocjacyjną param => value.
* Wynik jest cache'owany (TTL 24h).
*/
public function allSettings(): array
{
if ( !$settings = \Shared\Cache\CacheHandler::fetch( 'settings_details' ) )
{
$results = $this->db->select( 'pp_settings', '*' );
if ( is_array( $results ) )
foreach ( $results as $row )
$settings[ $row['param'] ] = $row['value'];
\Shared\Cache\CacheHandler::store( 'settings_details', $settings ?? [] );
}
return $settings ?? [];
}
/**
* Upsert jednego parametru.
*/
public function update( string $param, $value ): bool
{
if ( $this->db->count( 'pp_settings', [ 'param' => $param ] ) )
return (bool) $this->db->update( 'pp_settings', [ 'value' => $value ], [ 'param' => $param ] );
else
return (bool) $this->db->insert( 'pp_settings', [ 'param' => $param, 'value' => $value ] );
}
/**
* Zapisuje zbiorczo ustawienia (TRUNCATE + INSERT).
* Czyści cache i regeneruje .htaccess.
*
* @param array $data Tablica asocjacyjna [ 'param' => value, ... ]
*/
public function save( array $data ): bool
{
$this->db->query( 'TRUNCATE pp_settings' );
$rows = [];
foreach ( $data as $param => $value )
$rows[] = [ 'param' => $param, 'value' => $value ];
$this->db->insert( 'pp_settings', $rows );
\S::delete_cache();
\S::htacces();
return true;
}
/**
* Zwraca bieżącą wartość licznika odwiedzin.
*/
public function visitCounter(): ?string
{
return $this->db->get( 'pp_settings', 'value', [ 'param' => 'visits' ] ) ?: null;
}
}