/** * @param $name * @param array $params */ public static function parse($template_name, $params = array()) { if (is_array($GLOBALS)) { extract($GLOBALS); } if (is_array($params)) { extract($params); } $session = Mvc::getSession(); $request = Mvc::getRequest(); $response = Mvc::getResponse(); $config = Mvc::getConfig(); $router = Mvc::getRouter(); $dispatcher = Mvc::getDispatcher(); foreach ($params as $varname => $value) { $response->setData($varname, $value); } unset($varname, $value, $params); foreach (array(LP_APP_DIRECTORY, LP_DEFAULT_APP_DIRECTORY, LP_ROOT_DIRECTORY) as $_dir) { $template_path = "{$_dir}/templates/{$template_name}.php"; if (is_file($template_path)) { // Execute the template require $template_path; return; } } throw new \Exception("Template not found: /templates/{$template_name}.php"); }
public static function init() { Event::register('content', function ($content) { // Var assignation $content = preg_replace_callback('/{{var ([^=}]*)=([^}]*)}}/', function ($M) { $varname = trim($M[1]); $value = trim($M[2]); if (substr($value, 0, 3) == '~~~') { $value = I18n::getSingleton()->translate(substr($value, 3)); } Mvc::getResponse()->setData($varname, $value); return ''; }, $content); // Var echo $content = preg_replace_callback('/{{var ([^}]*)}}/', function ($M) { return Mvc::getResponse()->getData(trim($M[1])); }, $content); // Translate $content = preg_replace_callback('/{{~~~([^}]*)}}/', function ($M) { return I18n::getSingleton()->translate(trim($M[1])); }, $content); // Asset URL $content = preg_replace_callback('/{{asset ([^}]*)}}/', function ($M) { return asset(ltrim(trim($M[1]), '/')); }, $content); // Page URL helper $content = preg_replace_callback('/{{url[ ]?([^}]*)}}/', function ($M) { return page_url(trim($M[1])); }, $content); // Template include $content = preg_replace_callback('/{{template ([^}]*)}}/', function ($M) { ob_start(); template(trim($M[1])); return Event::filter('content', ob_get_clean()); }, $content); // {{header Content-Type: text/plain}} $content = preg_replace_callback('/{{header ([^}]*)}}/', function ($M) { if (preg_match('/^([^:]*): (.*)$/', trim($M[1]), $L)) { Mvc::getResponse()->addHeader(trim($L[1]), trim($L[2])); } return ''; }, $content); // {{redirect template/name}} $content = preg_replace_callback('/{{redirect ([^}]*)}}/', function ($M) { Mvc::getResponse()->redirect(page_url(trim($M[1]))); return ''; }, $content); return $content; }); }