aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/template/twig/extension.php
diff options
context:
space:
mode:
authormrgoldy <gijsmartens1@gmail.com>2018-12-09 23:52:50 +0100
committerMarc Alexander <admin@m-a-styles.de>2019-09-25 20:07:09 +0200
commit7989f3f71fd665aa743d947c7487d41c6f0a33d4 (patch)
tree4d2fe00e8c520c13400c193c994bb26070ae8044 /phpBB/phpbb/template/twig/extension.php
parent012fe1887963adecc30fa46b7c7069a29600666d (diff)
downloadforums-7989f3f71fd665aa743d947c7487d41c6f0a33d4.tar
forums-7989f3f71fd665aa743d947c7487d41c6f0a33d4.tar.gz
forums-7989f3f71fd665aa743d947c7487d41c6f0a33d4.tar.bz2
forums-7989f3f71fd665aa743d947c7487d41c6f0a33d4.tar.xz
forums-7989f3f71fd665aa743d947c7487d41c6f0a33d4.zip
[ticket/15905] Try with existing phpbb extension
PHPBB3-15905
Diffstat (limited to 'phpBB/phpbb/template/twig/extension.php')
-rw-r--r--phpBB/phpbb/template/twig/extension.php48
1 files changed, 46 insertions, 2 deletions
diff --git a/phpBB/phpbb/template/twig/extension.php b/phpBB/phpbb/template/twig/extension.php
index c5b3db1aaf..5bb0c67291 100644
--- a/phpBB/phpbb/template/twig/extension.php
+++ b/phpBB/phpbb/template/twig/extension.php
@@ -15,6 +15,9 @@ namespace phpbb\template\twig;
class extension extends \Twig_Extension
{
+ /** @var \phpbb\auth\auth */
+ protected $auth;
+
/** @var \phpbb\template\context */
protected $context;
@@ -27,13 +30,14 @@ class extension extends \Twig_Extension
/**
* Constructor
*
+ * @param \phpbb\auth\auth $auth
* @param \phpbb\template\context $context
* @param \phpbb\template\twig\environment $environment
* @param \phpbb\language\language $language
- * @return \phpbb\template\twig\extension
*/
- public function __construct(\phpbb\template\context $context, \phpbb\template\twig\environment $environment, $language)
+ public function __construct(\phpbb\auth\auth $auth, \phpbb\template\context $context, \phpbb\template\twig\environment $environment, $language)
{
+ $this->auth = $auth;
$this->context = $context;
$this->environment = $environment;
$this->language = $language;
@@ -91,6 +95,8 @@ class extension extends \Twig_Extension
return array(
new \Twig_SimpleFunction('lang', array($this, 'lang')),
new \Twig_SimpleFunction('lang_defined', array($this, 'lang_defined')),
+ new \Twig_SimpleFunction('auth', array($this, 'get_auth')),
+ new \Twig_SimpleFunction('auth_global', array($this, 'get_auth_global')),
);
}
@@ -198,4 +204,42 @@ class extension extends \Twig_Extension
{
return call_user_func_array([$this->language, 'is_set'], [$key]);
}
+
+ /**
+ * Look up permission option(s).
+ *
+ * How to use in a template:
+ * - {{ auth(options, forum_id) }}
+ *
+ * The options are required, either as a single string 'a_' or as a twig array ['a_', 'm_'].
+ * The forum identifier is optional.
+ *
+ * @return bool
+ */
+ public function get_auth()
+ {
+ $args = func_get_args();
+
+ $options = $args[0];
+ $forum_id = isset($args[1]) ? (int) $args[1] : 0;
+
+ return is_array($options) ? $this->auth->acl_gets($options, $forum_id) : $this->auth->acl_get($options, $forum_id);
+ }
+
+ /**
+ * Look up permission option(s) for any forum
+ *
+ * How to use in a template:
+ * - {{ auth_global(options) }}
+ *
+ * The options are required, either as a single string 'a_' or as a twig array ['a_', 'm_'].
+ *
+ * @return bool
+ */
+ public function get_auth_global()
+ {
+ $args = func_get_args();
+
+ return $this->auth->acl_getf_global($args);
+ }
}