mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-30 11:40:08 +02:00
[ticket/15538] Split macros and add docblocks
PHPBB3-15538
This commit is contained in:
@@ -15,21 +15,25 @@ namespace phpbb\template\twig\extension;
|
||||
|
||||
use phpbb\template\twig\environment;
|
||||
|
||||
abstract class icon extends \Twig\Extension\AbstractExtension implements \Twig\Extension\GlobalsInterface
|
||||
abstract class icon extends \Twig\Extension\AbstractExtension
|
||||
{
|
||||
protected $twig;
|
||||
/** @var \phpbb\user */
|
||||
protected $user;
|
||||
|
||||
public function __construct(environment $twig, \phpbb\user $user)
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param \phpbb\user $user User object
|
||||
*/
|
||||
public function __construct(\phpbb\user $user)
|
||||
{
|
||||
$this->twig = $twig;
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of this extension.
|
||||
* Returns the name of this extension.
|
||||
*
|
||||
* @return string
|
||||
* @return string The extension name
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
@@ -37,27 +41,10 @@ abstract class icon extends \Twig\Extension\AbstractExtension implements \Twig\E
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of global variables to add to the existing list.
|
||||
* Returns a list of filters to add to the existing list.
|
||||
*
|
||||
* @return array An array of global variables
|
||||
* @return \Twig\TwigFilter[]
|
||||
*/
|
||||
public function getGlobals()
|
||||
{
|
||||
$macros = null;
|
||||
|
||||
try
|
||||
{
|
||||
$macros = $this->twig->loadTemplate('macros.html');
|
||||
}
|
||||
catch (\Twig\Error\Error $e)
|
||||
{
|
||||
}
|
||||
|
||||
return [
|
||||
'macro' => $macros,
|
||||
];
|
||||
}
|
||||
|
||||
public function getFilters()
|
||||
{
|
||||
return [
|
||||
@@ -65,15 +52,25 @@ abstract class icon extends \Twig\Extension\AbstractExtension implements \Twig\E
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of functions to add to the existing list.
|
||||
*
|
||||
* @return \Twig\TwigFunction[]
|
||||
*/
|
||||
public function getFunctions()
|
||||
{
|
||||
return [
|
||||
new \Twig\TwigFunction('Svg_clean', [$this, 'svg_clean'], ['needs_environment' => true]),
|
||||
new \Twig\TwigFunction('Implode_attributes', [$this, 'implode_attributes']),
|
||||
new \Twig\TwigFunction('Implode_classes', [$this, 'implode_classes']),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a path to a PNG template icon.
|
||||
*
|
||||
* @param environment $environment Twig environment object
|
||||
* @param string $icon The icon name
|
||||
* @return string
|
||||
*/
|
||||
protected function png_path(environment $environment, $icon)
|
||||
{
|
||||
$board_url = defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH;
|
||||
@@ -83,6 +80,13 @@ abstract class icon extends \Twig\Extension\AbstractExtension implements \Twig\E
|
||||
return "{$web_path}styles/{$style_path}/template/icons/png/{$icon}.png";
|
||||
}
|
||||
|
||||
/**
|
||||
* Load and clean an SVG template icon.
|
||||
*
|
||||
* @param environment $environment Twig environment object
|
||||
* @param string $icon The icon name
|
||||
* @return string
|
||||
*/
|
||||
protected function svg_clean(environment $environment, $icon)
|
||||
{
|
||||
try
|
||||
@@ -98,7 +102,6 @@ abstract class icon extends \Twig\Extension\AbstractExtension implements \Twig\E
|
||||
$svg = $src->getCode();
|
||||
|
||||
$doc = new \DOMDocument();
|
||||
$doc->formatOutput = false;
|
||||
$doc->preserveWhiteSpace = false;
|
||||
$doc->strictErrorChecking = false;
|
||||
|
||||
@@ -142,90 +145,4 @@ abstract class icon extends \Twig\Extension\AbstractExtension implements \Twig\E
|
||||
|
||||
return $string;
|
||||
}
|
||||
|
||||
protected function implode_attributes(...$arguments)
|
||||
{
|
||||
$string = '';
|
||||
$attributes = [];
|
||||
|
||||
foreach ($arguments as $argument)
|
||||
{
|
||||
if (is_string($argument))
|
||||
{
|
||||
$attributes[] = $argument;
|
||||
}
|
||||
else if (is_array($argument))
|
||||
{
|
||||
foreach ($argument as $key => $value)
|
||||
{
|
||||
if (is_integer($key) && is_string($value))
|
||||
{
|
||||
$attributes[] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$attributes[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($attributes as $attribute => $value)
|
||||
{
|
||||
if (is_string($attribute))
|
||||
{
|
||||
$string .= ' ' . $attribute . '="' . $value . '"';
|
||||
}
|
||||
else
|
||||
{
|
||||
$string .= ' ' . $attribute;
|
||||
}
|
||||
}
|
||||
|
||||
return $string;
|
||||
}
|
||||
|
||||
protected function implode_classes(...$arguments)
|
||||
{
|
||||
$classes = [];
|
||||
|
||||
foreach ($arguments as $argument)
|
||||
{
|
||||
if (is_string($argument))
|
||||
{
|
||||
$classes[] = $argument;
|
||||
}
|
||||
else if (is_array($argument))
|
||||
{
|
||||
foreach ($argument as $key => $value)
|
||||
{
|
||||
if (is_integer($key) && is_string($value))
|
||||
{
|
||||
$classes[] = $value;
|
||||
}
|
||||
else if (is_string($key))
|
||||
{
|
||||
if ($value)
|
||||
{
|
||||
$classes[] = $key;
|
||||
}
|
||||
}
|
||||
else if (is_array($value))
|
||||
{
|
||||
foreach ($value as $class => $condition)
|
||||
{
|
||||
if ($condition)
|
||||
{
|
||||
$classes[] = $class;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$string = implode(' ', array_unique($classes));
|
||||
|
||||
return $string ? ' ' . $string : $string;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user