bundles/SaintElmos/BaseBundle/Templating/Helper/FrontendHelper.php line 440

Open in your IDE?
  1. <?php
  2. namespace SaintElmos\BaseBundle\Templating\Helper;
  3. use SaintElmos\BaseBundle\Services\ImageResponsive;
  4. use SimpleXMLElement;
  5. use Symfony\Component\Form\Extension\Templating\TemplatingRendererEngine;
  6. use Symfony\Component\Templating\Helper\Helper;
  7. use Pimcore\Model\Asset;
  8. use Pimcore\Model\Document;
  9. use Pimcore\Model\Document\Service;
  10. use Pimcore\Model\Asset\Image\Thumbnail\Config\Listing;
  11. use Symfony\Component\Templating\Loader\Loader;
  12. use Symfony\Component\Templating\TemplateNameParser;
  13. class FrontendHelper extends Helper
  14. {
  15.     public function getName()
  16.     {
  17.         return 'FrontendHelper';
  18.     }
  19. //************************************************************************************************
  20.     /*
  21.      * ++++++ Ausgabebeispiel:  echo $this->frontendHelper()->myFunction(); ++++++
  22.      *
  23.      * createMultiselect()      Erzeugt ein Mehrfach Auswahl Feld
  24.      *
  25.      * showTemplateName()       Gibt den Templat-Namen eines Sippets zurück
  26.      *
  27.      * showTextarea()           gibt Textarea bereinigt zurück
  28.      *
  29.      * idToPath()               Wandelt ID in Pfad um
  30.      *
  31.      * pathToId()               Wandelt Pfad in ID um
  32.      *
  33.      * allowOpen()              IP Überprüfung
  34.      *
  35.      * compress()               Entfernung von Zeilenumbrüchen und Kommentare => Ausgabe in einer Zeile
  36.      *
  37.      * showSnippet()            includiert gerendertes Snippet
  38.      *
  39.      * checkMultiselect()       Prüft ein Mehrfach Auswahl Feld
  40.      *
  41.      * db()                     Datenbank Zugang
  42.      *
  43.      * getStaticFile()          Setzt Parameter um Cache zu umgehen
  44.      *
  45.      * changeTextarea()         gibt Textarea bereinigt (Entities umwandeln) zurück
  46.      *
  47.      * getImgResponsive()       Erzeugt Container /Img mit Thumbnails für Divice Wechsel
  48.      *
  49.      * getHrefElemente()        zerlegt <a href= "" target="" ... und gibt den Value einzelner Attribute zurück
  50.      *
  51.      * getHref()                <a href= "" target="" ... > zurück
  52.      *
  53.      * clearTelnumber()         Säubert Telefonnummer (technisch kor. zum telefonieren)
  54.      *
  55.      */
  56. //************************************************************************************************
  57.     /**
  58.      * Gibt den Templat-Namen eines Sippets zurück
  59.      *
  60.      * @param int $id
  61.      * @return string
  62.      */
  63.     public function showTemplateName($id)
  64.     {
  65.         $document \Pimcore\Model\Document::getById($id);
  66.         $templatepath  $document->getTemplate();
  67.         $file explode(':' $templatepath);
  68.         $count_elemente count($file)-1;
  69.         $name str_replace('.html.twig'''$file[$count_elemente]);
  70.         return $name;
  71.     }
  72. //************************************************************************************************
  73.     /**
  74.      * gibt Textarea bereinigt zurück
  75.      *
  76.      * @param mixed $that
  77.      * @param string $textareaName
  78.      * @return string
  79.      */
  80.     public function showTextarea($that$textareaName)
  81.     {
  82.         return trim(nl2br(html_entity_decode($that->textarea($textareaName))));
  83.     }
  84. //************************************************************************************************
  85.     /**
  86.      * Wandelt ID in Pfad um
  87.      *
  88.      * @param string $element D für Document | A für Asset  | O für Object
  89.      * @param int $id
  90.      * @return string
  91.      */
  92.     public function idToPath($element$id)
  93.     {
  94.         $id trim($id);
  95.         $pos strpos($id'/');
  96.         $ausgabe '#';
  97.         if ($pos === false)
  98.         {
  99.             try
  100.             {
  101.                 switch ($element)
  102.                 {
  103.                     case 'D';
  104.                         if (is_object(\Pimcore\Model\Document::getById($id)))
  105.                         {
  106.                             $ausgabe \Pimcore\Model\Document::getById($id)->getFullPath();
  107.                         }
  108.                         break;
  109.                     case 'A';
  110.                         if (is_object(\Pimcore\Model\Asset::getById($id)))
  111.                         {
  112.                             $ausgabe \Pimcore\Model\Asset::getById($id)->getFullPath();
  113.                         }
  114.                         if (!is_file($_SERVER["DOCUMENT_ROOT"] . '/var/assets' $ausgabe))
  115.                         {
  116.                             $ausgabe null;
  117.                         }
  118.                         break;
  119.                     case 'O';
  120.                         if (is_object(\Pimcore\Model\DataObject::getById($id)))
  121.                         {
  122.                             $ausgabe \Pimcore\Model\DataObject::getById($id)->getFullPath();
  123.                         }
  124.                         break;
  125.                 }
  126.             } catch (Exception $e)
  127.             {
  128.                 $ausgabe null;
  129.             }
  130.         }
  131.         return $ausgabe;
  132.     }
  133. //************************************************************************************************
  134.     /**
  135.      * Wandelt Pfad in ID um
  136.      *
  137.      * @param string $element D für Document | A für Asset  | O für Object
  138.      * @param string $path
  139.      * @return String
  140.      */
  141.     function pathToId($element$path)
  142.     {
  143.         $pos strpos($path'/');
  144.         if ($pos === false)
  145.         {
  146.             $ausgabe '0';
  147.         }
  148.         else
  149.         {
  150.             switch ($element)
  151.             {
  152.                 case 'D';
  153.                     if (is_object(\Pimcore\Model\Document::getByPath($path)))
  154.                     {
  155.                         $ausgabe \Pimcore\Model\Document::getByPath($path)->getId();
  156.                     }
  157.                     break;
  158.                 case 'A';
  159.                     if (is_object(\Pimcore\Model\Asset::getByPath($path)))
  160.                     {
  161.                         $ausgabe \Pimcore\Model\Asset::getByPath($path)->getId();
  162.                     }
  163.                     if (!is_file($_SERVER["DOCUMENT_ROOT"] . '/var/assets' $path))
  164.                     {
  165.                         $ausgabe null;
  166.                     }
  167.                     break;
  168.                 case 'O';
  169.                     if (is_object(\Pimcore\Model\DataObject::getByPath($path)))
  170.                     {
  171.                         $ausgabe \Pimcore\Model\DataObject::getByPath($path)->getId();
  172.                     }
  173.                     break;
  174.             }
  175.         }
  176.         return $ausgabe;
  177.     }
  178. //************************************************************************************************
  179.     /**
  180.      * IP Überprüfung
  181.      *
  182.      * @return bool
  183.      */
  184.     public function allowOpen($that)
  185.     {
  186.         $erlaubte_ip $that->getParameter('ip_whitelist');
  187.         $erlaubteipArray explode(','$erlaubte_ip);
  188.         $myIP = (string)$_SERVER["REMOTE_ADDR"];
  189.         return (in_array($myIP$erlaubteipArray)) ? true false;
  190.     }
  191. //************************************************************************************************
  192.     /**
  193.      * Entfernung von Zeilenumbrüchen und Kommentare => Ausgabe in einer Zeile
  194.      *
  195.      * @param string $buffer
  196.      * @return string
  197.      */
  198.     public function compress($buffer)
  199.     {
  200.         // remove comments
  201.         $buffer preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!'''$buffer);
  202.         // remove tabs, newlines, etc.
  203.         $buffer str_replace(array("\r\n""\r""\n""\t"), ''$buffer);
  204.         //remove multiple spaces
  205.         $buffer preg_replace('/\s\s+/'' '$buffer);
  206.         return $buffer;
  207.     }
  208. //************************************************************************************************
  209.     /**
  210.      * includiert gerendertes Snippet
  211.      *
  212.      * @param mixed $datei
  213.      * @return
  214.      *
  215.      * Ausgabebeispiel:  echo $this->frontendHelper()->getSnippet('6',['parameter1' => 'Ausgabe Param 1', 'parameter2'=>'Ausgabe Param 1']);
  216.      * Ausgabebeispiel Parameter im Snippet:  echo  $this->getParam('parameter1') /  oder print_r(getParams());
  217.      */
  218.     function showSnippet($file,$optionalParamsArray=array(),$useLayout=false)
  219.     {
  220.         $file trim($file);
  221.         if (is_numeric((int)$file) && (int)$file != 0)
  222.         {
  223.             $id = (int)$file;
  224.             if (is_object(\Pimcore\Model\Document::getById($id)))
  225.             {
  226.                 $path \Pimcore\Model\Document::getById($id)->getFullPath();
  227.             }
  228.         }
  229.         else
  230.         {
  231.             if (is_object(\Pimcore\Model\Document::getByPath($file)))
  232.             {
  233.                 $id = (int)\Pimcore\Model\Document::getByPath($file)->getId();
  234.             }
  235.             $path $file;
  236.         }
  237.         if (\Pimcore\Model\Document\Service::pathExists($path))
  238.         {
  239.             $isFileExists true;
  240.         }
  241.         else
  242.         {
  243.             $isFileExists false;
  244.         }
  245.         if($isFileExists)
  246.         {
  247.             $doc =  \Pimcore\Model\Document::getById($id);
  248.             $mySnippet \Pimcore\Model\Document\Service::render($doc$optionalParamsArray$useLayout);
  249.             return $mySnippet;
  250.         }
  251.         else
  252.         {
  253.             return 'ERROR => File not exist!';
  254.         }
  255.     }
  256. //************************************************************************************************
  257.     /**
  258.      * random Farbcode für Demo-Container
  259.      *
  260.      */
  261.     function generateRandomColor(){
  262.         $randomcolor '#' strtoupper(dechex(rand(0,10000000)));
  263.         if (strlen($randomcolor) != 7){
  264.             $randomcolor str_pad($randomcolor10'0'STR_PAD_RIGHT);
  265.             $randomcolor substr($randomcolor,0,7);
  266.         }
  267.         return $randomcolor;
  268.     }
  269. //************************************************************************************************
  270.     /**
  271.      * Prüft ein Mehrfach Auswahl Feld
  272.      *
  273.      * @param string $inputStr
  274.      * @param string $check
  275.      * @return bool
  276.      */
  277.     function checkMultiselect($inputStr$check)
  278.     {
  279.         $inputArray explode(','$inputStr);
  280.         $result = (in_array($check$inputArray)) ? true false;
  281.         return $result;
  282.     }
  283. //************************************************************************************************
  284.     /**
  285.      * Datenbank Zugang
  286.      *
  287.      * BEISPIEL:
  288.      *  $sql = "SELECT * FROM  properties   WHERE  name = 'breadcrumb_StartNode'";
  289.     $properties = $db->fetchAll($sql);
  290.     foreach ($properties as $key => $daten)
  291.     {
  292.     error_log(print_r($daten,true));
  293.     echo $daten['data'];
  294.     echo '<br />';
  295.     }
  296.      *
  297.      */
  298.     function db()
  299.     {
  300.         $db \Pimcore::getContainer()->get('doctrine.dbal.default_connection');
  301.         return $db;
  302.     }
  303. //************************************************************************************************
  304.     /**
  305.      * Setzt Timestamp als Parameter
  306.      *
  307.      * @param string $path
  308.      * @return string
  309.      */
  310.     function getStaticFile($path)
  311.     {
  312.         $timestamp '?mt=' microtime(true);
  313.         $timestamp str_replace("."""$timestamp);
  314.         $x = (DEBUG)? '_ja' '_nein' ;
  315.         if(DEBUG)
  316.         {
  317.             return $path $timestamp;
  318.         }
  319.         else
  320.         {
  321.             return $path;
  322.         }
  323.     }
  324.     //************************************************************************************************
  325.     /**
  326.      * gibt Textarea bereinigt (Entities umwandeln) zurück
  327.      *
  328.      * @param mixed $that
  329.      * @param string $textareaName
  330.      * @return string
  331.      */
  332.     public function changeTextarea($text)
  333.     {
  334.         return trim(nl2br(html_entity_decode($text)));
  335.     }
  336. //************************************************************************************************
  337.     /**
  338.      * Returns responsive image
  339.      * @param $propertyArray
  340.      * @return string
  341.      */
  342.     public function getImgResponsive($propertyArray)
  343.     {
  344.         /**
  345.          * @var $service ImageResponsive
  346.          */
  347.         $service \Pimcore::getContainer()->get(ImageResponsive::class);
  348.         return $service->getImgResponsive($propertyArray);
  349.     }
  350.     //************************************************************************************************
  351.     //************************************************************************************************
  352.     /**
  353.      * Returns Attribute Value
  354.      * @param string $href
  355.      * @param string $attribut
  356.      * @return string
  357.      */
  358.     public function getHrefElemente($href,$attribut)
  359.     {
  360.         $a = new SimpleXMLElement($href);
  361.         $attribut_value '';
  362.         if($attribut == 'text'){
  363.             $attribut_value = (string)$a[0];
  364.         } else {
  365.             $attribut_value = (string)$a[$attribut];
  366.         }
  367.         return $attribut_value ;
  368.     }
  369.     //************************************************************************************************
  370.     //************************************************************************************************
  371.     /**
  372.      * Returns Attribute Value
  373.      * @param string $href
  374.      * @param string $attribut
  375.      * @return string
  376.      */
  377.     public function getHref($href)
  378.     {
  379.         $a = new SimpleXMLElement($href);
  380.         $replace = (string)$a[0] . '</a>';
  381.         $result str_replace($replace""$href);
  382.         return $result;
  383.     }
  384.     //************************************************************************************************
  385.     //************************************************************************************************
  386.     /**
  387.      * Returns Attribute Value
  388.      * @param string $telnumber
  389.      * @return string
  390.      */
  391.     public function clearTelnumber($telnumber)
  392.     {
  393.         $tel preg_replace("<^\\+>""00"$telnumber);
  394.         $tel_clear preg_replace("<\\D+>"""$tel);
  395.         return $tel_clear;
  396.     }
  397.     //************************************************************************************************
  398. }