1
0
Fork 0
mirror of https://gitnet.fr/deblan/side_menu.git synced 2025-12-17 21:02:25 +01:00
side_menu/bin/import_config.php
Simon Vieille 73b21039b9
rewrite of the script to import config
allow mysql and sqlite
2024-07-10 19:29:51 +02:00

78 lines
1.7 KiB
PHP

<?php
function showUsageAndExit(int $code)
{
global $argv;
echo "${argv[0]} [--help] --config /path/to/config/config.php --file /path/to/config.json\n";
exit($code);
}
function value(string $shortName, string $longName, array $options, bool $required = true): ?string
{
$value = $options[$shortName] ?? $options[$longName] ?? null;
if (is_array($value)) {
echo "To much --{$longName}\n";
showUsageAndExit(1);
}
if (empty($value) && $required) {
echo "--{$longName} is missing\n";
showUsageAndExit(1);
}
return $value;
}
$options = getopt('t:f:c:h', [
'type:',
'file:',
'config:',
'help',
]);
$help = value('h', 'help', $options, false);
$config = value('c', 'config', $options);
$file = value('f', 'file', $options);
if (!is_readable($config) && !is_file($config)) {
echo "No such file: {$config}\n";
exit(1);
}
if (!is_readable($file) && !is_file($file)) {
echo "No such file: {$file}\n";
exit(1);
}
$appConfig = json_decode(file_get_contents($file), true);
require $config;
if ('mysql' === $CONFIG['dbtype']) {
$pdo = new \PDO(
'mysql:host='.$CONFIG['dbhost'].';dbname='.$CONFIG['dbname'],
$CONFIG['dbuser'],
$CONFIG['dbpassword']
);
} elseif ($CONFIG['dbtype']) {
$pdo = new \PDO(sprintf('sqlite:%s', $CONFIG['datadirectory'].'/owncloud.db'));
} else {
echo "dbtype is not valid\n";
exit(1);
}
$stmt = $pdo->prepare('UPDATE '.$CONFIG['dbtableprefix'].'appconfig SET configvalue=:value WHERE configkey=:key and appid=:appId');
foreach ($appConfig as $key => $value) {
$stmt->execute([
'appId' => 'side_menu',
'key' => $key,
'value' => $value,
]);
}