aboutsummaryrefslogtreecommitdiffhomepage
path: root/application/config/ConfigPhp.php
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2016-05-18 21:43:59 +0200
committerArthurHoaro <arthur@hoa.ro>2016-06-11 09:30:56 +0200
commit59404d7909b21682ec0782778452a8a70e38b25e (patch)
tree52bbe0b390ecd37f80128d1f8b4f80c3834734a8 /application/config/ConfigPhp.php
parent823a363c3b2e10008a607c8b69c1a3d4e9b44ea1 (diff)
downloadShaarli-59404d7909b21682ec0782778452a8a70e38b25e.tar.gz
Shaarli-59404d7909b21682ec0782778452a8a70e38b25e.tar.zst
Shaarli-59404d7909b21682ec0782778452a8a70e38b25e.zip
Introduce a configuration manager (not plugged yet)
Diffstat (limited to 'application/config/ConfigPhp.php')
-rw-r--r--application/config/ConfigPhp.php93
1 files changed, 93 insertions, 0 deletions
diff --git a/application/config/ConfigPhp.php b/application/config/ConfigPhp.php
new file mode 100644
index 00000000..311aeb81
--- /dev/null
+++ b/application/config/ConfigPhp.php
@@ -0,0 +1,93 @@
1<?php
2
3/**
4 * Class ConfigPhp (ConfigIO implementation)
5 *
6 * Handle Shaarli's legacy PHP configuration file.
7 * Note: this is only designed to support the transition to JSON configuration.
8 */
9class ConfigPhp implements ConfigIO
10{
11 /**
12 * @var array List of config key without group.
13 */
14 public static $ROOT_KEYS = array(
15 'login',
16 'hash',
17 'salt',
18 'timezone',
19 'title',
20 'titleLink',
21 'redirector',
22 'disablesessionprotection',
23 'privateLinkByDefault',
24 );
25
26 /**
27 * @inheritdoc
28 */
29 function read($filepath)
30 {
31 $filepath .= $this->getExtension();
32 if (! file_exists($filepath) || ! is_readable($filepath)) {
33 return array();
34 }
35
36 include $filepath;
37
38 $out = array();
39 foreach (self::$ROOT_KEYS as $key) {
40 $out[$key] = $GLOBALS[$key];
41 }
42 $out['config'] = $GLOBALS['config'];
43 $out['plugins'] = !empty($GLOBALS['plugins']) ? $GLOBALS['plugins'] : array();
44 return $out;
45 }
46
47 /**
48 * @inheritdoc
49 */
50 function write($filepath, $conf)
51 {
52 $filepath .= $this->getExtension();
53
54 $configStr = '<?php '. PHP_EOL;
55 foreach (self::$ROOT_KEYS as $key) {
56 if (isset($conf[$key])) {
57 $configStr .= '$GLOBALS[\'' . $key . '\'] = ' . var_export($conf[$key], true) . ';' . PHP_EOL;
58 }
59 }
60
61 // Store all $conf['config']
62 foreach ($conf['config'] as $key => $value) {
63 $configStr .= '$GLOBALS[\'config\'][\''. $key .'\'] = '.var_export($conf['config'][$key], true).';'. PHP_EOL;
64 }
65
66 if (isset($conf['plugins'])) {
67 foreach ($conf['plugins'] as $key => $value) {
68 $configStr .= '$GLOBALS[\'plugins\'][\''. $key .'\'] = '.var_export($conf['plugins'][$key], true).';'. PHP_EOL;
69 }
70 }
71
72 // FIXME!
73 //$configStr .= 'date_default_timezone_set('.var_export($conf['timezone'], true).');'. PHP_EOL;
74
75 if (!file_put_contents($filepath, $configStr)
76 || strcmp(file_get_contents($filepath), $configStr) != 0
77 ) {
78 throw new IOException(
79 $filepath,
80 'Shaarli could not create the config file.
81 Please make sure Shaarli has the right to write in the folder is it installed in.'
82 );
83 }
84 }
85
86 /**
87 * @inheritdoc
88 */
89 function getExtension()
90 {
91 return '.php';
92 }
93}