Blame view

libs/SMARTY/internals/core.get_php_resource.php 2.41 KB
42868d70   andryeyev   Создал GIT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  <?php
  /**
   * Smarty plugin
   * @package Smarty
   * @subpackage plugins
   */
  
  /**
   * Retrieves PHP script resource
   *
   * sets $php_resource to the returned resource
   * @param string $resource
   * @param string $resource_type
   * @param  $php_resource
   * @return boolean
   */
  
  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_CORE_DIR . '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_CORE_DIR . '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;
  }
  
  /* vim: set expandtab: */
  
  ?>