![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/CoreBundle/Twig/Extension/ |
<?php declare(strict_types=1); namespace Mautic\CoreBundle\Twig\Extension; use Knp\Menu\ItemInterface; use Knp\Menu\Matcher\MatcherInterface; use Mautic\CoreBundle\Twig\Helper\MenuHelper; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; class MenuExtension extends AbstractExtension { public function __construct( protected MenuHelper $menuHelper ) { } public function getFunctions() { return [ new TwigFunction('menuRender', [$this, 'menuRender'], ['is_safe' => ['all']]), new TwigFunction('parseMenuAttributes', [$this, 'parseMenuAttributes'], ['is_safe' => ['all']]), new TwigFunction('buildMenuClasses', [$this, 'buildMenuClasses'], ['is_safe' => ['all']]), ]; } /** * Renders a menu with the specified renderer. * * @param ItemInterface|string|array<mixed> $menu * @param array<mixed> $options */ public function menuRender($menu, array $options = [], ?string $renderer = null): string { return $this->menuHelper->render($menu, $options, $renderer); } /** * Parses attributes for the menu view. * * @param array<string,string> $attributes * @param array<string,string> $overrides */ public function parseMenuAttributes(array $attributes, array $overrides = []): string { return $this->menuHelper->parseAttributes($attributes, $overrides); } /** * Concats the appropriate classes for menu links. * * @param array<string,string> $options * * @return array<mixed> */ public function buildMenuClasses(ItemInterface $item, ?MatcherInterface $matcher, array $options, ?string $extraClasses): array { $isAncestor = null !== $matcher && $matcher->isAncestor($item, (int) $options['matchingDepth']); $isCurrent = null !== $matcher && $matcher->isCurrent($item); $class = $item->getAttribute('class'); $classes = ''; $classesArray = []; $classes .= ($class) ? " {$class}" : ''; $classes .= ($extraClasses) ? " {$extraClasses}" : ''; $classes .= ($isCurrent) ? " {$options['currentClass']}" : ''; $classes .= ($isAncestor) ? " {$options['ancestorClass']}" : ''; $classes .= ($isAncestor && $this->menuHelper->invisibleChildSelected($item, $matcher)) ? " {$options['currentClass']}" : ''; $classes .= ($item->actsLikeFirst() && isset($options['firstClass'])) ? " {$options['firstClass']}" : ''; $classes .= ($item->actsLikeLast() && isset($options['lastClass'])) ? " {$options['lastClass']}" : ''; if ('' !== $classes) { $classesArray = ['class' => trim($classes)]; } return $classesArray; } }