implemented INI cenversion functionality

This commit is contained in:
El RIDO 2017-10-04 21:55:03 +02:00
parent b60d55236e
commit 6e8eafe129
No known key found for this signature in database
GPG key ID: 0F5C940A6BD81F92
3 changed files with 46 additions and 3 deletions

View file

@ -101,6 +101,33 @@ class Configuration
{
$config = array();
$configFile = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.php';
$configIni = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini';
// rename INI files to avoid configuration leakage
if (is_readable($configIni)) {
// don't overwrite already converted file
if (!is_file($configFile)) {
$iniUpgradeError = false;
$context = stream_context_create();
$iniHandle = fopen($configIni, 'r', 1, $context);
$written = file_put_contents($configFile, ';<?php /*' . PHP_EOL);
$written = file_put_contents($configFile, $iniHandle, FILE_APPEND);
fclose($iniHandle);
unlink($configIni);
}
// cleanup sample, too
$configSample = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.sample.php';
$configIniSample = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini.sample';
if (is_readable($configIniSample)) {
if (is_readable($configSample)) {
unlink($configIniSample);
} else {
rename($configIniSample, $configSample);
}
}
}
if (is_readable($configFile)) {
$config = parse_ini_file($configFile, true);
foreach (array('main', 'model', 'model_options') as $section) {
@ -109,6 +136,7 @@ class Configuration
}
}
}
$opts = '_options';
foreach (self::getDefaults() as $section => $values) {
// fill missing sections with default values

View file

@ -693,9 +693,8 @@ class Database extends AbstractData
'CREATE INDEX IF NOT EXISTS comment_parent ON ' .
self::_sanitizeIdentifier('comment') . '(pasteid);'
);
// no break, continue with updates for 0.22
case '0.22':
case '1.0':
// no break, continue with updates for 0.22 and later
default:
self::_exec(
'UPDATE ' . self::_sanitizeIdentifier('config') .
' SET value = ? WHERE id = ?',

View file

@ -157,4 +157,20 @@ class ConfigurationTest extends PHPUnit_Framework_TestCase
'configuration values get converted'
);
}
public function testRenameIniSample()
{
$iniSample = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini.sample';
$phpSample = PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.sample.php';
Helper::createIniFile(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini', $this->_options);
if (is_file(CONF)) {
chmod(CONF, 0600);
unlink(CONF);
}
rename($phpSample, $iniSample);
new Configuration;
$this->assertFileNotExists($iniSample, 'old sample file gets removed');
$this->assertFileExists($phpSample, 'new sample file gets created');
}
}