107 lines
5.0 KiB
PHP
107 lines
5.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Entity\Migration;
|
|
|
|
use Doctrine\DBAL\Schema\Schema;
|
|
use Doctrine\Migrations\AbstractMigration;
|
|
|
|
/**
|
|
* Auto-generated Migration: Please modify to your needs!
|
|
*/
|
|
final class Version20201204043539 extends AbstractMigration
|
|
{
|
|
public function getDescription(): string
|
|
{
|
|
return 'Settings migration';
|
|
}
|
|
|
|
public function preUp(Schema $schema): void
|
|
{
|
|
$settingsRaw = $this->connection->fetchAllAssociative('SELECT * FROM settings WHERE setting_value IS NOT NULL');
|
|
|
|
$settings = [];
|
|
foreach ($settingsRaw as $row) {
|
|
$settings[$row['setting_key']] = json_decode($row['setting_value'], true, 512, JSON_THROW_ON_ERROR);
|
|
}
|
|
|
|
$newSettings = array_filter(
|
|
[
|
|
'baseUrl' => $settings['base_url'] ?? null,
|
|
'instanceName' => $settings['instance_name'] ?? null,
|
|
'preferBrowserUrl' => $this->toBool($settings['prefer_browser_url'] ?? null),
|
|
'useRadioProxy' => $this->toBool($settings['use_radio_proxy'] ?? null),
|
|
'historyKeepDays' => $this->toInt($settings['history_keep_days'] ?? null),
|
|
'alwaysUseSsl' => $this->toBool($settings['always_use_ssl'] ?? null),
|
|
'apiAccessControl' => $settings['api_access_control'] ?? null,
|
|
'enableWebsockets' => $this->toBool($settings['nowplaying_use_websockets'] ?? null),
|
|
'analytics' => $settings['analytics'] ?? null,
|
|
'checkForUpdates' => $this->toBool($settings['central_updates_channel'] ?? null),
|
|
'appUniqueIdentifier' => $settings['central_app_uuid'] ?? null,
|
|
'updateResults' => $settings['central_update_results'] ?? null,
|
|
'updateLastRun' => $this->toInt($settings['central_update_last_run'] ?? null),
|
|
'hideAlbumArt' => $this->toBool($settings['hide_album_art'] ?? null),
|
|
'homepageRedirectUrl' => $settings['homepage_redirect_url'] ?? null,
|
|
'defaultAlbumArtUrl' => $settings['default_album_art_url'] ?? null,
|
|
'hideProductName' => $this->toBool($settings['hide_product_name'] ?? null),
|
|
'publicTheme' => $settings['public_theme'] ?? null,
|
|
'publicCustomCss' => $settings['custom_css_public'] ?? null,
|
|
'publicCustomJs' => $settings['custom_js_public'] ?? null,
|
|
'internalCustomCss' => $settings['custom_css_internal'] ?? null,
|
|
'backupEnabled' => $this->toBool($settings['backup_enabled'] ?? null),
|
|
'backupTimeCode' => $settings['backup_time'] ?? null,
|
|
'backupExcludeMedia' => $this->toBool($settings['backup_exclude_media'] ?? null),
|
|
'backupKeepCopies' => $settings['backup_keep_copies'] ?? null,
|
|
'backupStorageLocation' => $this->toInt($settings['backup_storage_location'] ?? null),
|
|
'backupLastRun' => $this->toInt($settings['backup_last_run'] ?? null),
|
|
'backupLastResult' => $settings['backup_last_result'] ?? null,
|
|
'backupLastOutput' => $settings['backup_last_output'] ?? null,
|
|
'setupCompleteTime' => $this->toInt($settings['setup_complete'] ?? null),
|
|
'nowplaying' => $settings['nowplaying'] ?? null,
|
|
'syncNowplayingLastRun' => $this->toInt(
|
|
$settings['nowplaying_last_run'] ?? null
|
|
),
|
|
'syncShortLastRun' => $this->toInt($settings['sync_fast_last_run'] ?? null),
|
|
'syncMediumLastRun' => $this->toInt($settings['sync_last_run'] ?? null),
|
|
'syncLongLastRun' => $this->toInt($settings['sync_slow_last_run'] ?? null),
|
|
'externalIp' => $settings['external_ip'] ?? null,
|
|
'geoliteLicenseKey' => $settings['geolite_license_key'] ?? null,
|
|
'geoliteLastRun' => $this->toInt($settings['geolite_last_run'] ?? null),
|
|
],
|
|
static function ($value) {
|
|
return null !== $value;
|
|
}
|
|
);
|
|
|
|
$this->connection->delete('settings', [1 => 1]);
|
|
|
|
foreach ($newSettings as $settingKey => $settingValue) {
|
|
$this->connection->insert('settings', [
|
|
'setting_key' => $settingKey,
|
|
'setting_value' => json_encode($settingValue, JSON_THROW_ON_ERROR),
|
|
]);
|
|
}
|
|
}
|
|
|
|
private function toInt(mixed $value): ?int
|
|
{
|
|
return (null === $value) ? null : (int)$value;
|
|
}
|
|
|
|
private function toBool(mixed $value): ?bool
|
|
{
|
|
return (null === $value) ? null : (bool)$value;
|
|
}
|
|
|
|
public function up(Schema $schema): void
|
|
{
|
|
$this->addSql('-- "No Query"');
|
|
}
|
|
|
|
public function down(Schema $schema): void
|
|
{
|
|
$this->addSql('-- "No Query"');
|
|
}
|
|
}
|