⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smarty.class.php

📁 通达OA2007SE源代码 非常好的
💻 PHP
📖 第 1 页 / 共 3 页
字号:
          }
        }
      }
      if (!empty ($section))
      {
        $this->_config[0]['vars'] = array_merge ($this->_config[0]['vars'], $this->_conf_obj->get ($file, $section));
        if (($scope == 'parent'))
        {
          if ((0 < count ($this->_config)))
          {
            $this->_config[1]['vars'] = array_merge ($this->_config[1]['vars'], $this->_conf_obj->get ($file, $section));
          }
        }
        else
        {
          if (($scope == 'global'))
          {
            for ($i = 1; ($i < count ($this->_config)); ++$i)
            {
              $this->_config[$i]['vars'] = array_merge ($this->_config[$i]['vars'], $this->_conf_obj->get ($file, $section));
            }
          }
        }
      }
      if ($this->debugging)
      {
        $debug_start_time = $this->_get_microtime ();
        $this->_smarty_debug_info[] = array ('type' => 'config', 'filename' => (((($file.' [').$section).'] ').$scope), 'depth' => $this->_inclusion_depth, 'exec_time' => ($this->_get_microtime () - $debug_start_time));
      }
    }
    function _process_cached_inserts ($results)
    {
      preg_match_all ((((('!'.$this->_smarty_md5).'{insert_cache (.*)}').$this->_smarty_md5).'!Uis'), $results, $match);
      $insert_args = $match[1];
      $cached_inserts = $match[0];
      for ($i = 0; ($i < count ($cached_inserts)); ++$i)
      {
        if ($this->debugging)
        {
          $debug_start_time = $this->_get_microtime ();
        }
        $args = unserialize ($insert_args[$i]);
        $name = $args['name'];
        unset ($$args);
        if (isset ($args['script']))
        {
          $this->_parse_file_path ($this->trusted_dir, $this->_dequote ($args['script']), $resource_type, $resource_name);
          if ($this->security)
          {
            if ((($resource_type != 'file') OR !is_file ($resource_name)))
            {
              $this->_syntax_error ((((((''.'include_php: ').$resource_type).': ').$resource_name).' is not readable'));
              return false;
            }
            if (!$this->_is_trusted ($resource_type, $resource_name))
            {
              $this->_syntax_error ((((((''.'include_php: ').$resource_type).': ').$resource_name).' is not trusted'));
              return false;
            }
          }
          include_once $resource_name;
          unset ($$args);
        }
        $function_name = ('insert_'.$name);
        $replace = $function_name ($args, $this);
        $results = str_replace ($cached_inserts[$i], $replace, $results);
        if ($this->debugging)
        {
          $this->_smarty_debug_info[] = array ('type' => 'insert', 'filename' => ('insert_'.$name), 'depth' => $this->_inclusion_depth, 'exec_time' => ($this->_get_microtime () - $debug_start_time));
          continue;
        }
      }
      return $results;
    }
    function _run_insert_handler ($args)
    {
      if ($this->debugging)
      {
        $debug_start_time = $this->_get_microtime ();
      }
      if ($this->caching)
      {
        $arg_string = serialize ($args);
        return (($this->_smarty_md5.(((''.'{insert_cache ').$arg_string).'}')).$this->_smarty_md5);
      }
      else
      {
        $function_name = ('insert_'.$args['name']);
        if (isset ($args['script']))
        {
          $this->_parse_file_path ($this->trusted_dir, $this->_dequote ($args['script']), $resource_type, $resource_name);
          if ($this->security)
          {
            if ((($resource_type != 'file') OR !is_file ($resource_name)))
            {
              $this->_syntax_error ((((((''.'include_php: ').$resource_type).': ').$resource_name).' is not readable'));
              return false;
            }
            if (!$this->_is_trusted ($resource_type, $resource_name))
            {
              $this->_syntax_error ((((((''.'include_php: ').$resource_type).': ').$resource_name).' is not trusted'));
              return false;
            }
          }
          include_once $resource_name;
        }
        $content = $function_name ($args, $this);
        if ($this->debugging)
        {
          $this->_smarty_debug_info[] = array ('type' => 'insert', 'filename' => ('insert_'.$args['name']), 'depth' => $this->_inclusion_depth, 'exec_time' => ($this->_get_microtime () - $debug_start_time));
        }
        if (!empty ($args['assign']))
        {
          $this->assign ($args['assign'], $content);
        }
        else
        {
          return $content;
        }
      }
    }
    function _run_mod_handler ()
    {
      $args = func_get_args ();
      list ($func_name, $map_array) = array_splice ($args, 0, 2);
      $var = $args[0];
      if (($map_array AND is_array ($var)))
      {
        foreach ($var as $key => $val)
        {
          $args[0] = $val;
          $var[$key] = $this->my_call_user_func_array ($func_name, $args);
        }
        return $var;
      }
      else
      {
        return $this->my_call_user_func_array ($func_name, $args);
      }
    }
    function _dequote ($string)
    {
      if (((($string[0] == '\'') OR ($string[0] == '"')) AND ($string[(strlen ($string) - 1)] == $string[0])))
      {
        return substr ($string, 1, -1);
      }
      else
      {
        return $string;
      }
    }
    function _read_file ($filename, $start = null, $lines = null)
    {
      if (!$fd = fopen ($filename, 'r'))
      {
        return false;
      }
      flock ($fd, LOCK_SH);
      if ((($start == null) AND ($lines == null)))
      {
        $contents = fread ($fd, filesize ($filename));
      }
      else
      {
        if ((1 < $start))
        {
          for ($loop = 1; ($loop < $start); ++$loop)
          {
            fgets ($fd, 65536);
          }
        }
        if (($lines == null))
        {
          while (!feof ($fd))
          {
            ($contents .= fgets ($fd, 65536));
          }
        }
        else
        {
          for ($loop = 0; ($loop < $lines); ++$loop)
          {
            ($contents .= fgets ($fd, 65536));
            if (feof ($fd))
            {
              break;
            }
          }
        }
      }
      fclose ($fd);
      return $contents;
    }
    function _write_file ($filename, $contents, $create_dirs = false)
    {
      if ($create_dirs)
      {
        $this->_create_dir_structure (dirname ($filename));
      }
      if (!$fd = fopen ($filename, 'w'))
      {
        $this->_trigger_error_msg ((((''.'problem writing \'').$filename).'.\''));
        return false;
      }
      if (((strtoupper (substr (PHP_OS, 0, 3)) == 'WIN') OR flock ($fd, LOCK_EX)))
      {
        fwrite ($fd, $contents);
        fclose ($fd);
        chmod ($filename, 420);
      }
      return true;
    }
    function _get_auto_base ($auto_base, $auto_source)
    {
      $source_md5 = md5 ($auto_source);
      $res = ($auto_base.'/_cached_templates');
      return $res;
    }
    function _get_auto_filename ($auto_base, $auto_source, $auto_id = null)
    {
      $filename = (!empty ($auto_source) ? ereg_replace ('\\.htm', '', $auto_source) : uniqid (''));
      $res = ((($this->_get_auto_base ($auto_base, $auto_source).'/').$filename).'.php');
      return $res;
    }
    function _rm_auto ($auto_base, $auto_source = null, $auto_id = null)
    {
      if (!is_dir ($auto_base))
      {
        return false;
      }
      if (!isset ($auto_source))
      {
        $res = $this->_rmdir ($auto_base, 0);
      }
      else
      {
        if (isset ($auto_id))
        {
          $tname = $this->_get_auto_filename ($auto_base, $auto_source, $auto_id);
          $res = (is_file ($tname) AND unlink ($tname));
        }
        else
        {
          $tname = $this->_get_auto_base ($auto_base, $auto_source);
          $res = $this->_rmdir ($tname);
        }
      }
      return $res;
    }
    function _rmdir ($dirname, $level = 1)
    {
      $handle = opendir ($dirname);
      while ($entry = readdir ($handle))
      {
        if ((($entry != '.') AND ($entry != '..')))
        {
          if (is_dir ((($dirname.'/').$entry)))
          {
            $this->_rmdir ((($dirname.'/').$entry), ($level + 1));
            continue;
          }
          else
          {
            unlink ((($dirname.'/').$entry));
            continue;
          }
          continue;
        }
      }
      closedir ($handle);
      if ($level)
      {
        rmdir ($dirname);
      }
      return true;
    }
    function _create_dir_structure ($dir)
    {
      if (!file_exists ($dir))
      {
        $dir_parts = preg_split ('!/+!', $dir, -1, PREG_SPLIT_NO_EMPTY);
        $new_dir = (($dir[0] == '/') ? '/' : '');
        foreach ($dir_parts as $dir_part)
        {
          ($new_dir .= $dir_part);
          if ((!file_exists ($new_dir) AND !mkdir ($new_dir, 505)))
          {
            $this->_trigger_error_msg ((((''.'problem creating directory "').$dir).'"'));
            return false;
          }
          ($new_dir .= '/');
        }
      }
    }
    function _write_cache_file ($tpl_file, $cache_id, $compile_id, $results)
    {
      $this->_cache_info['timestamp'] = time ();
      $results = ((('SMARTY_CACHE_INFO_HEADER'.serialize ($this->_cache_info)).'
').$results);
      if (!empty ($this->cache_handler_func))
      {
        $funcname = $this->cache_handler_func;
        return $funcname ('write', $this, $results, $tpl_file, $cache_id, $compile_id);
      }
      else
      {
        if ((isset ($compile_id) OR isset ($cache_id)))
        {
          $auto_id = ($compile_id.$cache_id);
        }
        else
        {
          $auto_id = null;
        }
        $cache_file = $this->_get_auto_filename ($this->cache_dir, $tpl_file, $auto_id);
        $this->_write_file ($cache_file, $results, true);
        return true;
      }
    }
    function _read_cache_file ($tpl_file, $cache_id, $compile_id, &$results)
    {
      if (($this->force_compile OR ($this->cache_lifetime == 0)))
      {
        return false;
      }
      if (!empty ($this->cache_handler_func))
      {
        $funcname = $this->cache_handler_func;
        $funcname ('read', $this, $results, $tpl_file, $cache_id, $compile_id);
      }
      else
      {
        if ((isset ($compile_id) OR isset ($cache_id)))
        {
          $auto_id = ($compile_id.$cache_id);
        }
        else
        {
          $auto_id = null;
        }
        $cache_file = $this->_get_auto_filename ($this->cache_dir, $tpl_file, $auto_id);
        $results = $this->_read_file ($cache_file);
      }
      if (empty ($results))
      {
        return false;
      }
      $cache_split = explode ('
', $results, 2);
      $cache_header = $cache_split[0];
      if ((substr ($cache_header, 0, 24) == 'SMARTY_CACHE_INFO_HEADER'))
      {
        $cache_info = unserialize (substr ($cache_header, 24));
        $cache_timestamp = $cache_info['timestamp'];
        if (($this->cache_lifetime < (time () - $cache_timestamp)))
        {
          return false;
        }
        if ($this->compile_check)
        {
          foreach ($cache_info as $curr_cache_info)
          {
            switch ($curr_cache_info[0])
            {
              case 'template':
              {
                $this->_fetch_template_info ($curr_cache_info[1], $template_source, $template_timestamp, false);
                if (($cache_timestamp < $template_timestamp))
                {
                  return false;
                  break;
                }
                break;
              }
              case 'config':
              {
                if (($cache_timestamp < filemtime ((($this->config_dir.'/').$curr_cache_info[1]))))
                {
                  return false;
                  break;
                }
                break;
              }
            }
          }
        }
        $results = $cache_split[1];
        return true;
      }
      else
      {
        return false;
      }
    }
    function quote_replace ($string)
    {
      return preg_replace ('![\\$]\\d!', '\\\\\\0', $string);
    }
    function _trigger_error_msg ($error_msg, $error_type = E_USER_WARNING)
    {
      trigger_error (((''.'Smarty error: ').$error_msg), $error_type);
    }
    function _get_microtime ()
    {
      $mtime = microtime ();
      $mtime = explode (' ', $mtime);
      $mtime = ((double)$mtime[1] + (double)$mtime[0]);
      return $mtime;
    }
  }
  if (!defined ('SMARTY_DIR'))
  {
    define ('SMARTY_DIR', '');
  }
  require_once (SMARTY_DIR.'Smarty.addons.php');
  define ('SMARTY_PHP_PASSTHRU', 0);
  define ('SMARTY_PHP_QUOTE', 1);
  define ('SMARTY_PHP_REMOVE', 2);
  define ('SMARTY_PHP_ALLOW', 3);
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -