90 lines
2.4 KiB
PHP
90 lines
2.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Class ConfigPhp (ConfigIO implementation)
|
|
*
|
|
* Handle Shaarli's legacy PHP configuration file.
|
|
* Note: this is only designed to support the transition to JSON configuration.
|
|
*/
|
|
class ConfigPhp implements ConfigIO
|
|
{
|
|
/**
|
|
* @var array List of config key without group.
|
|
*/
|
|
public static $ROOT_KEYS = array(
|
|
'login',
|
|
'hash',
|
|
'salt',
|
|
'timezone',
|
|
'title',
|
|
'titleLink',
|
|
'redirector',
|
|
'disablesessionprotection',
|
|
'privateLinkByDefault',
|
|
);
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
function read($filepath)
|
|
{
|
|
if (! file_exists($filepath) || ! is_readable($filepath)) {
|
|
return array();
|
|
}
|
|
|
|
include $filepath;
|
|
|
|
$out = array();
|
|
foreach (self::$ROOT_KEYS as $key) {
|
|
$out[$key] = $GLOBALS[$key];
|
|
}
|
|
$out['config'] = $GLOBALS['config'];
|
|
$out['plugins'] = !empty($GLOBALS['plugins']) ? $GLOBALS['plugins'] : array();
|
|
return $out;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
function write($filepath, $conf)
|
|
{
|
|
$configStr = '<?php '. PHP_EOL;
|
|
foreach (self::$ROOT_KEYS as $key) {
|
|
if (isset($conf[$key])) {
|
|
$configStr .= '$GLOBALS[\'' . $key . '\'] = ' . var_export($conf[$key], true) . ';' . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
// Store all $conf['config']
|
|
foreach ($conf['config'] as $key => $value) {
|
|
$configStr .= '$GLOBALS[\'config\'][\''. $key .'\'] = '.var_export($conf['config'][$key], true).';'. PHP_EOL;
|
|
}
|
|
|
|
if (isset($conf['plugins'])) {
|
|
foreach ($conf['plugins'] as $key => $value) {
|
|
$configStr .= '$GLOBALS[\'plugins\'][\''. $key .'\'] = '.var_export($conf['plugins'][$key], true).';'. PHP_EOL;
|
|
}
|
|
}
|
|
|
|
// FIXME!
|
|
//$configStr .= 'date_default_timezone_set('.var_export($conf['timezone'], true).');'. PHP_EOL;
|
|
|
|
if (!file_put_contents($filepath, $configStr)
|
|
|| strcmp(file_get_contents($filepath), $configStr) != 0
|
|
) {
|
|
throw new IOException(
|
|
$filepath,
|
|
'Shaarli could not create the config file.
|
|
Please make sure Shaarli has the right to write in the folder is it installed in.'
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
function getExtension()
|
|
{
|
|
return '.php';
|
|
}
|
|
}
|