mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-27 21:58:52 +00:00
[feature/twig] Check the template context for language vars
We output some language vars to the context (e.g. L_TITLE in the ACP). These do not exist in user->lang, so we must check the context vars first, if not in context, we output the result of user->lang. PHPBB3-11598
This commit is contained in:
parent
709b3e9803
commit
f39edcea3f
2 changed files with 36 additions and 2 deletions
|
@ -17,11 +17,15 @@ if (!defined('IN_PHPBB'))
|
|||
|
||||
class phpbb_template_twig_extension extends Twig_Extension
|
||||
{
|
||||
/** @var phpbb_template_context */
|
||||
protected $context;
|
||||
|
||||
/** @var phpbb_user */
|
||||
protected $user;
|
||||
|
||||
public function __construct($user)
|
||||
public function __construct(phpbb_template_context $context, $user)
|
||||
{
|
||||
$this->context = $context;
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
|
@ -69,7 +73,7 @@ class phpbb_template_twig_extension extends Twig_Extension
|
|||
public function getFunctions()
|
||||
{
|
||||
return array(
|
||||
new Twig_SimpleFunction('lang', array($this->user, 'lang')),
|
||||
new Twig_SimpleFunction('lang', array($this, 'lang')),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -140,4 +144,33 @@ class phpbb_template_twig_extension extends Twig_Extension
|
|||
|
||||
return twig_slice($env, $item, $start, $end, $preserveKeys);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get output for a language variable (L_FOO, LA_FOO)
|
||||
*
|
||||
* This function checks to see if the language var was outputted to $context
|
||||
* (e.g. in the ACP, L_TITLE)
|
||||
* If not, we return the result of $user->lang()
|
||||
*
|
||||
* @param string $lang name
|
||||
* @return string
|
||||
*/
|
||||
function lang()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$key = $args[0];
|
||||
|
||||
$context = $this->context->get_data_ref();
|
||||
$context_vars = $context['.'][0];
|
||||
|
||||
if (isset($context_vars['L_' . $key]))
|
||||
{
|
||||
return $context_vars['L_' . $key];
|
||||
}
|
||||
|
||||
// LA_ is transformed into lang(\'$1\')|addslashes, so we should not
|
||||
// need to check for it
|
||||
|
||||
return call_user_func_array(array($this->user, 'lang'), $args);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -134,6 +134,7 @@ class phpbb_template_twig implements phpbb_template
|
|||
|
||||
$this->twig->addExtension(
|
||||
new phpbb_template_twig_extension(
|
||||
$this->context,
|
||||
$this->user
|
||||
)
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue