You are here

function Smarty::_parse_resource_name in Quiz 6.5

Same name and namespace in other branches
  1. 6.6 includes/moodle/lib/smarty/Smarty.class.php \Smarty::_parse_resource_name()

parse out the type and name from the resource

Parameters

string $resource_base_path:

string $resource_name:

string $resource_type:

Return value

boolean

1 call to Smarty::_parse_resource_name()
Smarty::_fetch_resource_info in includes/moodle/lib/smarty/Smarty.class.php
fetch the template info. Gets timestamp, and source if get_source is true

File

includes/moodle/lib/smarty/Smarty.class.php, line 1609

Class

Smarty
@package Smarty

Code

function _parse_resource_name(&$params) {

  // split tpl_path by the first colon
  $_resource_name_parts = explode(':', $params['resource_name'], 2);
  if (count($_resource_name_parts) == 1) {

    // no resource type given
    $params['resource_type'] = $this->default_resource_type;
    $params['resource_name'] = $_resource_name_parts[0];
  }
  else {
    if (strlen($_resource_name_parts[0]) == 1) {

      // 1 char is not resource type, but part of filepath
      $params['resource_type'] = $this->default_resource_type;
      $params['resource_name'] = $params['resource_name'];
    }
    else {
      $params['resource_type'] = $_resource_name_parts[0];
      $params['resource_name'] = $_resource_name_parts[1];
    }
  }
  if ($params['resource_type'] == 'file') {
    if (!preg_match('/^([\\/\\\\]|[a-zA-Z]:[\\/\\\\])/', $params['resource_name'])) {

      // relative pathname to $params['resource_base_path']
      // use the first directory where the file is found
      foreach ((array) $params['resource_base_path'] as $_curr_path) {
        $_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name'];
        if (file_exists($_fullpath) && is_file($_fullpath)) {
          $params['resource_name'] = $_fullpath;
          return true;
        }

        // didn't find the file, try include_path
        $_params = array(
          'file_path' => $_fullpath,
        );
        require_once SMARTY_CORE_DIR . 'core.get_include_path.php';
        if (smarty_core_get_include_path($_params, $this)) {
          $params['resource_name'] = $_params['new_file_path'];
          return true;
        }
      }
      return false;
    }
    else {

      /* absolute path */
      return file_exists($params['resource_name']);
    }
  }
  elseif (empty($this->_plugins['resource'][$params['resource_type']])) {
    $_params = array(
      'type' => $params['resource_type'],
    );
    require_once SMARTY_CORE_DIR . 'core.load_resource_plugin.php';
    smarty_core_load_resource_plugin($_params, $this);
  }
  return true;
}