50 lines
1.4 KiB
PHP
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;
|
|
}
|
|
}
|