PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 4.0.2
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v4.0.2
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / View / RenderTokenParser.php
matomo / app / core / View Last commit date
HtmlEmailFooterView.php 5 years ago HtmlReportEmailHeaderView.php 5 years ago MethodCallExpression.php 5 years ago OneClickDone.php 5 years ago RenderTokenParser.php 5 years ago UIControl.php 5 years ago ViewInterface.php 5 years ago
RenderTokenParser.php
82 lines
1 <?php
2 /**
3 * Matomo - free/libre analytics platform
4 *
5 * @link https://matomo.org
6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
7 *
8 */
9 namespace Piwik\View;
10
11 use Twig\Node\Expression\ArrayExpression;
12 use Twig\Node\IncludeNode;
13 use Twig\Token;
14 use Twig\TokenParser\AbstractTokenParser;
15
16 /**
17 * Defines a new Twig tag that will render a Piwik View.
18 *
19 * Use the tag like this:
20 *
21 * {% render theView %}
22 *
23 * where `theView` is a variable referencing a View instance.
24 */
25 class RenderTokenParser extends AbstractTokenParser
26 {
27 /**
28 * Parses the Twig stream and creates a Twig_Node_Include instance that includes
29 * the View's template.
30 *
31 * @return \Twig\Node\Node
32 */
33 public function parse(Token $token)
34 {
35 $parser = $this->parser;
36 $stream = $parser->getStream();
37
38 $view = $parser->getExpressionParser()->parseExpression();
39
40 $variablesOverride = new ArrayExpression(array(), $token->getLine());
41 if ($stream->test(Token::NAME_TYPE, 'with')) {
42 $stream->next();
43
44 $variablesOverride->addElement($this->parser->getExpressionParser()->parseExpression());
45 }
46
47 $stream->expect(Token::BLOCK_END_TYPE);
48
49 $viewTemplateExpr = new MethodCallExpression(
50 $view,
51 'getTemplateFile',
52 new ArrayExpression(array(), $token->getLine()),
53 $token->getLine()
54 );
55
56 $variablesExpr = new MethodCallExpression(
57 $view,
58 'getTemplateVars',
59 $variablesOverride,
60 $token->getLine()
61 );
62
63 return new IncludeNode(
64 $viewTemplateExpr,
65 $variablesExpr,
66 $only = false,
67 $ignoreMissing = false,
68 $token->getLine()
69 );
70 }
71
72 /**
73 * Returns the tag identifier.
74 *
75 * @return string
76 */
77 public function getTag()
78 {
79 return 'render';
80 }
81 }
82