<?php
/**
 * Command Controller
 */
Class CommandController extends Controller {

    public function actionIndex() {
        $commands = <<<eof
Actions:
    - test

Usage:
    php command.php action parameters


eof;
        echo $commands;
        exit;
    }

    public function actionConfig() {
        $themeName = FSC::$app['config']['theme'];

        $code = 1;
        $data = '';

        //修改配置文件
        $param_do = $this->get('do', 'set');    //支持:set, get, all, del
        $param_key = $this->get('key', '');
        $param_value = $this->get('val', '');

        if ($param_do == 'set' && empty($param_value)) {
            throw new Exception("缺少val参数!", 403);
        }else if (in_array($param_do, array('set', 'get', 'del')) && empty($param_key)) {
            throw new Exception("缺少key参数!", 403);
        }

        //val数据格式转换
        if ($param_value === 'false') {
            $param_value = false;
        }else if ($param_value === 'true') {
            $param_value = true;
        }

        $config_file = __DIR__ . "/../runtime/custom_config.json";
        if (file_exists($config_file)) {
            $content = file_get_contents($config_file);
            $configs = @json_decode($content, true);
            if (empty($configs)) {
                $config_file_template = __DIR__ . "/../conf/custom_config_{$themeName}.json";
                $content = file_get_contents($config_file_template);
                $configs = @json_decode($content, true);
            }
        }

        if (!empty($configs)) {
            switch($param_do) {
                case 'set':
                    $configs[$param_key] = $param_value;
                    file_put_contents($config_file, json_encode($configs, JSON_PRETTY_PRINT));
                    $data = $configs;
                    break;

                case 'get':
                    $data = !empty($configs[$param_key]) ? $configs[$param_key] : '';
                    break;

                case 'del':
                    unset($configs[$param_key]);
                    file_put_contents($config_file, json_encode($configs, JSON_PRETTY_PRINT));
                    $data = $configs;
                    break;

                case 'all':
                default:
                    $data = $configs;
                    break;
            }
        }


        $res = compact('code', 'data');

        echo "命令参数:\n";
        print_r($this->get());
        echo "\n";
        echo "命令执行结果:\n";
        print_r($res);
        echo "\n\n";
        exit;
    }

    public function actionTest() {
        echo "## App variables:\n";
        print_r(FSC::$app);
        echo "\n";

        echo "## GET parameters:\n";        
        print_r($this->get());
        echo "\n";

        exit;
    }

}