You are here

function smarty_core_get_php_resource in Quiz 6.5

Same name and namespace in other branches
  1. 6.6 includes/moodle/lib/smarty/core/core.get_php_resource.php \smarty_core_get_php_resource()

Retrieves PHP script resource

sets $php_resource to the returned resource

_type

Parameters

string $resource:

$php_resource:

Return value

boolean

3 calls to smarty_core_get_php_resource()
smarty_core_process_cached_inserts in includes/moodle/lib/smarty/core/core.process_cached_inserts.php
Replace cached inserts with the actual results
smarty_core_run_insert_handler in includes/moodle/lib/smarty/core/core.run_insert_handler.php
Handle insert tags
smarty_core_smarty_include_php in includes/moodle/lib/smarty/core/core.smarty_include_php.php

File

includes/moodle/lib/smarty/core/core.get_php_resource.php, line 18

Code

function smarty_core_get_php_resource(&$params, &$smarty) {
  $params['resource_base_path'] = $smarty->trusted_dir;
  $smarty
    ->_parse_resource_name($params, $smarty);

  /*
   * Find out if the resource exists.
   */
  if ($params['resource_type'] == 'file') {
    $_readable = false;
    if (file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
      $_readable = true;
    }
    else {

      // test for file in include_path
      $_params = array(
        'file_path' => $params['resource_name'],
      );
      require_once SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php';
      if (smarty_core_get_include_path($_params, $smarty)) {
        $_include_path = $_params['new_file_path'];
        $_readable = true;
      }
    }
  }
  else {
    if ($params['resource_type'] != 'file') {
      $_template_source = null;
      $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0]) && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0], array(
        $params['resource_name'],
        &$_template_source,
        &$smarty,
      ));
    }
  }

  /*
   * Set the error function, depending on which class calls us.
   */
  if (method_exists($smarty, '_syntax_error')) {
    $_error_funcc = '_syntax_error';
  }
  else {
    $_error_funcc = 'trigger_error';
  }
  if ($_readable) {
    if ($smarty->security) {
      require_once SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_trusted.php';
      if (!smarty_core_is_trusted($params, $smarty)) {
        $smarty
          ->{$_error_funcc}('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
        return false;
      }
    }
  }
  else {
    $smarty
      ->{$_error_funcc}($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
    return false;
  }
  if ($params['resource_type'] == 'file') {
    $params['php_resource'] = $params['resource_name'];
  }
  else {
    $params['php_resource'] = $_template_source;
  }
  return true;
}