src/EventSubscriber/BadWordsReplaceSubscriber.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Helper\EnvironmentHelper;
  4. use App\Service\Features;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\HttpKernel\KernelInterface;
  9. class BadWordsReplaceSubscriber implements EventSubscriberInterface
  10. {
  11.     const LIST = [
  12.         'Проститут' => 'Маршрут',
  13.         'Шлюх' => 'Рюх',
  14.         'Путан' => 'Гитан',
  15.         'Секс' => 'Индекс',
  16.         'Минет' => 'Кларнет',
  17.         'Презерватив' => 'Мотив',
  18.         'Окончани' => 'Вещани',
  19.         'Массаж' => 'Дренаж',
  20.         'Анал' => 'Овал',
  21.         'Стриптиз' => 'Тиз',
  22.         'Куннилингус' => 'Тунгус',
  23.         'Интим' => 'Оптим',
  24.         'Транс' => 'Нюанс',
  25.         'Жиголо' => 'Жерло',
  26.         'Фистинг' => 'Фитинг',
  27.         'Анилингус' => 'Аспарагус',
  28.     ];
  29.     public function __construct(
  30.         private EnvironmentHelper $environmentHelper,
  31.         private Features $features,
  32.     ) {}
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         return [
  36.             KernelEvents::RESPONSE => 'replaceBadWords',
  37.         ];
  38.     }
  39.     public function replaceBadWords(ResponseEvent $event): void
  40.     {
  41.         if(false === $this->environmentHelper->isDevOrReviewEnvironment())
  42.             return;
  43.         if(false === $this->features->replace_bad_words())
  44.             return;
  45.         $content $event->getResponse()->getContent();
  46.         if(false === $content)
  47.             return;
  48.         $list self::LIST;
  49.         $searchesCapitalized array_keys($list);
  50.         $replacesCapitalized array_values($list);
  51.         $searchesLower array_map(fn(string $value): string => mb_strtolower($value), $searchesCapitalized);
  52.         $replacesLower array_map(fn(string $value): string => mb_strtolower($value), $replacesCapitalized);
  53.         $searchesUpper array_map(fn(string $value): string => mb_strtoupper($value), $searchesCapitalized);
  54.         $replacesUpper array_map(fn(string $value): string => mb_strtoupper($value), $replacesCapitalized);
  55.         $searches array_merge($searchesCapitalized$searchesLower$searchesUpper);
  56.         $replaces array_merge($replacesCapitalized$replacesLower$replacesUpper);
  57.         $content str_replace($searches$replaces$content);
  58.         $event->getResponse()->setContent($content);
  59.     }
  60. }