/**
* Compile function.
* @api
* @param array $filenames
* @param array $data
* @param bool $expires
* @param string $cache_mode
* @param bool $via_render
* @return bool|string
*/
public static function compile($filenames, $data = array(), $expires = false, $cache_mode = Loader::CACHE_USE_DEFAULT, $via_render = false)
{
if (!defined('TIMBER_LOADED')) {
self::init();
}
$caller = LocationManager::get_calling_script_dir(1);
$loader = new Loader($caller);
$file = $loader->choose_template($filenames);
$caller_file = LocationManager::get_calling_script_file(1);
apply_filters('timber/calling_php_file', $caller_file);
$output = '';
if (is_null($data)) {
$data = array();
}
if (strlen($file)) {
if ($via_render) {
$file = apply_filters('timber_render_file', $file);
$data = apply_filters('timber_render_data', $data);
} else {
$file = apply_filters('timber_compile_file', $file);
$data = apply_filters('timber_compile_data', $data);
}
$output = $loader->render($file, $data, $expires, $cache_mode);
}
do_action('timber_compile_done');
return $output;
}