diff options
| author | Nathan Guse <nathaniel.guse@gmail.com> | 2013-07-23 11:13:25 -0500 |
|---|---|---|
| committer | Nathan Guse <nathaniel.guse@gmail.com> | 2013-07-23 11:13:25 -0500 |
| commit | 485c6ab3553f518b157610ee1144bbcbef63f797 (patch) | |
| tree | 0c50392c4716511e118eeabd3f48cceb3ac7e906 /phpBB/phpbb/template/twig/node/includephp.php | |
| parent | 41d8bfa974900c9befbde06cc08060eb8a552ec8 (diff) | |
| parent | be59885d5fd4b44f1c43994dec928eda816f9ab8 (diff) | |
| download | forums-485c6ab3553f518b157610ee1144bbcbef63f797.tar forums-485c6ab3553f518b157610ee1144bbcbef63f797.tar.gz forums-485c6ab3553f518b157610ee1144bbcbef63f797.tar.bz2 forums-485c6ab3553f518b157610ee1144bbcbef63f797.tar.xz forums-485c6ab3553f518b157610ee1144bbcbef63f797.zip | |
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/11667
# By Joas Schilling (224) and others
# Via Andreas Fischer (23) and others
* 'develop' of github.com:phpbb/phpbb3: (385 commits)
[ticket/11734] Readd accidently removed language strings of forum permissions
[ticket/11620] Whitespace and combine function into test_case
[ticket/11620] Move check_ban_test functions to setUp/tearDown for clarity
[ticket/11620] Changed incorrect global variable
[ticket/11620] Minor indentation changes and comment clarity
[ticket/11733] Fix "Illegal offset type" Warning caused by overall feed
[ticket/11733] Add browse test for feed.php
[ticket/11731] Remove static calls to captcha garbage collector
[ticket/11728] Replace topic_approved with topic_visibility
[ticket/11620] Expected and actual test conditions wrongly swapped
[ticket/11620] Space between . in directory import concatenation
[ticket/11620] Changes to match merge
[ticket/11620] Changes for code guidelines consistency
[ticket/11620] Fix a static calls to non-static for session captcha
[ticket/11620] Cleanup creation_test that was renamed on a cherry-pick
[ticket/11620] Update auth_provider for new interface
[ticket/11620] Added garbage_collection_test
[ticket/11620] Fixed check_ban_test errors with cache and ban warning message
[ticket/11620] Fixed a typo on check_ban_test
[ticket/11620] Refactored check_isvalid_test to use session_test_case
...
Diffstat (limited to 'phpBB/phpbb/template/twig/node/includephp.php')
| -rw-r--r-- | phpBB/phpbb/template/twig/node/includephp.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/phpBB/phpbb/template/twig/node/includephp.php b/phpBB/phpbb/template/twig/node/includephp.php new file mode 100644 index 0000000000..dbe54f0e1a --- /dev/null +++ b/phpBB/phpbb/template/twig/node/includephp.php @@ -0,0 +1,91 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group, sections (c) 2009 Fabien Potencier, Armin Ronacher +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + + +class phpbb_template_twig_node_includephp extends Twig_Node +{ + /** @var Twig_Environment */ + protected $environment; + + public function __construct(Twig_Node_Expression $expr, phpbb_template_twig_environment $environment, $ignoreMissing = false, $lineno, $tag = null) + { + $this->environment = $environment; + + parent::__construct(array('expr' => $expr), array('ignore_missing' => (Boolean) $ignoreMissing), $lineno, $tag); + } + + /** + * Compiles the node to PHP. + * + * @param Twig_Compiler A Twig_Compiler instance + */ + public function compile(Twig_Compiler $compiler) + { + $compiler->addDebugInfo($this); + + $config = $this->environment->get_phpbb_config(); + + if (!$config['tpl_allow_php']) + { + $compiler + ->write("// INCLUDEPHP Disabled\n") + ; + + return; + } + + if ($this->getAttribute('ignore_missing')) { + $compiler + ->write("try {\n") + ->indent() + ; + } + + $compiler + ->write("\$location = ") + ->subcompile($this->getNode('expr')) + ->raw(";\n") + ->write("if (phpbb_is_absolute(\$location)) {\n") + ->indent() + // Absolute path specified + ->write("require(\$location);\n") + ->outdent() + ->write("} else if (file_exists(\$this->getEnvironment()->get_phpbb_root_path() . \$location)) {\n") + ->indent() + // PHP file relative to phpbb_root_path + ->write("require(\$this->getEnvironment()->get_phpbb_root_path() . \$location);\n") + ->outdent() + ->write("} else {\n") + ->indent() + // Local path (behaves like INCLUDE) + ->write("require(\$this->getEnvironment()->getLoader()->getCacheKey(\$location));\n") + ->outdent() + ->write("}\n") + ; + + if ($this->getAttribute('ignore_missing')) { + $compiler + ->outdent() + ->write("} catch (Twig_Error_Loader \$e) {\n") + ->indent() + ->write("// ignore missing template\n") + ->outdent() + ->write("}\n\n") + ; + } + } +} |
