diff options
| author | Maat <maat-pub@mageia.biz> | 2020-05-09 01:15:08 +0200 | 
|---|---|---|
| committer | Maat <maat-pub@mageia.biz> | 2020-05-09 01:15:08 +0200 | 
| commit | 6985226b17e8a0ef0a720bf1d12fe0c216e13dab (patch) | |
| tree | 116d2565ac02c40abe0548863c6badf8ec3e1d1e /phpBB/phpbb/template/twig/extension | |
| parent | 8ea437e30605e0f66b5220bf904a61d7c1d11ddd (diff) | |
| parent | 8d00784dfe2c8bcb10843ff70b4cfa998d703285 (diff) | |
| download | forums-master.tar forums-master.tar.gz forums-master.tar.bz2 forums-master.tar.xz forums-master.zip | |
Diffstat (limited to 'phpBB/phpbb/template/twig/extension')
| -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 | 84 | 
3 files changed, 228 insertions, 0 deletions
| diff --git a/phpBB/phpbb/template/twig/extension/avatar.php b/phpBB/phpbb/template/twig/extension/avatar.php new file mode 100644 index 0000000000..7a17fd4b42 --- /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..cbf6e505c5 --- /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..ef149693a0 --- /dev/null +++ b/phpBB/phpbb/template/twig/extension/username.php @@ -0,0 +1,84 @@ +<?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); +	} +} | 
