<?php
namespace Shared\Tpl;

class Tpl
{
  protected $vars = array();

  public static function view($file, $values = '')
  {
    $tpl = new self;
    if (is_array($values)) foreach ($values as $key => $val)
      $tpl->$key = $val;
    return $tpl->render($file);
  }

  public function secureHTML($val)
  {
    $out = stripslashes($val);
    $out = str_replace("'", "&#039;", $out);
    $out = str_replace('"', "&#34;", $out);
    $out = str_replace("<", "&lt;", $out);
    $out = str_replace(">", "&gt;", $out);
    return $out;
  }

  public function render($file)
  {
    $paths = [
      'templates_user/' . $file . '.php',
      'templates/' . $file . '.php',
      '../templates_user/' . $file . '.php',
      '../templates/' . $file . '.php',
      $file . '.php',
    ];

    foreach ($paths as $path) {
      if (file_exists($path)) {
        return $this->renderFile($path);
      }
    }

    return '<div class="alert alert-danger" role="alert">Nie znaleziono pliku widoku: <b>' . $file . '.php</b>';
  }

  private function renderFile($path)
  {
    ob_start();
    include $path;
    $out = ob_get_contents();
    ob_end_clean();
    return $out;
  }

  public function __set($name, $value)
  {
    $this->vars[$name] = $value;
  }

  public function __get($name)
  {
    return $this->vars[$name];
  }
}
