diff options
| -rw-r--r-- | phpBB/config/default/container/services_twig.yml | 24 | ||||
| -rw-r--r-- | phpBB/phpbb/template/twig/extension/auth.php | 91 | ||||
| -rw-r--r-- | phpBB/phpbb/template/twig/extension/avatar.php | 80 | ||||
| -rw-r--r-- | phpBB/phpbb/template/twig/extension/config.php | 64 | ||||
| -rw-r--r-- | phpBB/phpbb/template/twig/extension/username.php | 85 | 
5 files changed, 344 insertions, 0 deletions
| diff --git a/phpBB/config/default/container/services_twig.yml b/phpBB/config/default/container/services_twig.yml index ce76a6a5ea..f3ad95207d 100644 --- a/phpBB/config/default/container/services_twig.yml +++ b/phpBB/config/default/container/services_twig.yml @@ -43,6 +43,25 @@ services:          tags:              - { name: twig.extension } +    template.twig.extensions.auth: +        class: phpbb\template\twig\extension\auth +        arguments: +            - '@auth' +        tags: +            - { name: twig.extension } + +    template.twig.extensions.avatar: +        class: phpbb\template\twig\extension\avatar +        tags: +            - { name: twig.extension } + +    template.twig.extensions.config: +        class: phpbb\template\twig\extension\config +        arguments: +            - '@config' +        tags: +            - { name: twig.extension } +      template.twig.extensions.routing:          class: phpbb\template\twig\extension\routing          arguments: @@ -50,6 +69,11 @@ services:          tags:              - { name: twig.extension } +    template.twig.extensions.username: +        class: phpbb\template\twig\extension\username +        tags: +            - { name: twig.extension } +      template.twig.extensions.debug:          class: Twig_Extension_Debug diff --git a/phpBB/phpbb/template/twig/extension/auth.php b/phpBB/phpbb/template/twig/extension/auth.php new file mode 100644 index 0000000000..83a626e523 --- /dev/null +++ b/phpBB/phpbb/template/twig/extension/auth.php @@ -0,0 +1,91 @@ +<?php
 +/**
 + *
 + * This file is part of the phpBB Forum Software package.
 + *
 + * @copyright (c) phpBB Limited <https://www.phpbb.com>
 + * @license GNU General Public License, version 2 (GPL-2.0)
 + *
 + * For full copyright and license information, please see
 + * the docs/CREDITS.txt file.
 + *
 + */
 +
 +namespace phpbb\template\twig\extension;
 +
 +class auth extends \Twig_Extension
 +{
 +	/** @var \phpbb\auth\auth */
 +	protected $auth;
 +
 +	/**
 +	 * Constructor.
 +	 *
 +	 * @param \phpbb\auth\auth	$auth	Authentication object
 +	 */
 +	public function __construct(\phpbb\auth\auth $auth)
 +	{
 +		$this->auth = $auth;
 +	}
 +
 +	/**
 +	 * Get the name of this extension
 +	 *
 +	 * @return string
 +	 */
 +	public function getName()
 +	{
 +		return 'auth';
 +	}
 +
 +	/**
 +	 * Returns a list of global functions to add to the existing list.
 +	 *
 +	 * @return array An array of global functions
 +	 */
 +	public function getFunctions()
 +	{
 +		return array(
 +			new \Twig_SimpleFunction('auth', array($this, 'get_auth')),
 +			new \Twig_SimpleFunction('auth_global', array($this, 'get_auth_global')),
 +		);
 +	}
 +
 +	/**
 +	 * 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);
 +	}
 +}
 diff --git a/phpBB/phpbb/template/twig/extension/avatar.php b/phpBB/phpbb/template/twig/extension/avatar.php new file mode 100644 index 0000000000..e80357cb24 --- /dev/null +++ b/phpBB/phpbb/template/twig/extension/avatar.php @@ -0,0 +1,80 @@ +<?php
 +/**
 + *
 + * This file is part of the phpBB Forum Software package.
 + *
 + * @copyright (c) phpBB Limited <https://www.phpbb.com>
 + * @license GNU General Public License, version 2 (GPL-2.0)
 + *
 + * For full copyright and license information, please see
 + * the docs/CREDITS.txt file.
 + *
 + */
 +
 +namespace phpbb\template\twig\extension;
 +
 +class avatar extends \Twig_Extension
 +{
 +	/**
 +	 * Get the name of this extension
 +	 *
 +	 * @return string
 +	 */
 +	public function getName()
 +	{
 +		return 'avatar';
 +	}
 +
 +	/**
 +	 * Returns a list of global functions to add to the existing list.
 +	 *
 +	 * @return array An array of global functions
 +	 */
 +	public function getFunctions()
 +	{
 +		return array(
 +			new \Twig_SimpleFunction('avatar', array($this, 'get_avatar')),
 +		);
 +	}
 +
 +	/**
 +	 * Get avatar for placing into templates.
 +	 *
 +	 * How to use in a template:
 +	 * - {{ avatar('mode', row, alt, ignore_config, lazy) }}
 +	 *
 +	 * The mode and row (group_row or user_row) are required.
 +	 * The other fields (alt|ignore_config|lazy) are optional.
 +	 *
 +	 * @uses \phpbb_get_group_avatar()
 +	 * @uses \phpbb_get_user_avatar()
 +	 *
 +	 * @return string	The avatar HTML for the specified mode
 +	 */
 +	public function get_avatar()
 +	{
 +		$args = func_get_args();
 +
 +		$mode = (string) $args[0];
 +		$row = (array) $args[1];
 +		$alt = isset($args[2]) ? (string) $args[2] : false;
 +		$ignore_config = isset($args[3]) ? (bool) $args[3] : false;
 +		$lazy = isset($args[4]) ? (bool) $args[4] : false;
 +
 +		// To prevent having to redefine alt attribute ('USER_AVATAR'|'GROUP_AVATAR'), we check if an alternative has been provided
 +		switch ($mode)
 +		{
 +			case 'group':
 +				return $alt ? phpbb_get_group_avatar($row, $alt, $ignore_config, $lazy) : phpbb_get_group_avatar($row);
 +			break;
 +
 +			case 'user':
 +				return $alt ? phpbb_get_user_avatar($row, $alt, $ignore_config, $lazy) : phpbb_get_user_avatar($row);
 +			break;
 +
 +			default:
 +				return '';
 +			break;
 +		}
 +	}
 +}
 diff --git a/phpBB/phpbb/template/twig/extension/config.php b/phpBB/phpbb/template/twig/extension/config.php new file mode 100644 index 0000000000..91b28dfccc --- /dev/null +++ b/phpBB/phpbb/template/twig/extension/config.php @@ -0,0 +1,64 @@ +<?php
 +/**
 + *
 + * This file is part of the phpBB Forum Software package.
 + *
 + * @copyright (c) phpBB Limited <https://www.phpbb.com>
 + * @license GNU General Public License, version 2 (GPL-2.0)
 + *
 + * For full copyright and license information, please see
 + * the docs/CREDITS.txt file.
 + *
 + */
 +
 +namespace phpbb\template\twig\extension;
 +
 +class config extends \Twig_Extension
 +{
 +	/** @var \phpbb\config\config */
 +	protected $config;
 +
 +	/**
 +	 * Constructor.
 +	 *
 +	 * @param \phpbb\config\config	$config		Configuration object
 +	 */
 +	public function __construct(\phpbb\config\config $config)
 +	{
 +		$this->config = $config;
 +	}
 +
 +	/**
 +	 * Get the name of this extension
 +	 *
 +	 * @return string
 +	 */
 +	public function getName()
 +	{
 +		return 'config';
 +	}
 +
 +	/**
 +	 * Returns a list of global functions to add to the existing list.
 +	 *
 +	 * @return array An array of global functions
 +	 */
 +	public function getFunctions()
 +	{
 +		return array(
 +			new \Twig_SimpleFunction('config', array($this, 'get_config')),
 +		);
 +	}
 +
 +	/**
 +	 * Retrieves a configuration value for use in templates.
 +	 *
 +	 * @return string	The configuration value
 +	 */
 +	public function get_config()
 +	{
 +		$args = func_get_args();
 +
 +		return $this->config->offsetGet($args[0]);
 +	}
 +}
 diff --git a/phpBB/phpbb/template/twig/extension/username.php b/phpBB/phpbb/template/twig/extension/username.php new file mode 100644 index 0000000000..aaeaf98df2 --- /dev/null +++ b/phpBB/phpbb/template/twig/extension/username.php @@ -0,0 +1,85 @@ +<?php
 +/**
 + *
 + * This file is part of the phpBB Forum Software package.
 + *
 + * @copyright (c) phpBB Limited <https://www.phpbb.com>
 + * @license GNU General Public License, version 2 (GPL-2.0)
 + *
 + * For full copyright and license information, please see
 + * the docs/CREDITS.txt file.
 + *
 + */
 +
 +namespace phpbb\template\twig\extension;
 +
 +class username extends \Twig_Extension
 +{
 +	/**
 +	 * Get the name of this extension
 +	 *
 +	 * @return string
 +	 */
 +	public function getName()
 +	{
 +		return 'username';
 +	}
 +
 +	/**
 +	 * Returns a list of global functions to add to the existing list.
 +	 *
 +	 * @return array An array of global functions
 +	 */
 +	public function getFunctions()
 +	{
 +		return array(
 +			new \Twig_SimpleFunction('username', array($this, 'get_username')),
 +		);
 +	}
 +
 +	/**
 +	 * Get username details for placing into templates.
 +	 *
 +	 * How to use in a template:
 +	 * - {{ username('mode', user_id, username, user_colour, guest_username, custom_profile_url) }}
 +	 * - {{ username('mode', user_row, guest_username, custom_profile_url) }}
 +	 * It's possible to provide the user identifier, name and colour separately,
 +	 * or provide the entire user row at once as an array.
 +	 *
 +	 * The mode, user_id and username are required (separately or through a user row).
 +	 * The other fields (user_colour|guest_username|custom_profile_url) are optional.
 +	 *
 +	 * @uses \get_username_string()
 +	 *
 +	 * @return string		A string based on what is wanted depending on $mode
 +	 */
 +	public function get_username()
 +	{
 +		$args = func_get_args();
 +
 +		$mode = $args[0];
 +		$user = $args[1];
 +
 +		// If the entire user row is provided
 +		if (is_array($user))
 +		{
 +			$user_id = isset($user['user_id']) ? $user['user_id'] : '';
 +			$username = isset($user['username']) ? $user['username'] : '';
 +			$user_colour = isset($user['user_colour']) ? $user['user_colour'] : '';
 +			$guest_username = isset($args[2]) ? $args[2] : false;
 +			$custom_profile_url = isset($args[3]) ? $args[3] : false;
 +		}
 +		else
 +		{
 +			// Options are provided separately
 +			$user_id = $user;
 +			$username = $args[2];
 +			$user_colour = isset($args[3]) ? $args[3] : '';
 +			$guest_username = isset($args[4]) ? $args[4] : false;
 +			$custom_profile_url = isset($args[5]) ? $args[5] : false;
 +		}
 +
 +
 +		return get_username_string($mode, $user_id, $username, $user_colour, $guest_username, $custom_profile_url);
 +	}
 +}
 | 
