Moved .htconfig file
[friendica.git/.git] / src / Core / Console / Config.php
1 <?php
2
3 /*
4  * To change this license header, choose License Headers in Project Properties.
5  * To change this template file, choose Tools | Templates
6  * and open the template in the editor.
7  */
8
9 namespace Friendica\Core\Console;
10
11 use Asika\SimpleConsole\CommandArgsException;
12 use dba;
13 use Friendica\Core;
14
15 require_once 'include/dba.php';
16 require_once 'include/text.php';
17
18 /**
19  * @brief tool to access the system config from the CLI
20  *
21  * With this script you can access the system configuration of your node from
22  * the CLI. You can do both, reading current values stored in the database and
23  * set new values to config variables.
24  *
25  * Usage:
26  *   If you specify no parameters at the CLI, the script will list all config
27  *   variables defined.
28  *
29  *   If you specify one parameter, the script will list all config variables
30  *   defined in this section of the configuration (e.g. "system").
31  *
32  *   If you specify two parameters, the script will show you the current value
33  *   of the named configuration setting. (e.g. "system loglevel")
34  *
35  *   If you specify three parameters, the named configuration setting will be
36  *   set to the value of the last parameter. (e.g. "system loglevel 0" will
37  *   disable logging)
38  *
39  * @author Tobias Diekershoff
40  * @author Hypolite Petovan <mrpetovan@gmail.com>
41  */
42 class Config extends \Asika\SimpleConsole\Console
43 {
44         protected $helpOptions = ['h', 'help', '?'];
45
46         protected function getHelp()
47         {
48                 $help = <<<HELP
49 console config - Manage site configuration
50 Synopsis
51         bin/console config [-h|--help|-?] [-v]
52         bin/console config <category> [-h|--help|-?] [-v]
53         bin/console config <category> <key> [-h|--help|-?] [-v]
54         bin/console config <category> <key> <value> [-h|--help|-?] [-v]
55
56 Description
57         bin/console config
58                 Lists all config values
59
60         bin/console config <category>
61                 Lists all config values in the provided category
62
63         bin/console config <category> <key>
64                 Shows the value of the provided key in the category
65
66         bin/console config <category> <key> <value>
67                 Sets the value of the provided key in the category
68
69 Notes:
70         Setting config entries which are manually set in .htconfig.php may result in
71         conflict between database settings and the manual startup settings.
72
73 Options
74     -h|--help|-? Show help information
75     -v           Show more debug information.
76 HELP;
77                 return $help;
78         }
79
80         protected function doExecute()
81         {
82                 $a = get_app();
83
84                 if ($this->getOption('v')) {
85                         $this->out('Executable: ' . $this->executable);
86                         $this->out('Class: ' . __CLASS__);
87                         $this->out('Arguments: ' . var_export($this->args, true));
88                         $this->out('Options: ' . var_export($this->options, true));
89                 }
90
91                 if (count($this->args) > 3) {
92                         throw new CommandArgsException('Too many arguments');
93                 }
94
95                 require_once 'config/.htconfig.php';
96                 $result = dba::connect($db_host, $db_user, $db_pass, $db_data);
97                 unset($db_host, $db_user, $db_pass, $db_data);
98
99                 if (!$result) {
100                         throw new \RuntimeException('Unable to connect to database');
101                 }
102
103                 if (count($this->args) == 3) {
104                         Core\Config::set($this->getArgument(0), $this->getArgument(1), $this->getArgument(2));
105                         $this->out("config[{$this->getArgument(0)}][{$this->getArgument(1)}] = " . Core\Config::get($this->getArgument(0),
106                                         $this->getArgument(1)));
107                 }
108
109                 if (count($this->args) == 2) {
110                         $this->out("config[{$this->getArgument(0)}][{$this->getArgument(1)}] = " . Core\Config::get($this->getArgument(0),
111                                         $this->getArgument(1)));
112                 }
113
114                 if (count($this->args) == 1) {
115                         Core\Config::load($this->getArgument(0));
116
117                         $a = get_app();
118                         if (!is_null($a->config[$this->getArgument(0)])) {
119                                 foreach ($a->config[$this->getArgument(0)] as $k => $x) {
120                                         $this->out("config[{$this->getArgument(0)}][{$k}] = " . $x);
121                                 }
122                         } else {
123                                 $this->out('Config section ' . $this->getArgument(0) . ' returned nothing');
124                         }
125                 }
126
127                 if (count($this->args) == 0) {
128                         $configs = dba::select('config');
129                         foreach ($configs as $config) {
130                                 $this->out("config[{$config['cat']}][{$config['k']}] = " . $config['v']);
131                         }
132                 }
133
134                 return 0;
135         }
136
137 }