source: pro-violet-viettel/sourcecode/application/libraries/Pp/drivers/pp_twig.php @ 345

Last change on this file since 345 was 345, checked in by quyenla, 11 years ago

collaborator page

File size: 3.5 KB
Line 
1<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
2
3/**
4* @name Twig
5* @package Plenty Parser
6* @subpackage Driver
7* @copyright 2011
8* @author Dwayne Charrington
9* @license http://philsturgeon.co.uk/code/dbad-license
10* @version 1.0
11*/
12
13class Pp_twig extends CI_Driver {
14   
15    protected $ci;
16
17    protected $_twig;
18   
19    protected $_template;
20   
21    protected $_template_dir;
22    protected $_cache_dir;
23    protected $_debug;
24   
25    public function __construct()
26    {
27        $this->ci = get_instance();
28       
29        ini_set('include_path',
30        ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'third_party/Twig');
31
32        require_once (string) "Autoloader" . EXT;
33
34        Twig_Autoloader::register();
35
36        $loader = new Twig_Loader_Filesystem($this->_template_dir);
37
38        $this->_twig = new Twig_Environment($loader, array(
39            'cache' => $this->_cache_dir,
40            'debug' => $this->_debug,
41        ));
42       
43        // Check if a theme has been set and if there is, check it exists and add it to the path
44             
45    }
46   
47    /**
48    * Override the default template location
49    *
50    * @param mixed $location
51    * @returns void
52    */
53    public function set_location($location)
54    {
55        $this->_template_dir = $location;
56    }
57
58    /**
59     * Assign Var
60     * Assign a variable for template view use
61     *
62     * @param mixed $name
63     * @param mixed $val
64     * @returns void
65     */
66    public function assign_var($name, $val)
67    {
68        // If an empty variable name
69        if (empty($name))
70        {
71            show_error('Smarty assign var function expects a name and value for assigning variables');
72        }
73
74        // Call Smarty assign function
75        $this->_smarty->assign($name, $val);
76    }
77       
78    /**
79    * Load the template and return the data
80    *
81    * @param mixed $template
82    * @param mixed $data
83    * @returns string
84    */
85        public function parse($template, $data = array(), $return = false)
86    {
87        // If we do not have a template extension, use the default
88        if (stripos($template, '.') === false)
89        {
90            $template . config_item('parser.twig.extension');
91        }
92
93        // Load the template
94        $template = $this->_twig->loadTemplate($template);
95
96        // If data supplied is an array
97        if ( is_array($data) )
98        {
99            $data = array_merge($data, $this->ci->load->get_vars());
100        }
101       
102        if ( $return === true )
103        {
104            return $template->render($data);   
105        }
106        else
107        {
108            return $template->display($data);
109        }
110    }
111   
112    /**
113    * Parse String
114    * Parse a string and return it as a string or display it
115    *
116    * @param mixed $string
117    * @param mixed $data
118    * @param mixed $return
119    * @returns void
120    */
121    public function parse_string($string, $data = array(), $return = false)
122    {
123        $string = $this->_twig->loadTemplate($string);
124       
125        if ( is_array($data) )
126        {
127            $data = array_merge($data, $this->ci->load->get_vars());
128        }
129       
130        if ($return === true)
131        {
132            return $string->render($data);
133        }
134        else
135        {
136            return $string->display($data);
137        }
138       
139    }
140
141    /**
142     * Register Plugin
143     * Registers a plugin for use in a Twig template.
144     * @param $name
145     */
146    public function register_plugin($name)
147    {
148        $this->_twig->addFunction($name, new Twig_Function_Function($name));
149    }
150
151}
Note: See TracBrowser for help on using the repository browser.