function Smarty::fetch in Quiz 6.6
Same name and namespace in other branches
- 6.5 includes/moodle/lib/smarty/Smarty.class.php \Smarty::fetch()
executes & returns or displays the template results
Parameters
string $resource_name:
string $cache_id:
string $compile_id:
boolean $display:
1 call to Smarty::fetch()
- Smarty::display in includes/
moodle/ lib/ smarty/ Smarty.class.php - executes & displays the template results
File
- includes/
moodle/ lib/ smarty/ Smarty.class.php, line 1111
Class
- Smarty
- @package Smarty
Code
function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false) {
static $_cache_info = array();
$_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting) ? $this->error_reporting : error_reporting() & ~E_NOTICE);
if (!$this->debugging && $this->debugging_ctrl == 'URL') {
$_query_string = $this->request_use_auto_globals ? $_SERVER['QUERY_STRING'] : $GLOBALS['HTTP_SERVER_VARS']['QUERY_STRING'];
if (@strstr($_query_string, $this->_smarty_debug_id)) {
if (@strstr($_query_string, $this->_smarty_debug_id . '=on')) {
// enable debugging for this browser session
@setcookie('SMARTY_DEBUG', true);
$this->debugging = true;
}
elseif (@strstr($_query_string, $this->_smarty_debug_id . '=off')) {
// disable debugging for this browser session
@setcookie('SMARTY_DEBUG', false);
$this->debugging = false;
}
else {
// enable debugging for this page
$this->debugging = true;
}
}
else {
$this->debugging = (bool) ($this->request_use_auto_globals ? @$_COOKIE['SMARTY_DEBUG'] : @$GLOBALS['HTTP_COOKIE_VARS']['SMARTY_DEBUG']);
}
}
if ($this->debugging) {
// capture time for debugging info
$_params = array();
require_once SMARTY_CORE_DIR . 'core.get_microtime.php';
$_debug_start_time = smarty_core_get_microtime($_params, $this);
$this->_smarty_debug_info[] = array(
'type' => 'template',
'filename' => $resource_name,
'depth' => 0,
);
$_included_tpls_idx = count($this->_smarty_debug_info) - 1;
}
if (!isset($compile_id)) {
$compile_id = $this->compile_id;
}
$this->_compile_id = $compile_id;
$this->_inclusion_depth = 0;
if ($this->caching) {
// save old cache_info, initialize cache_info
array_push($_cache_info, $this->_cache_info);
$this->_cache_info = array();
$_params = array(
'tpl_file' => $resource_name,
'cache_id' => $cache_id,
'compile_id' => $compile_id,
'results' => null,
);
require_once SMARTY_CORE_DIR . 'core.read_cache_file.php';
if (smarty_core_read_cache_file($_params, $this)) {
$_smarty_results = $_params['results'];
if (!empty($this->_cache_info['insert_tags'])) {
$_params = array(
'plugins' => $this->_cache_info['insert_tags'],
);
require_once SMARTY_CORE_DIR . 'core.load_plugins.php';
smarty_core_load_plugins($_params, $this);
$_params = array(
'results' => $_smarty_results,
);
require_once SMARTY_CORE_DIR . 'core.process_cached_inserts.php';
$_smarty_results = smarty_core_process_cached_inserts($_params, $this);
}
if (!empty($this->_cache_info['cache_serials'])) {
$_params = array(
'results' => $_smarty_results,
);
require_once SMARTY_CORE_DIR . 'core.process_compiled_include.php';
$_smarty_results = smarty_core_process_compiled_include($_params, $this);
}
if ($display) {
if ($this->debugging) {
// capture time for debugging info
$_params = array();
require_once SMARTY_CORE_DIR . 'core.get_microtime.php';
$this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $_debug_start_time;
require_once SMARTY_CORE_DIR . 'core.display_debug_console.php';
$_smarty_results .= smarty_core_display_debug_console($_params, $this);
}
if ($this->cache_modified_check) {
$_server_vars = $this->request_use_auto_globals ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS'];
$_last_modified_date = @substr($_server_vars['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_server_vars['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
$_gmt_mtime = gmdate('D, d M Y H:i:s', $this->_cache_info['timestamp']) . ' GMT';
if (@count($this->_cache_info['insert_tags']) == 0 && !$this->_cache_serials && $_gmt_mtime == $_last_modified_date) {
if (php_sapi_name() == 'cgi') {
header('Status: 304 Not Modified');
}
else {
header('HTTP/1.1 304 Not Modified');
}
}
else {
header('Last-Modified: ' . $_gmt_mtime);
echo $_smarty_results;
}
}
else {
echo $_smarty_results;
}
error_reporting($_smarty_old_error_level);
// restore initial cache_info
$this->_cache_info = array_pop($_cache_info);
return true;
}
else {
error_reporting($_smarty_old_error_level);
// restore initial cache_info
$this->_cache_info = array_pop($_cache_info);
return $_smarty_results;
}
}
else {
$this->_cache_info['template'][$resource_name] = true;
if ($this->cache_modified_check && $display) {
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
}
}
}
// load filters that are marked as autoload
if (count($this->autoload_filters)) {
foreach ($this->autoload_filters as $_filter_type => $_filters) {
foreach ($_filters as $_filter) {
$this
->load_filter($_filter_type, $_filter);
}
}
}
$_smarty_compile_path = $this
->_get_compile_path($resource_name);
// if we just need to display the results, don't perform output
// buffering - for speed
$_cache_including = $this->_cache_including;
$this->_cache_including = false;
if ($display && !$this->caching && count($this->_plugins['outputfilter']) == 0) {
if ($this
->_is_compiled($resource_name, $_smarty_compile_path) || $this
->_compile_resource($resource_name, $_smarty_compile_path)) {
include $_smarty_compile_path;
}
}
else {
ob_start();
if ($this
->_is_compiled($resource_name, $_smarty_compile_path) || $this
->_compile_resource($resource_name, $_smarty_compile_path)) {
include $_smarty_compile_path;
}
$_smarty_results = ob_get_contents();
ob_end_clean();
foreach ((array) $this->_plugins['outputfilter'] as $_output_filter) {
$_smarty_results = call_user_func_array($_output_filter[0], array(
$_smarty_results,
&$this,
));
}
}
if ($this->caching) {
$_params = array(
'tpl_file' => $resource_name,
'cache_id' => $cache_id,
'compile_id' => $compile_id,
'results' => $_smarty_results,
);
require_once SMARTY_CORE_DIR . 'core.write_cache_file.php';
smarty_core_write_cache_file($_params, $this);
require_once SMARTY_CORE_DIR . 'core.process_cached_inserts.php';
$_smarty_results = smarty_core_process_cached_inserts($_params, $this);
if ($this->_cache_serials) {
// strip nocache-tags from output
$_smarty_results = preg_replace('!(\\{/?nocache\\:[0-9a-f]{32}#\\d+\\})!s', '', $_smarty_results);
}
// restore initial cache_info
$this->_cache_info = array_pop($_cache_info);
}
$this->_cache_including = $_cache_including;
if ($display) {
if (isset($_smarty_results)) {
echo $_smarty_results;
}
if ($this->debugging) {
// capture time for debugging info
$_params = array();
require_once SMARTY_CORE_DIR . 'core.get_microtime.php';
$this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $_debug_start_time;
require_once SMARTY_CORE_DIR . 'core.display_debug_console.php';
echo smarty_core_display_debug_console($_params, $this);
}
error_reporting($_smarty_old_error_level);
return;
}
else {
error_reporting($_smarty_old_error_level);
if (isset($_smarty_results)) {
return $_smarty_results;
}
}
}