These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | /** |
||
4 | * Copyright (c) 2013-2016 |
||
5 | * |
||
6 | * @category Library |
||
7 | * @package Dwoo\Adapters\Agavi |
||
8 | * @author Jordi Boggiano <[email protected]> |
||
9 | * @author David Sanchez <[email protected]> |
||
10 | * @copyright 2008-2013 Jordi Boggiano |
||
11 | * @copyright 2013-2016 David Sanchez |
||
12 | * @license http://dwoo.org/LICENSE Modified BSD License |
||
13 | * @version 1.3.0 |
||
14 | * @date 2016-09-19 |
||
15 | * @link http://dwoo.org/ |
||
16 | */ |
||
17 | class DwooRenderer extends AgaviRenderer implements AgaviIReusableRenderer |
||
18 | { |
||
19 | /** |
||
20 | * @constant string The directory inside the cache dir where templates will |
||
21 | * be stored in compiled form. |
||
22 | */ |
||
23 | const COMPILE_DIR = 'templates'; |
||
24 | |||
25 | /** |
||
26 | * @constant string The subdirectory inside the compile dir where templates |
||
27 | * will be stored in compiled form. |
||
28 | */ |
||
29 | const COMPILE_SUBDIR = 'dwoo'; |
||
30 | |||
31 | /** |
||
32 | * @constant string The directory inside the cache dir where cached content |
||
33 | * will be stored. |
||
34 | */ |
||
35 | const CACHE_DIR = 'dwoo'; |
||
36 | |||
37 | /** |
||
38 | * @var Dwoo Dwoo template engine |
||
39 | */ |
||
40 | protected $dwoo = null; |
||
41 | |||
42 | /** |
||
43 | * @var string A string with the default template file extension, |
||
44 | * including the dot |
||
45 | */ |
||
46 | protected $defaultExtension = '.html'; |
||
47 | |||
48 | /** |
||
49 | * stores the (optional) plugin directories to add to the Dwoo_Loader. |
||
50 | */ |
||
51 | protected $plugin_dir = null; |
||
52 | |||
53 | /** |
||
54 | * Pre-serialization callback. |
||
55 | * |
||
56 | * Excludes the Dwoo instance to prevent excessive serialization load. |
||
57 | */ |
||
58 | public function __sleep() |
||
59 | { |
||
60 | $keys = parent::__sleep(); |
||
61 | unset($keys[array_search('dwoo', $keys)]); |
||
62 | |||
63 | return $keys; |
||
64 | } |
||
65 | |||
66 | /** |
||
67 | * Initialize this Renderer. |
||
68 | * |
||
69 | * @param AgaviContext The current application context |
||
70 | * @param array An associative array of initialization parameters |
||
71 | */ |
||
72 | public function initialize(AgaviContext $context, array $parameters = array()) |
||
73 | { |
||
74 | parent::initialize($context, $parameters); |
||
75 | |||
76 | $this->plugin_dir = $this->getParameter('plugin_dir', $this->plugin_dir); |
||
77 | } |
||
78 | |||
79 | /** |
||
80 | * provides a custom compiler to the dwoo renderer with optional settings |
||
81 | * you can set in the agavi output_types.xml config file. |
||
82 | * |
||
83 | * @return Dwoo_Compiler |
||
84 | */ |
||
85 | public function compilerFactory() |
||
86 | { |
||
87 | $compiler = Dwoo_Compiler::compilerFactory(); |
||
88 | $compiler->setAutoEscape((bool) $this->getParameter('auto_escape', false)); |
||
89 | |||
90 | return $compiler; |
||
91 | } |
||
92 | |||
93 | /** |
||
94 | * Grab a cleaned up dwoo instance. |
||
95 | * |
||
96 | * @return Dwoo A Dwoo instance |
||
97 | */ |
||
98 | protected function getEngine() |
||
99 | { |
||
100 | if ($this->dwoo) { |
||
101 | return $this->dwoo; |
||
102 | } |
||
103 | |||
104 | // this triggers Agavi autoload |
||
105 | if (!class_exists('Dwoo')) { |
||
106 | if (file_exists(dirname(__FILE__).'/../../../dwooAutoload.php')) { |
||
107 | // file was dropped with the entire dwoo package |
||
108 | include dirname(__FILE__).'/../../../dwooAutoload.php'; |
||
109 | } else { |
||
110 | // assume the dwoo package is in the include path |
||
111 | include 'dwooAutoload.php'; |
||
112 | } |
||
113 | } |
||
114 | |||
115 | $parentMode = fileperms(AgaviConfig::get('core.cache_dir')); |
||
116 | |||
117 | $compileDir = AgaviConfig::get('core.cache_dir').DIRECTORY_SEPARATOR.self::COMPILE_DIR.DIRECTORY_SEPARATOR.self::COMPILE_SUBDIR; |
||
118 | AgaviToolkit::mkdir($compileDir, $parentMode, true); |
||
119 | |||
120 | $cacheDir = AgaviConfig::get('core.cache_dir').DIRECTORY_SEPARATOR.self::CACHE_DIR; |
||
121 | AgaviToolkit::mkdir($cacheDir, $parentMode, true); |
||
122 | |||
123 | $this->dwoo = new Dwoo_Core($compileDir, $cacheDir); |
||
0 ignored issues
–
show
|
|||
124 | |||
125 | if (!empty($this->plugin_dir)) { |
||
126 | foreach ((array) $this->plugin_dir as $dir) { |
||
127 | $this->dwoo->getLoader()->addDirectory($dir); |
||
128 | } |
||
129 | } |
||
130 | |||
131 | $this->dwoo->setDefaultCompilerFactory('file', array($this, 'compilerFactory')); |
||
132 | |||
133 | return $this->dwoo; |
||
134 | } |
||
135 | |||
136 | /** |
||
137 | * Render the presentation and return the result. |
||
138 | * |
||
139 | * @param AgaviTemplateLayer The template layer to render |
||
140 | * @param array The template variables |
||
141 | * @param array The slots |
||
142 | * @param array Associative array of additional assigns |
||
143 | * |
||
144 | * @return string A rendered result |
||
145 | */ |
||
146 | public function render(AgaviTemplateLayer $layer, array &$attributes = array(), array &$slots = array(), array &$moreAssigns = array()) |
||
147 | { |
||
148 | $engine = $this->getEngine(); |
||
149 | |||
150 | $data = array(); |
||
151 | if ($this->extractVars) { |
||
152 | $data = $attributes; |
||
153 | } else { |
||
154 | $data[$this->varName] = &$attributes; |
||
155 | } |
||
156 | |||
157 | $data[$this->slotsVarName] = &$slots; |
||
158 | |||
159 | foreach ($this->assigns as $key => $getter) { |
||
160 | $data[$key] = $this->getContext()->$getter(); |
||
161 | } |
||
162 | |||
163 | foreach ($moreAssigns as $key => &$value) { |
||
164 | if (isset($this->moreAssignNames[$key])) { |
||
165 | $key = $this->moreAssignNames[$key]; |
||
166 | } |
||
167 | $data[$key] = &$value; |
||
168 | } |
||
169 | |||
170 | return $engine->get($layer->getResourceStreamIdentifier(), $data); |
||
171 | } |
||
172 | } |
||
173 |
Our type inference engine has found an assignment to a property that is incompatible with the declared type of that property.
Either this assignment is in error or the assigned type should be added to the documentation/type hint for that property..