src/Twig/AppExtension.php line 66

Open in your IDE?
  1. <?php
  2. /**
  3.  * Description of AppExtension
  4.  * Ajout de filtre pour twig
  5.  * @author steph
  6.  * @source : https://symfony.com/doc/current/templating/twig_extension.html
  7.  */
  8. namespace Acme\SudcmsBundle\Twig;
  9. use Acme\SudcmsBundle\Service\UrlizerService;
  10. use DateTime;
  11. use Twig\Extension\AbstractExtension;
  12. use Twig\TwigFilter;
  13. use Twig\TwigFunction;
  14. class AppExtension extends AbstractExtension {
  15.     public function getFilters() {
  16.         return [
  17.             new TwigFilter('urlrewrite', [$this, 'urlRewrite']),
  18.             new TwigFilter('html_entity_decode', [$this, 'html_entity_decode']),
  19.             new TwigFilter('timeDiff', [$this, 'timeDiff']),
  20.         ];
  21.     }
  22.     public function getFunctions() {
  23.         return [
  24.             new TwigFunction('webp', [$this, 'webp']),
  25.             new TwigFunction('modOptions', [$this, 'modOptions']),
  26.             new TwigFunction('verifIsIn', [$this, 'verifIsIn']),
  27.             new TwigFunction('telephonize', [$this, 'telephonize']),
  28.         ];
  29.     }
  30.     public function timeDiff($datetime) {
  31.         $datetime1 = new DateTime($datetime);
  32.         $datetime2 = new DateTime(date('Y-m-d H:i:s'));
  33.         $interval = $datetime2->diff($datetime1);
  34.         $nbDays = $interval->format('%d');
  35.         $nbHours = $interval->format('%h');
  36.         $nbMin = $interval->format('%i');
  37.         if ($nbDays > 0) {
  38.             return $nbDays . ' jours';
  39.         } elseif ($nbHours > 0) {
  40.             return $nbHours . 'h';
  41.         } elseif ($nbMin == 0) {
  42.             return 'moins d\'une minute';
  43.         } else {
  44.             return $nbMin . 'min';
  45.         }
  46.     }
  47.     public function urlRewrite($string) {
  48.         $urlizer = new UrlizerService();
  49.         return $urlizer->urlize($string);
  50.     }
  51.     public function html_entity_decode($string) {
  52.         return html_entity_decode($string, ENT_QUOTES);
  53.     }
  54.     public function webp($webpSupported, $media_file) {
  55.         if ($webpSupported) {
  56.             $media_file = str_replace(['.png', '.jpg', '.jpeg', '.gif'], '.webp', $media_file);
  57.         }
  58.         return $media_file;
  59.     }
  60.     public function modOptions($optionsModule) {
  61.         $listeModOpt = [];
  62.         $cmptOpt = 0;
  63.         foreach ($optionsModule as $key => $modOpt) {
  64.             $listeModOpt[$modOpt->getOptionCodeInterne()] = $modOpt->getOptionValue();
  65.             $cmptOpt++;
  66.         }
  67.         return $listeModOpt;
  68.     }
  69.     public function verifIsIn($is, $array) {
  70.         $return = 0;
  71.         $tabVerif = explode(",", $array);
  72.         foreach ($tabVerif as $taVe) {
  73.             if ($taVe == $is) {
  74.                 $return = 1;
  75.             }
  76.         }
  77.         return $return;
  78.     }
  79.     public function telephonize($number) {
  80.         if ($number) {
  81.             $number = str_replace(" ", "", $number);
  82.             $number = str_replace(".", "", $number);
  83.             $number = str_replace("/", "", $number);
  84.             $number = str_replace("-", "", $number);
  85.             $number = substr($number, 1);
  86.             $number = "+33" . $number;
  87.         }
  88.         return $number;
  89.     }
  90. }