Files
PHPShop/moneta/class/host/SettingsRepository.php
T

50 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace MonetaPhpShop\host;
use MonetaPhpShop\ModuleInfo;
use MonetaPhpShop\Settings;
use PHPShopOrm;
use RuntimeException;
/**
* Íàñòðîéêè ìîäóëÿ èç òàáëèöû `[base] moneta_system` åãî `inc/config.ini`.
*/
final class SettingsRepository
{
public function load(): Settings
{
$orm = new PHPShopOrm(self::table());
$orm->debug = false;
$row = $orm->select(['*'], false, false, ['limit' => 1]);
if (!is_array($row)) {
throw new RuntimeException('Íåò ñòðîêè íàñòðîåê ìîäóëÿ.');
}
return Settings::fromRow($row);
}
/**
* Ñòðîêà íàñòðîåê åù¸ îò âñòðîåííîãî ìîäóëÿ PHPShop: ôàéëû çàìåíåíû, à «Îáíîâèòü ìîäóëü»
* (ìèãðàöèÿ `updates/1.2/`) íå íàæàòà — íîâûõ êîëîíîê â òàáëèöå íåò.
*
* @param array<string, mixed> $row ñòðîêà òàáëèöû íàñòðîåê
*/
public static function needsUpgrade(array $row): bool
{
return !array_key_exists('account_id', $row);
}
public static function table(): string
{
$table = $GLOBALS['SysValue']['base'][ModuleInfo::PATH]['moneta_system'] ?? null;
if (!is_string($table) || ($table === '')) {
throw new RuntimeException('Ìîäóëü íå óñòàíîâëåí: íåò òàáëèöû íàñòðîåê â êîíôèãóðàöèè.');
}
return $table;
}
}