SERVER_ROOT/templates"),
[
'auto_reload' => true,
'autoescape' => 'name',
'cache' => "$ENV->WEB_ROOT/cache/twig",
#'debug' => DEBUG_MODE,
'strict_variables' => true,
]
);
$Twig->addFilter(new \Twig\TwigFilter(
'article',
function ($word) {
return preg_match('/^[aeiou]/i', $word) ? 'an' : 'a';
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'b64',
function (string $binary) {
return base64_encode($binary);
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'bb_format',
function ($text) {
return new \Twig\Markup(\Text::full_format($text), 'UTF-8');
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'checked',
function ($isChecked) {
return $isChecked ? ' checked="checked"' : '';
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'image',
function ($i) {
return new \Twig\Markup(\ImageTools::process($i, true), 'UTF-8');
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'ipaddr',
function ($ipaddr) {
return new \Twig\Markup(\Tools::display_ip($ipaddr), 'UTF-8');
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'octet_size',
function ($size, array $option = []) {
return \Format::get_size($size, empty($option) ? 2 : $option[0]);
},
['is_variadic' => true]
));
$Twig->addFilter(new \Twig\TwigFilter(
'plural',
function ($number) {
return plural($number);
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'selected',
function ($isSelected) {
return $isSelected ? ' selected="selected"' : '';
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'shorten',
function (string $text, int $length) {
return shortenString($text, $length);
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'time_diff',
function ($time) {
return new \Twig\Markup(time_diff($time), 'UTF-8');
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'ucfirst',
function ($text) {
return ucfirst($text);
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'ucfirstall',
function ($text) {
return implode(' ', array_map(function ($w) {
return ucfirst($w);
}, explode(' ', $text)));
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'user_url',
function ($userId) {
return new \Twig\Markup(\Users::format_username($userId, false, false, false), 'UTF-8');
}
));
$Twig->addFilter(new \Twig\TwigFilter(
'user_full',
function ($userId) {
return new \Twig\Markup(\Users::format_username($userId, true, true, true, true), 'UTF-8');
}
));
$Twig->addFunction(new \Twig\TwigFunction('donor_icon', function ($icon, $userId) {
return new \Twig\Markup(
\ImageTools::process($icon, false, 'donoricon', $userId),
'UTF-8'
);
}));
$Twig->addFunction(new \Twig\TwigFunction('privilege', function ($default, $config, $key) {
return new \Twig\Markup(
(
$default
? sprintf(
' ',
"default_$key",
(isset($default[$key]) && $default[$key] ? ' checked="checked"' : '')
)
: ''
)
. sprintf(
'
',
"perm_$key",
$key,
(empty($config[$key]) ? '' : ' checked="checked"'),
$key,
$key,
\Permissions::list()[$key] ?? "!unknown($key)!"
),
'UTF-8'
);
}));
$Twig->addFunction(new \Twig\TwigFunction('ratio', function ($up, $down) {
return new \Twig\Markup(
\Format::get_ratio_html($up, $down),
'UTF-8'
);
}));
$Twig->addFunction(new \Twig\TwigFunction('resolveCountryIpv4', function ($addr) {
return new \Twig\Markup(
(function ($ip) {
static $cache = [];
if (!isset($cache[$ip])) {
$Class = strtr($ip, '.', '-');
$cache[$ip] = 'Resolving CC...'
. '';
}
return $cache[$ip];
})($addr),
'UTF-8'
);
}));
$Twig->addFunction(new \Twig\TwigFunction('resolveIpv4', function ($addr) {
return new \Twig\Markup(
(function ($ip) {
if (!$ip) {
$ip = '127.0.0.1';
}
static $cache = [];
if (!isset($cache[$ip])) {
$class = strtr($ip, '.', '-');
$cache[$ip] = 'Resolving host' . "\xE2\x80\xA6" . '";
}
return $cache[$ip];
})($addr),
'UTF-8'
);
}));
$Twig->addFunction(new \Twig\TwigFunction('shorten', function ($text, $length) {
return new \Twig\Markup(
shortenString($text, $length),
'UTF-8'
);
}));
$Twig->addTest(
new \Twig\TwigTest('numeric', function ($value) {
return is_numeric($value);
})
);
return $Twig;
}
}