entityURLGenerator = $entityURLGenerator; $this->markdownParser = $markdownParser; $this->serializer = $serializer; $this->treeBuilder = $treeBuilder; $this->moneyFormatter = $moneyFormatter; $this->siformatter = $SIFormatter; $this->amountFormatter = $amountFormatter; $this->attachmentURLGenerator = $attachmentURLGenerator; $this->FAIconGenerator = $FAIconGenerator; $this->translator = $translator; } public function getFilters() { return [ new TwigFilter('entityURL', [$this, 'generateEntityURL']), new TwigFilter('markdown', [$this->markdownParser, 'markForRendering'], [ 'pre_escape' => 'html', 'is_safe' => ['html'], ]), new TwigFilter('moneyFormat', [$this, 'formatCurrency']), new TwigFilter('siFormat', [$this, 'siFormat']), new TwigFilter('amountFormat', [$this, 'amountFormat']), new TwigFilter('loginPath', [$this, 'loginPath']), ]; } public function getTests() { return [ new TwigTest('instanceof', function ($var, $instance) { return $var instanceof $instance; }), ]; } public function getFunctions() { return [ new TwigFunction('generateTreeData', [$this, 'treeData']), new TwigFunction('attachment_thumbnail', [$this->attachmentURLGenerator, 'getThumbnailURL']), new TwigFunction('ext_to_fa_icon', [$this->FAIconGenerator, 'fileExtensionToFAType']), ]; } public function treeData(AbstractDBElement $element, string $type = 'newEdit'): string { $tree = $this->treeBuilder->getTreeView(\get_class($element), null, $type, $element); return json_encode($tree); } /** * This function/filter generates an path. * * @return string */ public function loginPath(string $path): string { $parts = explode('/', $path); //Remove the part with unset($parts[1]); return implode('/', $parts); } public function generateEntityURL(AbstractDBElement $entity, string $method = 'info'): string { return $this->entityURLGenerator->getURL($entity, $method); } public function formatCurrency($amount, ?Currency $currency = null, int $decimals = 5) { return $this->moneyFormatter->format($amount, $currency, $decimals); } public function siFormat($value, $unit, $decimals = 2, bool $show_all_digits = false) { return $this->siformatter->format($value, $unit, $decimals, $show_all_digits); } public function amountFormat($value, ?MeasurementUnit $unit, array $options = []) { return $this->amountFormatter->format($value, $unit, $options); } }