You are here

function smarty_core_write_compiled_include in Quiz 6.6

Same name and namespace in other branches
  1. 6.5 includes/moodle/lib/smarty/core/core.write_compiled_include.php \smarty_core_write_compiled_include()

Extract non-cacheable parts out of compiled template and write it

Parameters

string $compile_path:

string $template_compiled:

integer $template_timestamp:

Return value

boolean

1 call to smarty_core_write_compiled_include()
Smarty::_compile_resource in includes/moodle/lib/smarty/Smarty.class.php
compile the template

File

includes/moodle/lib/smarty/core/core.write_compiled_include.php, line 17

Code

function smarty_core_write_compiled_include($params, &$smarty) {
  $_tag_start = 'if \\(\\$this->caching\\) \\{ echo \'\\{nocache\\:(' . $params['cache_serial'] . ')#(\\d+)\\}\';\\}';
  $_tag_end = 'if \\(\\$this->caching\\) \\{ echo \'\\{/nocache\\:(\\2)#(\\3)\\}\';\\}';
  preg_match_all('!(' . $_tag_start . '(.*)' . $_tag_end . ')!Us', $params['compiled_content'], $_match_source, PREG_SET_ORDER);

  // no nocache-parts found: done
  if (count($_match_source) == 0) {
    return;
  }

  // convert the matched php-code to functions
  $_include_compiled = "<?php /* funky header here */\n\n";
  $_compile_path = $params['include_file_path'];
  $smarty->_cache_serials[$_compile_path] = $params['cache_serial'];
  $_include_compiled .= "\$this->_cache_serials['" . $_compile_path . "'] = '" . $params['cache_serial'] . "';\n\n?>";
  $_include_compiled .= $params['plugins_code'];
  $_include_compiled .= "<?php";
  for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) {
    $_match =& $_match_source[$_i];
    $_include_compiled .= "\nfunction _smarty_tplfunc_{$_match[2]}_{$_match[3]}(&\$this)\n{\n{$_match[4]}\n}\n\n";
  }
  $_include_compiled .= "\n\n?>\n";
  $_params = array(
    'filename' => $_compile_path,
    'contents' => $_include_compiled,
    'create_dirs' => true,
  );
  require_once SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php';
  smarty_core_write_file($_params, $smarty);
  return true;
}