<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * MaxSite CMS
 * (c) https://max-3000.com/
 * 
 */

// HTML-шаблонизатор
// вход - текст : выполняет замены, отдает php-код
// если $replace = true то в коде удаляются табуляторы и двойные \n
// полученный код выполнять через eval();
function mso_tmpl_prepare($template, $replace = true)
{
	$template = '?>' . str_replace(['{{', '}}', '{%', '%}'], ['<?=', '?>', '<?php', '?>'], $template);

	if ($replace)
		$template = str_replace(["\t", "\r", "\n\n"], ["", "", "\n"], $template);

	return $template;
}

// HTML-шаблонизатор
// if (file_exists($fn)) eval(mso_tmpl($fn));
function mso_tmpl($fn, $replace = true)
{
	$template = file_get_contents($fn);

	return mso_tmpl_prepare($template, $replace);
}

// HTML-шаблонизатор
// файл относительно шаблона/shared-каталога как в mso_find_ts_file()
// 	eval(mso_tmpl_ts('article-tmpl.php'));
function mso_tmpl_ts($fn, $replace = true)
{
	if ($fn = mso_find_ts_file($fn))
		return mso_tmpl($fn, $replace);
	else
		return '?>';
}

/*
* Функция подключает файл как текст и пропускает его через html-парсер и php-шаблонизатор
* Результат выводится в браузер
* В тексте могут быть замены: [siteurl] [templateurl]
* $fn — файл указывается относительно каталога шаблона
* $parser — имя функции парсера
* $tmpl == true — использовать php-шаблонизатор
* $echo == true — сразу вывод в браузер
*/
function mso_parse_file($file, $parser = 'autotag_simple', $tmpl = false, $echo = true)
{
	if ($fn = mso_fe($file)) {
		ob_start();
		require $fn;
		$t1 = ob_get_contents();
		ob_end_clean();

		// в файле могут быть свои замены
		$t1 = str_replace('[siteurl]', getinfo('siteurl'), $t1);
		$t1 = str_replace('[site_url]', getinfo('siteurl'), $t1);
		$t1 = str_replace('[templateurl]', getinfo('template_url'), $t1);
		$t1 = str_replace('[template_url]', getinfo('template_url'), $t1);

		// парсер текста
		if ($parser and function_exists($parser)) $t1 = $parser($t1);
		
		if ($echo) {
			// php-шаблонизатор
			if ($tmpl)
				eval(mso_tmpl_prepare($t1, false));
			else
				echo $t1;
		} else {
			ob_start();

			if ($tmpl)
				eval(mso_tmpl_prepare($t1, false));
			else
				echo $t1;

			$t2 = ob_get_contents();
			ob_end_clean();

			return $t2;
		}
	}

	return '';
}


# end of file
