<?php
use function _\find;
class Settings
{
  private $folks;
  private $tags;
  private $themes = [];
  private static $settings;

  public function __construct()
  {
    //gets all settings files and converts to php objects
    $this->folks = json_decode(file_get_contents("../config/folks.json"), true);
    $this->tags = json_decode(file_get_contents("../config/tags.json"), true);
    self::$settings = json_decode(
      file_get_contents("../config/settings.json"),
      true
    );

    $_themes = glob("../content/themes/*", GLOB_ONLYDIR);
    foreach ($_themes as $theme) {
      array_push(
        $this->themes,
        json_decode(file_get_contents($theme . "/theme.json"), true)
      );
    }
  }

  public static function sync($data)
  {
    $settings = self::$settings;
    $settings["global"]["base_url"] = $data["global"]["base_url"];
    $settings["global"]["title"] = $data["global"]["title"];
    $settings["global"]["descriptions"] = $data["global"]["descriptions"];
    $settings["global"]["base_url"] = $data["global"]["base_url"];
    $settings["global"]["private"] = $data["global"]["private"];
    $settings["global"]["renderOnSave"] = $data["global"]["renderOnSave"];
    $settings["global"]["theme"] = $data["global"]["theme"];

    Member::updateData("handle", $data["member"]["handle"]);
    Member::updateData("email", $data["member"]["email"]);

    $settings["email"]["active"] = $data["email"]["active"];
    $settings["email"]["smtp"] = $data["email"]["smtp"];
    $settings["email"]["mailgun"] = $data["email"]["mailgun"];

    DocTools::writeSettings("../config/settings.json", $settings);
  }

  public function getThemes()
  {
    return $this->themes;
  }

  public function getFolks($key = null)
  {
    if (isset($key)) {
      $member = Session::get("member");
      $found = find($this->folks, ["handle" => $member["handle"]]);
      return $found[$key];
    } else {
      return $this->folks;
    }
  }

  public function getSettings($key = null)
  {
    return self::$settings;
  }

  public static function updateGlobalData($key, $data)
  {
    $settings = self::$settings;
    $settings["global"][$key] = $data;
    DocTools::writeSettings("../config/settings.json", $settings);
  }

  public static function getCurrentIndex()
  {
    $settings = self::$settings;
    return $settings["library_stats"]["current_index"];
  }

  public static function updateIndex()
  {
    $settings = self::$settings;
    $index = $settings["library_stats"]["current_index"];
    $settings["library_stats"]["current_index"] = $index + 1;

    DocTools::writeSettings("../config/settings.json", $settings);
  }
}