<?php

namespace onespace\tools\widgets\tinyfilebrowser\lib;

class FMConfig {
    // public array $data;

    function __construct(public array $data) {
        // // $fm_url = $root_url . $_SERVER["PHP_SELF"];
        // $this->data = array(
        //     'lang' => 'en',
        //     'error_reporting' => true,
        //     'show_hidden' => true
        // );
        // $data = $config;
        // // if (strlen($config)) {
        // //     $data = $this->fm_object_to_array(json_decode($config));
        // // } else {
        // //     $msg = 'Tiny File Manager<br>Error: Cannot load configuration';
        // //     if (substr($fm_url, -1) == '/') {
        // //         $fm_url = rtrim($fm_url, '/');
        // //         $msg .= '<br>';
        // //         $msg .= '<br>Seems like you have a trailing slash on the URL.';
        // //         $msg .= '<br>Try this link: <a href="' . $fm_url . '">' . $fm_url . '</a>';
        // //     }
        // //     die($msg);
        // // }
        // if (is_array($data) && count($data)) {
        //     $this->data = $data;
        // } else {
        //     $this->save();
        // }
    }

    private function save() {
        $fm_file = __FILE__;
        $var_name = '$CONFIG';
        $var_value = var_export(json_encode($this->data), true);
        $config_string = "<?php" . chr(13) . chr(10) . "//Default Configuration" . chr(13) . chr(10) . "$var_name = $var_value;" . chr(13) . chr(10);
        if (is_writable($fm_file)) {
            $lines = file($fm_file);
            if ($fh = @fopen($fm_file, "w")) {
                @fputs($fh, $config_string, strlen($config_string));
                for ($x = 3; $x < count($lines); $x++) {
                    @fputs($fh, $lines[$x], strlen($lines[$x]));
                }
                @fclose($fh);
            }
        }
    }

    private function fm_object_to_array($obj) {
        if (!is_object($obj) && !is_array($obj)) {
            return $obj;
        }
        if (is_object($obj)) {
            $obj = get_object_vars($obj);
        }
        return array_map('fm_object_to_array', $obj);
    }
}
