#!/usr/bin/env php
<?php

/**
 * @brief tool to access the system config from the CLI
 *
 * With this script you can access the system configuration of your node from
 * the CLI. You can do both, reading current values stored in the database and
 * set new values to config variables.
 *
 * Usage:
 *   If you specify no parameters at the CLI, the script will list all config
 *   variables defined.
 *
 *   If you specify one parameter, the scipt will list all config variables
 *   defined in this section of the configuration (e.g. "system").
 *
 *   If you specify two parameters, the scipt will show you the current value
 *   of the named configuration setting. (e.g. "system loglevel")
 *
 *   If you specify three parameters, the named configuration setting will be
 *   set to the value of the last parameter. (e.g. "system loglevel 0" will
 *   disable logging)
 **/

use Friendica\Core\Config;

require_once 'boot.php';
require_once 'include/dba.php';
require_once 'include/text.php';
$a = get_app();
require_once '.htconfig.php';

dba::connect($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);

if($argc > 3) {
	Config::set($argv[1],$argv[2],$argv[3]);
	echo "config[{$argv[1]}][{$argv[2]}] = " . Config::get($argv[1],$argv[2]) . "\n";
}

if($argc == 3) {
	echo "config[{$argv[1]}][{$argv[2]}] = " . Config::get($argv[1],$argv[2]) . "\n";
}

if($argc == 2) {
	Config::load($argv[1]);
	if (!is_null($a->config[$argv[1]])) {
		foreach($a->config[$argv[1]] as $k => $x) {
			echo "config[{$argv[1]}][{$k}] = " . $x . "\n";
		}
	} else {
		echo "config section '$argv[1]' returned nothing.\n";
	}
}

if($argc == 1) {
	$r = q("select * from config where 1");
	if($r) {
		foreach($r as $rr) {
			echo "config[{$rr['cat']}][{$rr['k']}] = " . $rr['v'] . "\n";
		}
	}
}

