src/Twig/Extension/AppExtension.php line 38
<?phpnamespace App\Twig\Extension;use Symfony\Component\HttpFoundation\Session\SessionInterface;use Twig\Extension\AbstractExtension;use Twig\TwigFilter;use Twig\TwigFunction;class AppExtension extends AbstractExtension{public function getFilters(): array{return [// If your filter generates SAFE HTML, you should add a third// parameter: ['is_safe' => ['html']]// Reference: https://twig.symfony.com/doc/3.x/advanced.html#automatic-escapingnew TwigFilter('cart_product', [$this, 'getCartProduct']),new TwigFilter('truncate', [$this, 'truncateFilter']),new TwigFilter('services_by_socialnetwork', [$this, 'getServicesBySocialNetwork']),new TwigFilter('services_by_category', [$this, 'getServicesByCategory']),new TwigFilter('groupby', [$this, 'groupByFilter']),new TwigFilter('customSort', [$this, 'customSort']),];}public function getFunctions(){return [new TwigFunction('cart_product', [$this, 'cart_product']),];}public function getCartProduct($session){// Votre logique pour récupérer les produits du panier icireturn $session->get('products', []);}public function truncateFilter(string $string, int $length = 30, string $suffix = '...'): string{if (mb_strlen($string) <= $length) {return $string;}return rtrim(mb_substr($string, 0, $length)) . $suffix;}public function getServicesBySocialNetwork(array $services){$servicesBySocialNetwork = [];foreach ($services as $service) {$socialNetwork = $service->getSocialNetwork();$position = $service->getPosition();if (!isset($socialNetwork) || empty(trim($socialNetwork))) {continue;}if ($service->isActif() !== true) {continue;}if (!array_key_exists($socialNetwork, $servicesBySocialNetwork)) {$servicesBySocialNetwork[$socialNetwork] = [];}}foreach ($servicesBySocialNetwork as &$services) { // Ajoutez une référence avec "&" pour modifier directement le tableau d'origineusort($services, function ($a, $b) {return $a->getPosition() - $b->getPosition();});}return $servicesBySocialNetwork;}public function getServicesByCategory(array $socialNetwork){$servicesByCategory = [];foreach ($socialNetwork as $service) {$category= $service->getCategory();if (!isset($category) || empty(trim($category)) ) {continue;}if ($service->isActif() !== true) {continue;}if (!array_key_exists($category, $servicesByCategory)) {$servicesByCategory[$category] = [];}$servicesByCategory[$category][] = $service;}return $servicesByCategory;}public function getServicesByProduct(array $socialNetwork){$servicesByProduct = [];foreach ($socialNetwork as $service) {$category= $service->get();if (!isset($category) || empty(trim($category)) ) {continue;}if ($service->isActif() !== true) {continue;}if (!array_key_exists($category, $servicesByCategory)) {$servicesByCategory[$category] = [];}$servicesByCategory[$category][] = $service;}return $servicesByCategory;}public function groupByFilter($array, $groupByField){$result = [];foreach ($array as $item) {$group = $item[$groupByField];if (!array_key_exists($group, $result)) {$result[$group] = [];}$result[$group][] = $item;}return $result;}public function customSort($subscriptions){// Implement your custom sorting logic here and return the sorted array of subscriptions// Example: Sorting by the "createdAt" property in descending orderusort($subscriptions, function ($a, $b) {return $b->getCreateAt() <=> $a->getCreateAt();});return $subscriptions;}}