sdsfd
This commit is contained in:
@@ -201,17 +201,20 @@ namespace ModulesCore {
|
|||||||
$configPath = $this->modulePath($moduleName) . '/config/module.php';
|
$configPath = $this->modulePath($moduleName) . '/config/module.php';
|
||||||
$config = is_file($configPath) ? require $configPath : [];
|
$config = is_file($configPath) ? require $configPath : [];
|
||||||
$defaults = is_array($config) ? $config : [];
|
$defaults = is_array($config) ? $config : [];
|
||||||
|
$legacyDbSettings = $this->legacyDbSettings($moduleName);
|
||||||
|
|
||||||
$storedSettingsPath = $this->storedSettingsPath($moduleName);
|
$storedSettingsPath = $this->storedSettingsPath($moduleName);
|
||||||
if (!is_file($storedSettingsPath)) {
|
if (!is_file($storedSettingsPath)) {
|
||||||
return $this->settingsCache[$moduleName] = $defaults;
|
return $this->settingsCache[$moduleName] = $this->mergeSettings($defaults, $legacyDbSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
$raw = file_get_contents($storedSettingsPath);
|
$raw = file_get_contents($storedSettingsPath);
|
||||||
$stored = is_string($raw) && trim($raw) !== '' ? json_decode($raw, true) : [];
|
$stored = is_string($raw) && trim($raw) !== '' ? json_decode($raw, true) : [];
|
||||||
|
|
||||||
|
$merged = $this->mergeSettings($defaults, $legacyDbSettings);
|
||||||
|
|
||||||
return $this->settingsCache[$moduleName] = $this->mergeSettings(
|
return $this->settingsCache[$moduleName] = $this->mergeSettings(
|
||||||
$defaults,
|
$merged,
|
||||||
is_array($stored) ? $stored : []
|
is_array($stored) ? $stored : []
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -327,6 +330,35 @@ namespace ModulesCore {
|
|||||||
return $this->projectRoot . '/data/module-settings/' . trim($moduleName, '/') . '.json';
|
return $this->projectRoot . '/data/module-settings/' . trim($moduleName, '/') . '.json';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
private function legacyDbSettings(string $moduleName): array
|
||||||
|
{
|
||||||
|
$pdo = LegacyCompat::app()->basePdo();
|
||||||
|
if (!$pdo instanceof \PDO) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$stmt = $pdo->prepare(
|
||||||
|
'SELECT settings FROM nexus_module_settings WHERE name = :name LIMIT 1'
|
||||||
|
);
|
||||||
|
$stmt->execute(['name' => $moduleName]);
|
||||||
|
$row = $stmt->fetch(\PDO::FETCH_ASSOC);
|
||||||
|
} catch (\Throwable) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_array($row) || empty($row['settings'])) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$decoded = json_decode((string) $row['settings'], true);
|
||||||
|
|
||||||
|
return is_array($decoded) ? $decoded : [];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array<string, mixed> $defaults
|
* @param array<string, mixed> $defaults
|
||||||
* @param array<string, mixed> $stored
|
* @param array<string, mixed> $stored
|
||||||
|
|||||||
Reference in New Issue
Block a user