src/Model/Templating/Templating.php line 1874
<?php/*** Created by PhpStorm.* User: mirko* Date: 16/02/2019* Time: 14:03*/namespace App\Model\Templating;use App\Controller\ServiziController;use App\Entity\AlberoMenuProdotti;use App\Entity\Categorie;use App\Entity\MetaTags;use App\Entity\MetaTagsDettagli;use App\Entity\PagineEComponenti;use App\Model\Caching\Caching_Categorie;use App\Model\Carrello\RitornoCalcoloPrezzoNetto;use App\Model\Costanti;use App\Model\Entita\AlberoCategorie;use App\Model\Entita\AssociazioneAttributi;use App\Model\Entita\Attributi;use App\Model\Entita\Categoria;use App\Model\Entita\Destinazioni;use App\Model\Entita\MappaCategoriaArticolo;use App\Model\Entita\RigaCarrello;use App\Model\Entita\TipologiaPreimpostataLista;use App\Model\Entita\Variante;use App\Model\GestioneTagHTML\GestioneTagHTML;use App\Model\RecuperoDati;use App\Model\SubstringWithFind;use App\Model\Translating\Translating;use Monolog\Logger;use Psr\Log\LoggerInterface;use Symfony\Bridge\Doctrine\ManagerRegistry;use Symfony\Bridge\Twig\AppVariable;use Symfony\Component\Routing\Router;use Twig\Environment;use Twig\Error\LoaderError;use Twig\Error\RuntimeError;use Twig\Error\SyntaxError;/****/class Templating{/*** Templating constructor.*/public function __construct(){}/*** @param $stringa* @return RitornoDatoDb*/public static function ConvertiStringaDatoDb($stringa){$ritorno = new RitornoDatoDb();$sbComponentId = SubstringWithFind::SubstringWithFind('component-id="','"',$stringa,0,true);$ritorno->componentId = $sbComponentId->substring;$sbClickAutomatico = SubstringWithFind::SubstringWithFind('data-dv-clic-linkautomatico="','"',$stringa,0,true);$ritorno->clickLinkAutomatico = $sbClickAutomatico->substring;$sbClick = SubstringWithFind::SubstringWithFind('data-dv-clic-link="','"',$stringa,0,true);$ritorno->clickLink = $sbClick->substring;$sbPercorso = SubstringWithFind::SubstringWithFind('percorso="','"',$stringa,0,true);$ritorno->percorso = $sbPercorso->substring != '' ? explode(",", $sbPercorso->substring) : array();$sbNomeColonna = SubstringWithFind::SubstringWithFind('nome-colonna="','"',$stringa,0,true);$ritorno->nomeColonna = $sbNomeColonna->substring;$sbTipoDato = SubstringWithFind::SubstringWithFind('tipo-dato="','"',$stringa,0,true);$ritorno->tipoDato = strtolower($sbTipoDato->substring);$sbDatoSpeciale = SubstringWithFind::SubstringWithFind('dato-speciale="','"',$stringa,0,true);$ritorno->datoSpeciale = $sbDatoSpeciale->substring;$sbStyle = SubstringWithFind::SubstringWithFind('style="','"',$stringa,0,true);$ritorno->style = $sbStyle->substring;$sbId = SubstringWithFind::SubstringWithFind(' id="','"',$stringa,0,true);$ritorno->id = $sbId->substring;$sbClass = SubstringWithFind::SubstringWithFind('class="','"',$stringa,0,true);$ritorno->class = $sbClass->substring;$sbImmagine = SubstringWithFind::SubstringWithFind('columndbimmagine="','"',$stringa,0,true);$img = strtolower($sbImmagine->substring);$sbsNumDec = SubstringWithFind::SubstringWithFind('numero-decimali="','"',$stringa,0,true);$ritorno->numeroDecimali = $sbsNumDec->substring;$sbSeparatoreMigliaia = SubstringWithFind::SubstringWithFind('separatore-migliaia="','"',$stringa,0,true);$ritorno->separatoreMigliaia = $sbSeparatoreMigliaia->substring;$sbSeparatoreDecimali = SubstringWithFind::SubstringWithFind('separatore-decimali="','"',$stringa,0,true);$ritorno->separatoreDecimali = $sbSeparatoreDecimali->substring;if ($img == '1'){$ritorno->immagine = true;}else {$ritorno->immagine = false;}return $ritorno;}/*** @param AppVariable|null $twigAppArray* @return string*/public static function estraiParametriGetDaTwigAppArray($twigAppArray = null){$ritorno = '';if ($twigAppArray) {if ($twigAppArray->getRequest()) {if ($twigAppArray->getRequest()->getUri()) {$requestUri = $twigAppArray->getRequest()->getRequestUri();//Estraggo solo i parametri$indicePuntoDiDom = strpos($requestUri, '?', 0);if ($indicePuntoDiDom) {//Se non c'è il punto di domanda vuol dire che non sono presenti parametri GET$ritorno = substr($requestUri, $indicePuntoDiDom, strlen($requestUri) - $indicePuntoDiDom);}}}}return $ritorno;}public static function ritornaStringaPagination($mostraAvanti, $mostraIndietro, $nrPagine, ServiziController $serviziController, $routeRiferimento, Router $router, $datiRiferimento, LoggerInterface $logger = null, $twigAppArray = null){$paginaCorrente = 0;$pagineTotali = $datiRiferimento["nrPagine"];$htmlRitorno = '<nav aria-label="..."><ul class="pagination">';if (array_key_exists(Costanti::T_PAGINA_CORRENTE, $datiRiferimento)){$paginaCorrente = $datiRiferimento[Costanti::T_PAGINA_CORRENTE];}if ($paginaCorrente == 0){$paginaCorrente = 1;}$arrayXRoute = array('page' => 1);//ottengo eventuali parametri get da appendere alla fine$parametriGet = self::estraiParametriGetDaTwigAppArray($twigAppArray);if ($datiRiferimento['cat1'] != ''){$arrayXRoute['categoria_1'] = str_replace('/', '£-£',$datiRiferimento['cat1']);}if ($datiRiferimento['cat2'] != ''){$arrayXRoute['categoria_2'] = str_replace('/', '£-£',$datiRiferimento['cat2']);}if ($datiRiferimento['cat3'] != ''){$arrayXRoute['categoria_3'] = str_replace('/', '£-£',$datiRiferimento['cat3']);}if ($datiRiferimento['cat4'] != ''){$arrayXRoute['categoria_4'] = str_replace('/', '£-£',$datiRiferimento['cat4']);}if ($datiRiferimento['cat5'] != ''){$arrayXRoute['categoria_5'] = str_replace('/', '£-£',$datiRiferimento['cat5']);}if ($mostraIndietro == '1' && $paginaCorrente > 1){$arrayXRoute['page'] = $paginaCorrente - 1;$htmlRitorno .= '<li><a href="' . $router->generate($routeRiferimento, $arrayXRoute) . $parametriGet . '" aria-label="Previous"><span aria-hidden="true">«</span></a></li>';}$divisionePagine = ceil($nrPagine / 2) - 1;$min = $paginaCorrente - $divisionePagine;$max = $paginaCorrente + $divisionePagine;if ($min <= 0){$abs = abs($min) + 1;$min = $min + $abs;$max = $max + $abs;}for($i = $min; $i <= $max; $i++) {if ($i <= $pagineTotali) {$arrayXRoute['page'] = $i;$attuale = ($i == $paginaCorrente ? true : false);$htmlRitorno .= '<li' . ($attuale ? ' class="active" ' : '') . '><a href="' . $router->generate($routeRiferimento, $arrayXRoute) . '">' . $i . ($attuale ? '<span class="sr-only">(current)</span>' : '') . '</a></li>';}}if ($mostraAvanti == '1'){if ($paginaCorrente + 1 <= $pagineTotali) {$arrayXRoute['page'] = $paginaCorrente + 1;$htmlRitorno .= '<li><a href="' . $router->generate($routeRiferimento, $arrayXRoute) . '" aria-label="Next"><span aria-hidden="true">»</span></a></li>';}}return $htmlRitorno;}public static function convertiTestataDivSecondario($elementoCompleto, ServiziController $serviziController, Router $router, PagineEComponenti $pagina, $datiRiferimento = null, LoggerInterface $logger = null, $ordineCasuale = false){$sbStyle = SubstringWithFind::SubstringWithFind('style="','"',$elementoCompleto,0,true);$stile = $sbStyle->substring;$sbId = SubstringWithFind::SubstringWithFind('id="','"',$elementoCompleto,0,true);$id = $sbId->substring;$sbClass = SubstringWithFind::SubstringWithFind('class="','"',$elementoCompleto,0,true);$class = $sbClass->substring;$sbLinkAuto = SubstringWithFind::SubstringWithFind('data-dv-clic-linkautomatico="','"',$elementoCompleto,0,true);$linkAuto = $sbLinkAuto->substring;$sbClickLink = SubstringWithFind::SubstringWithFind('data-dv-clic-link="','"',$elementoCompleto,0,true);$clickLink = $sbClickLink->substring;if ($clickLink != ''){$linkFinale = $clickLink;}else{$linkFinale = Templating::creaLinkAutomatico($linkAuto, $router, $datiRiferimento, $pagina, $ordineCasuale, $logger, $serviziController);}return '<a href="' . ($clickLink != '' ? $clickLink : $linkFinale) . '" style="' . $stile . '" class="' . $class . '" id="' . $id . '">';}/*** @param $valoriSupporto array* @return array* <p>Questa funzione prende l'array valori di supporto e ritorna un array con le categorie esistenti e con pagina 1</p>*/static function ottieniArrayRoutePerNavigazioneCategorie($valoriSupporto, LoggerInterface $logger = null){$arrayRitorno = array();if (array_key_exists('cat1', $valoriSupporto) && $valoriSupporto['cat1'] != ''){$arrayRitorno['cat1'] = $valoriSupporto['cat1'];}if (array_key_exists('cat2', $valoriSupporto) && $valoriSupporto['cat2'] != ''){$arrayRitorno['cat2'] = $valoriSupporto['cat2'];}if (array_key_exists('cat3', $valoriSupporto) && $valoriSupporto['cat3'] != ''){$arrayRitorno['cat3'] = $valoriSupporto['cat3'];}if (array_key_exists('cat4', $valoriSupporto) && $valoriSupporto['cat4'] != ''){$arrayRitorno['cat4'] = $valoriSupporto['cat4'];}if (array_key_exists('cat5', $valoriSupporto) && $valoriSupporto['cat5'] != ''){$arrayRitorno['cat5'] = $valoriSupporto['cat5'];}$elementoRiferimento = $valoriSupporto[Costanti::T_LISTA_CATEGORIE];if (!array_key_exists('cat1', $valoriSupporto) || (array_key_exists('cat1', $valoriSupporto) && $valoriSupporto['cat1'] == '')){$arrayRitorno['categoria_1'] = str_replace('/', '£-£', $elementoRiferimento->categoria->nomeUnivoco);} else if (!array_key_exists('cat2', $valoriSupporto) || (array_key_exists('cat2', $valoriSupporto) && $valoriSupporto['cat2'] == '')){$arrayRitorno['categoria_2'] = str_replace('/', '£-£', $elementoRiferimento->categoria->nomeUnivoco);} else if (!array_key_exists('cat3', $valoriSupporto) || (array_key_exists('cat3', $valoriSupporto) && $valoriSupporto['cat3'] == '')){$arrayRitorno['categoria_3'] = str_replace('/', '£-£', $elementoRiferimento->categoria->nomeUnivoco);} else if (!array_key_exists('cat4', $valoriSupporto) || (array_key_exists('cat4', $valoriSupporto) && $valoriSupporto['cat4'] == '')){$arrayRitorno['categoria_4'] = str_replace('/', '£-£', $elementoRiferimento->categoria->nomeUnivoco);} else if (!array_key_exists('cat5', $valoriSupporto) || (array_key_exists('cat5', $valoriSupporto) && $valoriSupporto['cat5'] == '')){$arrayRitorno['categoria_5'] = str_replace('/', '£-£', $elementoRiferimento->categoria->nomeUnivoco);}if ($logger){$logger->debug('Elemento riferimento: ' . print_r($elementoRiferimento, true));$logger->debug('Array ritorno: ' . print_r($arrayRitorno, true));}return $arrayRitorno;}/*** @param $valoreLinkAutomatico string* @param Router $router* @param $valoriSupporto array* @return string*/static function creaLinkAutomatico($valoreLinkAutomatico, Router $router, $valoriSupporto, PagineEComponenti $pagina, $righeCasuali = false, LoggerInterface $logger = null, ServiziController $servizi = null){$urlRitorno = '';try {switch ($valoreLinkAutomatico) {case 'pc_svuotaCarrello':{$urlRitorno = $router->generate('carrello_svuota_carrello');break;}case 'pc_applicaCoupon':{break;}case 'pc_checkout':{$urlRitorno = $router->generate('carrello_finalizza');break;}case 'pfc_completa':{break;}case 'cac_navigaCategoria':{if ($pagina->getTipoPagina() == 'componenteAlberoCategorie'){$urlRitorno = $router->generate('home_shop_comune_naviga', Templating::ottieniArrayRoutePerNavigazioneCategorie($valoriSupporto, $logger));}break;}case 'cu_profilo':{$urlRitorno = $router->generate('profilo');break;}case 'cu_gestisciDestinazioni':{$urlRitorno = $router->generate('profilo_destinazioni_lista');break;}case 'cu_gestisciMailSecondarie':{$urlRitorno = $router->generate('mailSecondarie_lista');break;}case 'cu_cambiaMail':{$urlRitorno = $router->generate('profilo_modifica');break;}case 'cu_cambiaPassword':{$urlRitorno = $router->generate('profile_change_password');break;}case 'rc_eliminaRiga':{$urlRitorno = $router->generate('carrello_elimina_riga', array('idRiga' => get_object_vars($valoriSupporto[Costanti::T_RIGHE_CARRELLO])['id']));break;}case 'rc_dettaglioArticolo':{$urlRitorno = $router->generate('home_shop_comune_dettaglio_prodotto', array('codice' => $servizi->creaCodiceIdMappaPerDettaglioProdotto($valoriSupporto[Costanti::T_RIGHE_CARRELLO])));break;}case 'ro_dettaglioArticolo':case 'ros_dettaglioArticolo':{if ($pagina->getTipoPagina() == 'paginaDettaglioArticolo'){$urlRitorno = $router->generate('home_shop_comune_dettaglio_prodotto', array('codice' => $servizi->creaCodiceIdMappaPerDettaglioProdotto($valoriSupporto[Costanti::T_DETTAGLIO_ARTICOLO_IDENTIFICATO])));}else {if ($righeCasuali) {$urlRitorno = $router->generate('home_shop_comune_dettaglio_prodotto', array('codice' => $servizi->creaCodiceIdMappaPerDettaglioProdotto($valoriSupporto[Costanti::T_RIGHE_SHOP_CASUALI])));} else {$urlRitorno = $router->generate('home_shop_comune_dettaglio_prodotto', array('codice' => $servizi->creaCodiceIdMappaPerDettaglioProdotto($valoriSupporto[Costanti::T_RIGHE_SHOP])));}}//$logger->debug('dettagliArticolo: ' . print_r($valoriSupporto[Costanti::T_RIGHE_SHOP], true));break;}case 'shopcm_carrello_aggiungi':{if ($pagina->getTipoPagina() == 'paginaDettaglioArticolo'){$urlRitorno = $router->generate('shopcm_carrello_aggiungi', array('codice' => $servizi->creaCodiceIdMappaPerDettaglioProdotto($valoriSupporto[Costanti::T_DETTAGLIO_ARTICOLO_IDENTIFICATO])));}else {if ($righeCasuali) {$urlRitorno = $router->generate('shopcm_carrello_aggiungi', array('codice' => $servizi->creaCodiceIdMappaPerDettaglioProdotto($valoriSupporto[Costanti::T_RIGHE_SHOP_CASUALI])));} else {$urlRitorno = $router->generate('shopcm_carrello_aggiungi', array('codice' => $servizi->creaCodiceIdMappaPerDettaglioProdotto($valoriSupporto[Costanti::T_RIGHE_SHOP])));}}break;}case 'ros_ordina':{$urlRitorno = '';break;}default:{$urlRitorno = $valoreLinkAutomatico;break;}}}catch (\Exception $ex){if ($servizi){$servizi->DebuggaException($ex, 'Errore recupera link automatico. ValoreLinkAutomatico: ' . $valoreLinkAutomatico);}$urlRitorno = 'ERRORE RENDERING!';}return $urlRitorno;}public static function ottieniElementoDaUtilizzareInBaseATipoPagina($tipoPagina, $ordineCasuale = false, $moltiplicatore = false){$elementoValoreDaUtilizzareComeBase = "";switch ($tipoPagina){case "componenteAlberoCategorie":case "homeshop":{$elementoValoreDaUtilizzareComeBase = Costanti::T_LISTA_CATEGORIE;break;}case "rigaCarrello":case "rigaOrdine":{$elementoValoreDaUtilizzareComeBase = "righe";break;}case "rigaHomeShop": {if ($ordineCasuale)$elementoValoreDaUtilizzareComeBase = Costanti::T_RIGHE_SHOP_CASUALI;else$elementoValoreDaUtilizzareComeBase = Costanti::T_RIGHE_SHOP;break;}case "componenteAttributoArticolo":{$elementoValoreDaUtilizzareComeBase = Costanti::T_ASSOCIAZIONE_ATTRIBUTI;break;}case "paginaCarrello":case "paginaFinalizzaCarrello": {$elementoValoreDaUtilizzareComeBase = Costanti::T_CARRELLO;break;}case "paginaDettaglioArticolo":case "dettaglioArticolo":case "modalRichiestaPrezzo": {if ($moltiplicatore){if ($ordineCasuale){$elementoValoreDaUtilizzareComeBase = Costanti::T_RIGHE_SHOP_CASUALI;}else{$elementoValoreDaUtilizzareComeBase = Costanti::T_RIGHE_SHOP;}}else{$elementoValoreDaUtilizzareComeBase = Costanti::T_DETTAGLIO_ARTICOLO_IDENTIFICATO;}break;}}return $elementoValoreDaUtilizzareComeBase;}public static function ritornaRoutePaginationInBaseATipoPagina($tipoPagina){/** "Pagina standard" => 'paginaStandard',"Pagina carrello" => 'paginaCarrello',"Pagina finalizza carrello" => 'paginaFinalizzaCarrello',"Pagina homeshop" => 'paginaHomeShop',"Pagina dettaglio articolo" => "paginaDettaglioArticolo","Pagina dettaglio ordine" => "paginaDettaglioOrdine","Componente -> carrello" => "componenteCarrello","Componente -> alberoCategorie" => "componenteAlberoCategorie","Componente -> ordine" => "componenteOrdine","Componente -> utente" => "componenteUtente","Riga -> carrello" => "rigaCarrello","Riga -> ordine" => "rigaOrdine","Riga -> homeShop" => "rigaHomeShop","Mail standard" => 'mailStandard',"Mail nuovo ordine" => 'mailNuovoOrdine',"Mail ordine esportato" => 'mailOrdineEsportato',"Mail ordine pagamento registrato" => "mailOrdinePagamentoRegistrato","Mail utente nuovo inserimento" => 'mailUtenteNuovoInserimento',"Mail utente cambio mail" => "mailUtenteCambioMail","Mail utente cambio password" => "mailUtenteCambioPassword","Mail cambio stato pagamento" => 'mailCambioStatoPagamento'*/$route = '';switch ($tipoPagina){case 'paginaHomeShop':{$route = 'home_shop_comune_naviga';break;}}return $route;}/*** @param $arrayValoriSupporto array* @return int*/public static function estraiLivelloDaArrayValoriSupporto($arrayValoriSupporto){$ritornoLivello = 0;if (array_key_exists('cat5', $arrayValoriSupporto) && $arrayValoriSupporto['cat5'] != ''){$ritornoLivello = 5;} else if (array_key_exists('cat4', $arrayValoriSupporto) && $arrayValoriSupporto['cat4'] != ''){$ritornoLivello = 4;} else if (array_key_exists('cat3', $arrayValoriSupporto) && $arrayValoriSupporto['cat3'] != ''){$ritornoLivello = 3;} else if (array_key_exists('cat2', $arrayValoriSupporto) && $arrayValoriSupporto['cat2'] != ''){$ritornoLivello = 2;} else if (array_key_exists('cat1', $arrayValoriSupporto) && $arrayValoriSupporto['cat1'] != ''){$ritornoLivello = 1;}return $ritornoLivello;}/*** @param $ritornoBreadcrumb RitornoBreadCrumb* @param $valoriSupporto array* @param $servizi ServiziController* @param $locale* @param Logger|null $logger* @return array*/public static function eseguiBreadcrumb($ritornoBreadcrumb, $valoriSupporto, $servizi, $locale, $logger = null){$ritornoHtml = array('html' => '','css' => '');$cat1 = ''; $cat2 = ''; $cat3 = ''; $cat4 = ''; $cat5 = '';if(array_key_exists(Costanti::CATEGORIA_1_DB, $valoriSupporto))$cat1 = $valoriSupporto[Costanti::CATEGORIA_1_DB];if(array_key_exists(Costanti::CATEGORIA_2_DB, $valoriSupporto))$cat2 = $valoriSupporto[Costanti::CATEGORIA_2_DB];if(array_key_exists(Costanti::CATEGORIA_3_DB, $valoriSupporto))$cat3 = $valoriSupporto[Costanti::CATEGORIA_3_DB];if(array_key_exists(Costanti::CATEGORIA_4_DB, $valoriSupporto))$cat4 = $valoriSupporto[Costanti::CATEGORIA_4_DB];if(array_key_exists(Costanti::CATEGORIA_5_DB, $valoriSupporto))$cat5 = $valoriSupporto[Costanti::CATEGORIA_5_DB];//<ol class="breadcrumb">// <li><a href="#">Home</a></li>// <li><a href="#">Library</a></li>// <li class="active">Data</li>//</ol>$arrayPercorso = explode('.', $ritornoBreadcrumb->datoDaVisualizzare);$colonnaDaPrendere = '';if(count($arrayPercorso) > 0){$colonnaDaPrendere = array_pop($arrayPercorso);}else{$colonnaDaPrendere = $ritornoBreadcrumb->datoDaVisualizzare;}$stileUltimoElemento = '';if ($ritornoBreadcrumb->coloreElementoFinale != ''){$stileUltimoElemento = ('style="color:' . $ritornoBreadcrumb->coloreElementoFinale . '" ');}$ritornoHtml['html'] .= '<ol class="breadcrumb">';if($cat1){if($cat2){$ritornoHtml['html'] .= '<li><a href="' . self::generaRouteNavigazioneCategorie($servizi->router, array($cat1)) .'"' . '>' . Templating::ritornaValoreDaPercorso($cat1, $arrayPercorso, $colonnaDaPrendere) . '</a></li>';}else{$ritornoHtml['html'] .= '<li class="active">' . Templating::ritornaValoreDaPercorso($cat1, $arrayPercorso, $colonnaDaPrendere) . '</li>';}}if($cat2){if($cat3){$ritornoHtml['html'] .= '<li><a href="' . self::generaRouteNavigazioneCategorie($servizi->router, array($cat1, $cat2)) .'"' . '>' . Templating::ritornaValoreDaPercorso($cat2, $arrayPercorso, $colonnaDaPrendere) . '</a></li>';}else{$ritornoHtml['html'] .= '<li class="active">' . Templating::ritornaValoreDaPercorso($cat2, $arrayPercorso, $colonnaDaPrendere) . '</li>';}}if($cat3){if($cat4){$ritornoHtml['html'] .= '<li><a href="' . self::generaRouteNavigazioneCategorie($servizi->router, array($cat1, $cat2, $cat3)) .'"' . '>' . Templating::ritornaValoreDaPercorso($cat3, $arrayPercorso, $colonnaDaPrendere) . '</a></li>';}else{$ritornoHtml['html'] .= '<li class="active">' . Templating::ritornaValoreDaPercorso($cat3, $arrayPercorso, $colonnaDaPrendere) . '</li>';}}if($cat4){if($cat5){$ritornoHtml['html'] .= '<li><a href="' . self::generaRouteNavigazioneCategorie($servizi->router, array($cat1, $cat2, $cat3, $cat4)) .'"' . '>' . Templating::ritornaValoreDaPercorso($cat4, $arrayPercorso, $colonnaDaPrendere) . '</a></li>';}else{$ritornoHtml['html'] .= '<li class="active">' . Templating::ritornaValoreDaPercorso($cat4, $arrayPercorso, $colonnaDaPrendere) . '</li>';}}if($cat5){$ritornoHtml['html'] .= '<li class="active" ' . $stileUltimoElemento . '>' . Templating::ritornaValoreDaPercorso($cat5, $arrayPercorso, $colonnaDaPrendere) . '</li>';}return $ritornoHtml;}/*** @param $router Router* @param $arrayCategorie* @return mixed*/public static function generaRouteNavigazioneCategorie($router, $arrayCategorie){$arr = array();for($i = 0; $i < count($arrayCategorie); $i++){$cat = $arrayCategorie[$i];$nomeUnivoco = '';if($cat instanceof Categoria){$nomeUnivoco = $cat->categoriaInLingua ? $cat->categoriaInLingua->nomeUnivoco : $cat->nomeUnivoco;}else if ($cat instanceof Categorie){$nomeUnivoco = $cat->getNomeUnivoco();} else {$nomeUnivoco = $cat;}$arr['categoria_' . ($i + 1)] = $nomeUnivoco;}return $router->generate('home_shop_comune_naviga', $arr);}/*** @param $componente PagineEComponenti* @param $ritornoMoltiplicatore RitornoDaMoltiplicatoreLayout* @param $valoriSupporto array* @param $servizi ServiziController* @param $locale string* @param $logger Logger|null* @return array*/public static function eseguiMoltiplicatoreLayout($componente, $ritornoMoltiplicatore, $valoriSupporto, $servizi, $locale, $ordineCasuale = false, $logger = null, $twigAppArray = null){$ritornoHtml = array('html' => '','css' => '');$elementoValoreDaUtilizzareComeBase = Templating::ottieniElementoDaUtilizzareInBaseATipoPagina($componente->getTipoPagina(), $ordineCasuale, true); //Array da scorrere per moltiplicare i dati$eventualeLivelloCategorie = Templating::estraiLivelloDaArrayValoriSupporto($valoriSupporto); //Se è uguale a 0 vuol dire che non sono specificati parametri 'cat'if ($elementoValoreDaUtilizzareComeBase != ''){if (!array_key_exists($elementoValoreDaUtilizzareComeBase, $valoriSupporto)){$ritornoHtml["html"] = $ritornoHtml["html"] . '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore Moltiplicatore layout. Chiave layout: ' . $elementoValoreDaUtilizzareComeBase . ' non trovato in array</p>';}else {$arrayElementi = $valoriSupporto[$elementoValoreDaUtilizzareComeBase]; //lista di elementi database da iterare per comporre il layoutif ($ordineCasuale) {shuffle($arrayElementi);}//$logger->info("Elementi: " . count($arrayElementi));if($ritornoMoltiplicatore->numeroRisultati != '' && $ritornoMoltiplicatore->numeroRisultati < 25 && count($arrayElementi) >= $ritornoMoltiplicatore->numeroRisultati){$arrayElementi = array_splice($arrayElementi, 0, $ritornoMoltiplicatore->numeroRisultati);}$primo = true;$conta = 1;foreach ($arrayElementi as $elemento) {$valoriSupportoModificati = null;$valoriSupportoModificati = $valoriSupporto;$valoriSupportoModificati[$elementoValoreDaUtilizzareComeBase] = $elemento;//$logger->info("Conta: " . $conta . " " . json_encode($valoriSupportoModificati[$elementoValoreDaUtilizzareComeBase]));//Il parametro salta serve per quando devo eseguire il moltiplicatore delle categorie per identificare a che livello sono di iterazione in base alle variabili cat1 cat2 cat3 cat4 cat5$salta = false;if ($componente->getTipoPagina() == 'componenteAlberoCategorie'){//Se sto renderizzando un componente albero categorie eseguo il render solo del livello attualeif ($elemento->livello != $eventualeLivelloCategorie){$salta = true;}}if (!$salta) {$rit = $servizi->renderizzaPaginaOComponente($componente->getId(), null, $valoriSupportoModificati, $locale, '', $ordineCasuale, true, $twigAppArray);$ritornoHtml["html"] = $ritornoHtml["html"] . $rit["html"];if ($primo) { //Alla prima iterazione prendo il codice css$ritornoHtml["css"] = $ritornoHtml["css"] . $rit["css"];$primo = false;}}$conta++;}}}else{$ritornoHtml["html"] = $ritornoHtml["html"] . '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore Moltiplicatore layout. Elemento valore non trovato. Tipo Pagina: ' . $componente->getTipoPagina() . '</p>';}return $ritornoHtml;}/*** @param $elementoTagcompleto* @param $elementoNuovo* @param $elementoTestata* @param $elementoDbDaVisualizzare* @param $valoriSupporto* @param $pagina* @param $servizi* @param $locale* @param Router $router* @param Translating $translating* @param Logger|null $logger* @param null $twigAppArray* @return string*/public static function eseguiStrutturaCoreNav($elementoTagcompleto, $elementoNuovo, $elementoTestata, $elementoDbDaVisualizzare, $valoriSupporto, PagineEComponenti $pagina, $servizi, $locale, Router $router, Translating $translating, LoggerInterface $logger = null, $twigAppArray = null){$elementoValoreDaUtilizzareComeBase = Costanti::T_LISTA_CATEGORIE;$listaChiaviParent = $valoriSupporto[Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT];$ritornoBase = RitornoElementiBase::OttieniDaElementoTag($elementoTestata);$ritornoBase->class .= ' toggle-bar'; //Aggiungo il toggle per mostrare il menu laterale$content = $elementoNuovo;$content = str_replace($elementoTestata, '', $content);$content = str_replace('<TMPLT CORENAV />', '', $content);$cs = SubstringWithFind::SubstringWithFind(' colore-sfondo="','"',$elementoTestata,0,true);$coloreSfondo = $cs->substring;if ($coloreSfondo == 'undefined' || $coloreSfondo == ''){$coloreSfondo = 'black';}$ct = SubstringWithFind::SubstringWithFind(' colore-testo="','"',$elementoTestata,0,true);$coloreTesto = $ct->substring;if ($coloreTesto == 'undefined' || $coloreTesto == ''){$coloreTesto = 'white';}$stringaDiComposizione = '';$stringaDiComposizione .= '<style type="text/css"> .mf-nav { background-color: ' . $coloreSfondo . '; } .mf-nav a { color: ' . $coloreTesto . ' } </style>';$stringaDiComposizione .= '<a ' . $ritornoBase->RitornaStringaElementiBase() . ' onclick="openCloseNav();">';$stringaDiComposizione .= $content;$stringaDiComposizione .= '</a>';$stringaDiComposizione .= '<nav class="mf-nav">';$stringaDiComposizione .= '<a href="javascript:void(0)" class="mf-nav-closebtn" onclick="openCloseNav()">×</a>';$stringaDiComposizione .= '<ul class="mf-menu mf-menu-list">';/** @var AlberoCategorie $item */foreach ($valoriSupporto[$elementoValoreDaUtilizzareComeBase] as $item) {if (!$item->parent){$stringaDiComposizione .= Templating::stampaElementoCoreNav($item, $listaChiaviParent, $elementoDbDaVisualizzare, 1, $pagina, array(), $router, $valoriSupporto, $translating, $servizi, $logger, '', $locale, $twigAppArray);}}$stringaDiComposizione .= '</ul></nav>';return $stringaDiComposizione;}/*** @param AlberoCategorie $alberoDaEseguire* @param $listaChiaviParent* @param $elementoDbDaVisualizzare //Elemento per decodifica percorso db elemento* @param $livello* @param $pagina* @param $arrayPathCategorie* @param Router $router* @param $valoriSupporto* @param Translating $translating* @param ServiziController $servizi* @param Logger|null $logger* @param string $ritornoHtml* @param string $locale* @param null $twigAppArray* @return string*/public static function stampaElementoCoreNav(AlberoCategorie $alberoDaEseguire, $listaChiaviParent, $elementoDbDaVisualizzare, $livello, PagineEComponenti $pagina, $arrayPathCategorie, Router $router, $valoriSupporto, Translating $translating, ServiziController $servizi, LoggerInterface $logger = null, $ritornoHtml = '', $locale = 'it', $twigAppArray = null){$aggiuntaSeFigli = '';$href = '#/';$arrayPathCategorie2 = array_merge(array('categoria_' . $livello => str_replace('/', '£-£', $alberoDaEseguire->categoria->nomeUnivoco)), $arrayPathCategorie);$page = 1;if (array_key_exists('page', $valoriSupporto)){$page = $valoriSupporto['page'];}$arraySecondarioCompleto = array_merge(array('page' => $page), $arrayPathCategorie2);if ($alberoDaEseguire->hasChild){$aggiuntaSeFigli = ' class="mf-dropdown"';}else{$href = $router->generate('home_shop_comune_naviga', $arraySecondarioCompleto);}$ritornoHtml .= '<li' . $aggiuntaSeFigli . '><a href="' . $href . '">' . Templating::ritornaValoreDaPercorsoValoriSpeciali($alberoDaEseguire, $elementoDbDaVisualizzare) . '</a>';if ($alberoDaEseguire->hasChild){$ritornoHtml .= '<ul class="mf-dropdown-menu">';foreach ($listaChiaviParent[$alberoDaEseguire->id] as $item){$ritornoHtml .= self::stampaElementoCoreNav($item, $listaChiaviParent, $elementoDbDaVisualizzare, $livello + 1, $pagina, $arrayPathCategorie2, $router, $valoriSupporto, $translating, $servizi, $logger, '', $locale, $twigAppArray);}$ritornoHtml .= '</ul>';}$ritornoHtml .= '</li>';return $ritornoHtml;}/*** @param $elementoTagCompleto* @param $valoriSupporto* @param PagineEComponenti $pagina* @param $servizi* @param $locale* @param Router $router* @param Translating $translating* @param null $ritornoHtml* @param Logger|null $logger* @param array|null $twigAppArray* @return array*/public static function eseguiGrigliaOrdinazioneVarianti($elementoTagCompleto, $valoriSupporto, PagineEComponenti $pagina, ServiziController $servizi, $locale, Router $router, Translating $translating, $ritornoHtml = null, $logger = null, $twigAppArray = null){if (!$ritornoHtml) {$ritornoHtml = array('html' => '','css' => '');}$html = "";try {$translating->CaricaTraduzioniDaFamiglia('home_shop', $locale);$ritornoBase = RitornoElementiBase::OttieniDaElementoTag($elementoTagCompleto);/** @var MappaCategoriaArticolo|null $mappaSelezionata */$mappaSelezionata = (array_key_exists(Costanti::T_MAPPA_IDENTIFICATA, $valoriSupporto) ? $valoriSupporto[Costanti::T_MAPPA_IDENTIFICATA] : null);$varianti = $mappaSelezionata->varianti;$codiciInseriti = array();/** @var Variante[] $variabiliInColonna */$variabiliInColonna = array();$arrayTemporaneo = array();$headerRigaEsame = "";foreach ($varianti as $v) {if (!in_array($v->codiceDimensione5, $codiciInseriti)) {array_push($codiciInseriti, $v->codiceDimensione5);array_push($variabiliInColonna, $v);}$headerAttuale = $servizi->generaHeaderRiga($v);if ($headerRigaEsame == "") {$headerRigaEsame = $headerAttuale;}if ($headerRigaEsame != $headerAttuale) {$visualizzazioneVarianti[$headerRigaEsame] = $arrayTemporaneo;$arrayTemporaneo = array();$headerRigaEsame = $headerAttuale;}if ($headerRigaEsame == $headerAttuale) {$arrayTemporaneo[$v->codiceDimensione5] = $v;}}if ($headerRigaEsame != "" && count($arrayTemporaneo) > 0) {$visualizzazioneVarianti[$headerRigaEsame] = $arrayTemporaneo;}$arrayDiVerificaEsistenza = array();//Stampo la tabella / formif (count($varianti) > 0) {$html .=('<form method="POST" action="' . $router->generate('shopcm_carrello_aggiungi_multiplo') . '" class="' . $ritornoBase->class . '" id="' . $ritornoBase->id . '" style="' . $ritornoBase->style . '"><table class="table table-striped tabVarianti"><thead><tr><th></th>');foreach ($variabiliInColonna as $item) {$arrayDiVerificaEsistenza = array_merge($arrayDiVerificaEsistenza, array($item->codiceDimensione5));$html .= '<th>';if ($item->immagineDimensione5 != '') {$html .= ('<img src="' . $item->immagineDimensione5 . '" class="img img-responsive immagine-variante" /><br/>');}if ($item->descrizioneDimensione5 != '') {$html .= ('<span class="descrizione-variante-header">' . $item->descrizioneDimensione5 . '</span>');}$html .= '</th>';}$html .= (' </tr></thead><tbody>');foreach (array_keys($visualizzazioneVarianti) as $key) {$html .= '<tr>';$listaVariabiliPresenti = $visualizzazioneVarianti[$key];$primaVariabileUtile = count($listaVariabiliPresenti) > 0 ? array_values($listaVariabiliPresenti)[0] : '';for ($i = 0; $i < count($variabiliInColonna); $i++) {$v = $variabiliInColonna[$i];if ($i == 0) { //Prima iterazione$html .= '<td class="td-stretto">';$img = $servizi->ottieniImmagineDaVariabileEsclusoLivello5($listaVariabiliPresenti[$v->codiceDimensione5]);if ($img != '') {$html .= ('<img src="' . $img . '" class="img img-responsive immagine-variante" /><br />');}$html .= '<b>';$headerVariante = explode('/////', $key);for ($iv = 0; $iv < count($headerVariante); $iv++) {$vrn = $headerVariante[$iv];$html .= $vrn;if ($iv != count($headerVariante) - 1)$html .= '<br />';}$html .= '</b></td>';}//ALTRE ITERAZIONI CHE NON SONO LA PRIMAif (array_key_exists($v->codiceDimensione5, $listaVariabiliPresenti)) {/** @var Variante $varianteAtt */$varianteAtt = $listaVariabiliPresenti[$v->codiceDimensione5];$html .= ('<td class="cellaOrdinazioneArticolo"><div class="input-group plus-minus-input form-inline" style="width: 100%;"><div style="margin-left: 0;" class="input-group-button form-group"><button type="button" class="button hollow circle" data-quantity="minus" data-field="form-ord_' . $varianteAtt->id . '"><i class="fa fa-minus" aria-hidden="true"></i></button></div><input class="input-group-field qtaordinazione form-group" style="width: 55px;" type="number" name="form-ord_' . $varianteAtt->id . '" value="0"><div style="margin-left: 0;" class="input-group-button form-group"><button type="button" class="button hollow circle" data-quantity="plus" data-field="form-ord_' . $varianteAtt->id . '"><i class="fa fa-plus" aria-hidden="true"></i></button></div></div><div class="sezione-sotto-ordina">');if ($servizi->impostazioni->ritornaImpostazioneDaNome('MostraDisponibilitaShop') != "1") {$html .= ('<span style="margin: 5px;" class="label label-primary">' . $mappaSelezionata->articolo->um->codice . '</span>');} else {$numDecimali = 0;$codiceUm = '';if ($varianteAtt->mappa != null && $varianteAtt->mappa->articolo != null && $varianteAtt->mappa->articolo->um != null) {$numDecimali = $varianteAtt->mappa->articolo->um->numeroDecimali;$codiceUm = $varianteAtt->mappa->articolo->um->codice;}$disp = number_format($varianteAtt->disponibile, $numDecimali);if ($disp > 0) {$html .= ('<label style="margin: 5px;" class="label label-success">' . number_format($disp, $numDecimali, ',', '.') . ' ' . $codiceUm . '</label>');} else {$html .= ('<label style="margin: 5px;" class="label label-danger">' . $translating->OttieniElementoDizionario('home_shop_varianti_non_disponibile', 'home_shop')->valoreUscita . '</label>');}}if ($varianteAtt->listino != null) {if ($servizi->impostazioni->ritornaImpostazioneDaNome('MostraListinoScontiNettoVarianti') != "1") {$html .= ('€ ' . number_format($varianteAtt->prezzoNettoCalcolato, $servizi->impostazioni->ritornaImpostazioneDaNome('NumeroDecimaliPrezzi'), '.', ','));} else {$html .= ('<br /><div class="sezione-prezzo"><span>' . (($varianteAtt->listino != null) ? ('€ ' . number_format($varianteAtt->listino->prezzo, $servizi->impostazioni->ritornaImpostazioneDaNome('NumeroDecimaliPrezzi'), '.', ',')) : '') . '</span><span>' . $servizi->ritornaStringaScontiPerVisualizzazione($varianteAtt->stringaSconti) . '</span><span style="font-weight: bold; color: red;">' . ('€ ' . number_format($varianteAtt->prezzoNettoCalcolato, $servizi->impostazioni->ritornaImpostazioneDaNome('NumeroDecimaliPrezzi'), '.', ',')) . '</span></div>');}}$html .= '</div></td>';} else {$html .= '<td class="nonDisponibileClass"></td>';}}$html .= '</tr>';}} else {//Se non c'è una variante}$html .= (' </tbody></table><input type="submit" class="btn btn-success" style="float: right;" value="Aggiungi al carrello" /></form>');$ritornoHtml['html'] = $html;}catch (\Throwable $ex){$servizi->ScriviLogDebug($ex->getMessage() . "\n" . $ex->getTraceAsString());$servizi->DebuggaException($ex, "Errore rendering template");}return $ritornoHtml;}/*** @param $elementoTagCompleto* @param $valoriSupporto array* @param $servizi ServiziController* @param $locale string* @param $router Router* @param $translating Translating* @param $logger Logger* @param $twigAppArray array|null* @return array*/public static function eseguiStrutturaMenuCategorieOrizzontaleDropdown($elementoTagCompleto, $valoriSupporto, PagineEComponenti $pagina, $servizi, $locale, Router $router, Translating $translating, $ritornoHtml = null, $logger = null, $twigAppArray = null){if (!$ritornoHtml) {$ritornoHtml = array('html' => '','css' => '');}//Array contentente tutti i collegamenti alle categorie parent$arrayCategorieParent = array_key_exists(Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT, $valoriSupporto) ? $valoriSupporto[Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT] : array();//Estraiamo i dati per il layout$ritornoElemento = RitornoMenuOrizzontaleDropdown::OttieniDaElementoTag($elementoTagCompleto);$stringaHTML = '<nav class="' . $ritornoElemento->class . '" style="' . $ritornoElemento->style . 'width:100%;" ' . $ritornoElemento->RitornaStringaElementiBase() . ' >'. '<ul class="mf-gjs-dropdown nav-center">';//Qui devo generare tutte le voci di categorieif (!array_key_exists(Costanti::T_LISTA_CATEGORIE, $valoriSupporto)) {$ritornoHtml["html"] = $ritornoHtml["html"] . '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore Struttura menu categorie. Chiave layout: ' . Costanti::T_LISTA_CATEGORIE . ' non trovato in array</p>';} else {/** @var $arrayElementi AlberoCategorie[] */$arrayElementi = $valoriSupporto[Costanti::T_LISTA_CATEGORIE]; //lista di elementi database da iterare per comporre il layout//$logger->info("Elementi: " . count($arrayElementi));$rtt = "";//Iteriamo tra i primi alberiforeach($arrayElementi as $item){$stringaHTML = $stringaHTML . Templating::stampaCategoriaOrizzontaleDropdown($item, $arrayCategorieParent, $ritornoElemento, $router, 0, 1);}}$stringaHTML .= '</ul></nav>';//Creo la stringa CSS per lo stile del menu$stringaCSS = '.mfs-gjs-dropbtn {' .($ritornoElemento->textBold ? 'font-weight: bold !important;' : '') .($ritornoElemento->textColor ? 'color: ' . $ritornoElemento->textColor . ' !important;' : '') . '}.mfs-gjs-sub-dropbtn {' .($ritornoElemento->submenuTextBold ? 'font-weight: bold !important;' : '') .($ritornoElemento->submenuTextColor ? 'color: ' . $ritornoElemento->submenuTextColor . ' !important;' : '') . '}.mfs-gjs-dropdown-content { ' .($ritornoElemento->submenuTextColor ? 'background: ' . $ritornoElemento->submenuTextColor . ' !important;' : '') . '}';$ritornoHtml["html"] = $ritornoHtml["html"] . $stringaHTML;$ritornoHtml["css"] = $ritornoHtml["css"] . $stringaCSS;return $ritornoHtml;}/*** @param $albero AlberoCategorie* @param $arrayPathCategorie* @param $ritornoMenuOrizzontale RitornoMenuOrizzontaleDropdown* @return string*/public static function stampaCategoriaOrizzontaleDropdown($albero, $arrayParent, $ritornoMenuOrizzontale, Router $router, $livello, $pagina, $arrayPathCategorie = array(), $htmlRitorno = ""){$ritorno = "";if($albero->livello == $livello) {$ritorno = $htmlRitorno;$arrayPathCategorie2 = array_merge(array('categoria_' . ($livello + 1) => str_replace('/', '£-£', $albero->categoria->nomeUnivoco)), $arrayPathCategorie);$arraySecondarioCompleto = array_merge(array('page' => $pagina), $arrayPathCategorie2);$testo = Templating::ritornaValoreDaPercorso($albero, $ritornoMenuOrizzontale->percorso, $ritornoMenuOrizzontale->nomeColonna);$ritorno = $ritorno . '<li>' .'<a href="' . $router->generate('home_shop_comune_naviga', $arraySecondarioCompleto) . '" class="' . ($albero->hasChild && array_key_exists($albero->id, $arrayParent) ? 'nav-active' : '') . '">' . $testo . '</a>';//Verifico se ci sono figli da stampareif ($albero->hasChild && array_key_exists($albero->id, $arrayParent)) {$ritorno = $ritorno . ' <ul> ';/** @var AlberoCategorie $item */foreach ($arrayParent[$albero->id] as $item) {$ritorno .= Templating::stampaCategoriaOrizzontaleDropdown($item, $arrayParent, $ritornoMenuOrizzontale, $router, $livello + 1, $pagina, $arrayPathCategorie2, "");}$ritorno = $ritorno . '</ul>';}$ritorno = $ritorno . '</li>';}return $ritorno;}/*** @param $elementoTagCompleto* @param $valoriSupporto array* @param $servizi ServiziController* @param $locale string* @param $router Router* @param $translating Translating* @param $logger Logger|null* @param $twigAppArray array|null* @return array*/public static function eseguiStrutturaMenuCategorie($elementoTagCompleto, $valoriSupporto, PagineEComponenti $pagina, $servizi, $locale, Router $router, Translating $translating, $ritornoHtml = null, $logger = null, $twigAppArray = null){if (!$ritornoHtml) {$ritornoHtml = array('html' => '','css' => '');}$elementoValoreDaUtilizzareComeBase = Costanti::T_LISTA_CATEGORIE;$livello1 = "";$livello2 = "";$livello3 = "";$livello4 = "";$livello5 = "";//substringo livello 1$sbs1 = SubstringWithFind::SubstringWithFind('<TMPLT tp="SUB-MENU" livello="1" ','</SUB-MENU>',$elementoTagCompleto);$livello1 = $sbs1->substring;//substringo livello 2$sbs2 = SubstringWithFind::SubstringWithFind('<TMPLT tp="SUB-MENU" livello="2" ','</SUB-MENU>',$elementoTagCompleto);$livello2 = $sbs2->substring;//substringo livello 3$sbs3 = SubstringWithFind::SubstringWithFind('<TMPLT tp="SUB-MENU" livello="3" ','</SUB-MENU>',$elementoTagCompleto);$livello3 = $sbs3->substring;//substringo livello 4$sbs4 = SubstringWithFind::SubstringWithFind('<TMPLT tp="SUB-MENU" livello="4" ','</SUB-MENU>',$elementoTagCompleto);$livello4 = $sbs4->substring;//substringo livello 5$sbs5 = SubstringWithFind::SubstringWithFind('<TMPLT tp="SUB-MENU" livello="5" ','</SUB-MENU>',$elementoTagCompleto);$livello5 = $sbs5->substring;$arrayTemplate = array(1 => $livello1,2 => $livello2,3 => $livello3,4 => $livello4,5 => $livello5);//$logger->debug('Livello1: ' . $livello1);//$logger->debug('Livello2: ' . $livello2);//$logger->debug('Livello3: ' . $livello3);//$logger->debug('Livello4: ' . $livello4);//$logger->debug('Livello5: ' . $livello5);$ritornoHtml['html'] ='<div class="nav-side-menu"><i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i><div class="menu-list"><ul id="menu-content" class="menu-content collapse out">';if (!array_key_exists($elementoValoreDaUtilizzareComeBase, $valoriSupporto)) {$ritornoHtml["html"] = $ritornoHtml["html"] . '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore Struttura menu categorie. Chiave layout: ' . $elementoValoreDaUtilizzareComeBase . ' non trovato in array</p>';} else {/** @var $arrayElementi AlberoCategorie[] */$arrayElementi = $valoriSupporto[$elementoValoreDaUtilizzareComeBase]; //lista di elementi database da iterare per comporre il layout//$logger->info("Elementi: " . count($arrayElementi));$categoriePassate = array('', '', '', '', '');if (array_key_exists('cat1', $valoriSupporto))$categoriePassate[0] = $valoriSupporto['cat1'];if (array_key_exists('cat2', $valoriSupporto))$categoriePassate[1] = $valoriSupporto['cat2'];if (array_key_exists('cat3', $valoriSupporto))$categoriePassate[2] = $valoriSupporto['cat3'];if (array_key_exists('cat4', $valoriSupporto))$categoriePassate[3] = $valoriSupporto['cat4'];if (array_key_exists('cat5', $valoriSupporto))$categoriePassate[4] = $valoriSupporto['cat5'];//$logger->debug('Categorie passate: ' . print_r($categoriePassate, true));$primo = true;foreach ($arrayElementi as $elemento) {//$logger->debug('Elemento: ' . print_r($elemento, true));if ($elemento->parent == null) {$rtt = Templating::stampaMenuCategoria($elemento, $valoriSupporto[Costanti::T_LISTA_CATEGORIE_CHIAVI_PARENT], 1, array(), 1, $categoriePassate, $router, $arrayTemplate, $valoriSupporto, $pagina, $translating, $primo, $servizi, $ritornoHtml, $locale, $twigAppArray);if ($primo) {$ritornoHtml['css'] = $ritornoHtml['css'] . $rtt['css'];$primo = false;}$ritornoHtml['html'] = $ritornoHtml['html'] . $rtt['html'];}}}/*} catch (\Exception $ex) {$servizi->DebuggaException($ex);}*/$ritornoHtml['html'] = $ritornoHtml['html'] .' </ul></div></div>';//$logger->debug('Ritorno finale HTML: ' . print_r($ritornoHtml, true));return $ritornoHtml;}public static function convertiInput($elementoTagCompleto, $valoriSupporto, ServiziController $serviziController, $locale, Router $router, Translating $translating, $ritornoHtml = null, LoggerInterface $logger = null){if (!$ritornoHtml){$ritornoHtml = '';}}public static function eseguiStrutturaVistaAttributi($elementoTagCompleto, $valoriSupporto, $servizi, $locale, Router $router, Translating $translating, $ritornoHtml = null, LoggerInterface $logger = null){if (!$ritornoHtml) {$ritornoHtml = array('html' => '','css' => '');}$sbsInizio = SubstringWithFind::SubstringWithFind("<TMPLT ",">",$elementoTagCompleto);$elementiBase = RitornoElementiBase::OttieniDaElementoTag($sbsInizio->substring);$elementoValoreDaUtilizzareComeBase = Costanti::T_ATTRIBUTI;$tagTitoloElaborato = GestioneTagHTML::ElaboraTagHTML($elementoTagCompleto, 'div', '', '', $logger);$tagInputElaborato = RitornoDaInput::OttieniDaElementoTag($elementoTagCompleto);//Tag button da inserire dopo il render delle righe degli attributi$tagDivButtonFiltra = GestioneTagHTML::ElaboraTagHTML($elementoTagCompleto, 'TMPLT', '', '<div tp="filtra-btn"', $logger);$tagButtonFiltra = GestioneTagHTML::ElaboraTagHTML($tagDivButtonFiltra->contenuto, 'TMPLT', '/', '', $logger);$stringaComposta = '';/** @var AssociazioneAttributi[] $listaAssociazioneAttributi */$listaAssociazioneAttributi = $valoriSupporto[$elementoValoreDaUtilizzareComeBase];if ($listaAssociazioneAttributi && count($listaAssociazioneAttributi) > 0) {$actionForm = $router->generate('home_shop_comune_naviga', $valoriSupporto);$stringaComposta .= '<form action="' . $actionForm . '" >';$stringaComposta .= '<div ';if ($elementiBase->id != '')$stringaComposta .= 'id="' . $elementiBase->id . '" ';if ($elementiBase->class != '')$stringaComposta .= 'class="' . $elementiBase->class . '" ';if ($elementiBase->style != '')$stringaComposta .= 'style="' . $elementiBase->style . '" ';$stringaComposta .= '>';$stringaElementiBaseInput = $tagInputElaborato->elementiBase->RitornaStringaElementiBase();foreach ($listaAssociazioneAttributi as $ass) {//ottento il titolo attributo da mostrare$logger->debug('Associazione: ' . var_export($ass, true));if ($ass->attributo && $ass->attributo->attributoInLingua && $ass->attributo->attributoInLingua->testoVisualizzato){$stringaComposta .= $tagTitoloElaborato->RitornaStringaHTMLModificandoIlContenuto($ass->attributo->attributoInLingua->testoVisualizzato);}//Scrivo l'input$stringaComposta .= '<input ' . $stringaElementiBaseInput . ' ';$valorePlaceholder = '';if ($tagInputElaborato->placeholderDb != '' && $tagInputElaborato->placeholderDb){$json = json_decode($tagInputElaborato->placeholderDb, true);$percorso = $json["percorso"] != '' ? explode(",", $json["percorso"]) : array();$valorePlaceholder = Templating::ritornaValoreDaPercorso($ass, $percorso, $json["nomeColonna"], null);}else if ($tagInputElaborato->placeholderDiz != '' && $tagInputElaborato->placeholderDiz){$json = json_decode($tagInputElaborato->placeholderDiz, true);$valorePlaceholder = $translating->OttieniElementoDizionario($json["identificativo"], $json["famiglia"])->valoreUscita;}if ($valorePlaceholder != '')$stringaComposta .= 'placeholder="' . $valorePlaceholder . '" ';$valoreTitle = '';if ($tagInputElaborato->titleDb != '' && $tagInputElaborato->titleDb){$json = json_decode($tagInputElaborato->titleDb, true);$percorso = $json["percorso"] != '' ? explode(",", $json["percorso"]) : array();$valoreTitle = Templating::ritornaValoreDaPercorso($ass, $percorso, $json["nomeColonna"], null);}else if ($tagInputElaborato->titleDiz != '' && $tagInputElaborato->titleDiz){$json = json_decode($tagInputElaborato->titleDiz, true);$valoreTitle = $translating->OttieniElementoDizionario($json["identificativo"], $json["famiglia"])->valoreUscita;}if ($valoreTitle != '')$stringaComposta .= 'title="' . $valoreTitle . '" ';//chiudo tag input$stringaComposta .= ' name="' . $ass->attributo->attributoInLingua->testoVisualizzato . '" />';}//Renderizzo il div che contiene il button di submit$stringaComposta .= str_replace('tp="filtra-btn"', '', $tagDivButtonFiltra->tagApertura);//<TMPLT tp="BUTTON" id="ioodi" class="" style="" linkautomatico="" clic-link="" testo="Filtra" identificativo="" famiglia="" />$stringaComposta .= '<button type="submit" ' . $tagButtonFiltra->ritornoBase->RitornaStringaElementiBase() . '>';$testo = EstraiElementoDaStringa::Estrai($tagButtonFiltra->tagApertura, ' testo="')->elementoEstratto;$identificativo = EstraiElementoDaStringa::Estrai($tagButtonFiltra->tagApertura, ' identificativo="')->elementoEstratto;$famiglia = EstraiElementoDaStringa::Estrai($tagButtonFiltra->tagApertura, ' famiglia="')->elementoEstratto;if ($identificativo != '' && $famiglia != ''){$valoreDizionario = $translating->OttieniElementoDizionario($identificativo, $famiglia)->valoreUscita;$stringaComposta .= $valoreDizionario;}else{$stringaComposta .= $testo;}$stringaComposta .= '</button>';$stringaComposta .= $tagDivButtonFiltra->tagChiusura;$stringaComposta .= '</div></form>';}$ritornoHtml['html'] = $stringaComposta;return $ritornoHtml;}static function stampaMenuCategoria($alberoParent, $listaChiaviParent, $livello, $arrayPathCategorie, $pagina, $categoriePassate, Router $router, $arrayTemplate, $valoriSupporto, PagineEComponenti $paginaEComponente, Translating $translating, $primaIterazione, ServiziController $serviziController, $ritorno, $locale = 'it', $twigAppArray = null){if (!$ritorno) {$ritorno = array('html' => '','css' => '');}$htmlRitorno = '';$valoriSupportoModificati = null;$valoriSupportoModificati = $valoriSupporto;$valoriSupportoModificati[Costanti::T_LISTA_CATEGORIE] = $alberoParent;//========================================== LAYOUT INTERNO AL LINK ============================================================//Rimuovo la parte del sub menu superflua$substring = SubstringWithFind::SubstringWithFind('<TMPLT tp="SUB-MENU" livello="' . $livello . '" component-id="">','</SUB-MENU>',$arrayTemplate[$livello],0,true);$contenuto = Templating::convertiLayoutStrutturaCategoria($substring->substring, $alberoParent, null, $valoriSupportoModificati, $paginaEComponente, $translating, $serviziController, $locale, $twigAppArray);//==============================================================================================================================if ($primaIterazione){$ritorno['css'] = $contenuto['css'];}/** @var AlberoCategorie $alberoParent */$htmlRitorno = '';$identSez = 'menu' . $alberoParent->categoria->nomeUnivoco;$htmlRitorno .= '<li ' . ($alberoParent->hasChild ? 'data-toggle="collapse" data-target="#' . $identSez . '" class="collapsed"' : '') . '>';$arrayPathCategorie2 = array_merge(array('categoria_' . $livello => str_replace('/', '£-£', $alberoParent->categoria->nomeUnivoco)), $arrayPathCategorie);$arraySecondarioCompleto = array_merge(array('page' => $pagina), $arrayPathCategorie2);$htmlRitorno .= '<a title="' . $alberoParent->categoria->categoriaInLingua->nome . '" href="' . $router->generate('home_shop_comune_naviga', $arraySecondarioCompleto) . '">' . $contenuto['html'] . '</a>';$htmlRitorno .= '</li>';if ($alberoParent->hasChild && array_key_exists($alberoParent->id, $listaChiaviParent)){$collapse = 'collapse';if ($categoriePassate[$livello - 1] == $alberoParent->categoria->nomeUnivoco)$collapse = '';$htmlRitorno .= '<ul class="sub-menu ' . $collapse . '" id="' . $identSez . '" >';foreach($listaChiaviParent[$alberoParent->id] as $item){$rtt = self::stampaMenuCategoria($item, $listaChiaviParent, $livello + 1, $arrayPathCategorie2, $pagina, $categoriePassate, $router, $arrayTemplate, $valoriSupporto, $paginaEComponente, $translating, $primaIterazione, $serviziController, $ritorno, $locale);$htmlRitorno .= $rtt['html'];$ritorno['css'] = $ritorno['css'] . $rtt['css'];}$htmlRitorno .= '</ul>';}$ritorno['html'] = $htmlRitorno;return $ritorno;}/*** @param $ritornoConvertDb RitornoDatoDb* @param ServiziController $serviziController* @return string*/public static function ritornaValoreDatoDbSpeciale($ritornoConvertDb, ServiziController $serviziController, $valoreRiferimento){$ritorno = '';switch ($ritornoConvertDb->datoSpeciale){case 'risaliImgCategorie':{if ($valoreRiferimento instanceof AlberoMenuProdotti || $valoreRiferimento instanceof AlberoCategorie){$ritorno = $serviziController->saliAlberoPerImmagine($valoreRiferimento);} else if ($valoreRiferimento instanceof MappaCategoriaArticolo){$ritorno = $serviziController->ottieniImmagineDaMappaCategoriaArticolo($valoreRiferimento);} else if ($valoreRiferimento instanceof Variante){$ritorno = $serviziController->ottieniImmagineDaVariabileEsclusoLivello5($valoreRiferimento);} else if ($valoreRiferimento instanceof RigaCarrello) {$ritorno = $serviziController->ottieniImmagineDaMappaCategoriaArticolo($valoreRiferimento->mappaCategoriaArticolo);} else{$ritorno = '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB conversione dato speciale. Type valore riferimento: ' . get_class($valoreRiferimento) . ' non mappata</p>';}break;}case 'prezzoBarratoSeScontato':{if($valoreRiferimento instanceof MappaCategoriaArticolo){/** @var $valoreRiferimento MappaCategoriaArticolo */if($valoreRiferimento->valoriCalcolati && $valoreRiferimento->valoriCalcolati->scontisticaPresente){//In questo caso devo barrare il prezzo$prezzoLordo = $valoreRiferimento->valoriCalcolati->primoListino;if ($ritornoConvertDb && $ritornoConvertDb->tipoDato == 'double') {$numDec = $ritornoConvertDb->numeroDecimali != '' ? $ritornoConvertDb->numeroDecimali : '0';$sepDec = $ritornoConvertDb->separatoreDecimali != '' ? $ritornoConvertDb->separatoreDecimali : '.';$sepMigl = $ritornoConvertDb->separatoreMigliaia != '' ? $ritornoConvertDb->separatoreMigliaia : ',';$prezzoLordo = number_format($prezzoLordo, $numDec, $sepDec, $sepMigl);}$ritorno = ('<span style="text-decoration: line-through;">€ ' . $prezzoLordo . '</span><br/>');$prezzoNetto = $valoreRiferimento->valoriCalcolati->prezzoNettoCalcolato;if ($ritornoConvertDb && $ritornoConvertDb->tipoDato == 'double') {$numDec = $ritornoConvertDb->numeroDecimali != '' ? $ritornoConvertDb->numeroDecimali : '0';$sepDec = $ritornoConvertDb->separatoreDecimali != '' ? $ritornoConvertDb->separatoreDecimali : '.';$sepMigl = $ritornoConvertDb->separatoreMigliaia != '' ? $ritornoConvertDb->separatoreMigliaia : ',';$prezzoNetto = number_format($prezzoNetto, $numDec, $sepDec, $sepMigl);}$ritorno .= ('<span>€ ' . $prezzoNetto . '</span>');}else{$ritorno = $valoreRiferimento->valoriCalcolati->prezzoNettoCalcolato;if ($ritornoConvertDb && $ritornoConvertDb->tipoDato == 'double') {$numDec = $ritornoConvertDb->numeroDecimali != '' ? $ritornoConvertDb->numeroDecimali : '0';$sepDec = $ritornoConvertDb->separatoreDecimali != '' ? $ritornoConvertDb->separatoreDecimali : '.';$sepMigl = $ritornoConvertDb->separatoreMigliaia != '' ? $ritornoConvertDb->separatoreMigliaia : ',';$ritorno = number_format($ritorno, $numDec, $sepDec, $sepMigl);}}}break;}default:{$ritorno = '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB conversione dato speciale. Valore dato speciale: ' . $ritornoConvertDb->datoSpeciale . ' non gestito</p>';break;}}return $ritorno;}/*** @param $html* @param $alberoParent AlberoMenuProdotti* @param $ritorno* @param $valoriSupporto* @param Translating $translating* @param string $locale* @param array|null $twigAppArray* @return array*/static function convertiLayoutStrutturaCategoria($html, $alberoParent, $ritorno, $valoriSupporto, PagineEComponenti $pagina, Translating $translating, ServiziController $serviziController, $ordineCasuale = false, $locale = 'it', $twigAppArray = null){if (!$ritorno){$ritorno = array('html' => '','css' => '');}$ritorno['html'] = $html;while(strpos($ritorno["html"], "<TMPLT ") !== false) {//se trovo l'elemento TMPLT effettuo l'azione in base al tp//substringo l'intero tag$sbs1 = SubstringWithFind::SubstringWithFind('<TMPLT ','/>',$ritorno['html']);$elementoTagCompleto = $sbs1->substring;//ottengo il tp$sbTipo = SubstringWithFind::SubstringWithFind('tp="','"',$elementoTagCompleto,0,true);$tipo = $sbTipo->substring;switch ($tipo) {case "DATO-DB":{$ritornoConvertDb = Templating::ConvertiStringaDatoDb($elementoTagCompleto);$valoreSostituito = "";$chiaveRighe = Costanti::T_LISTA_CATEGORIE;if (array_key_exists($chiaveRighe, $valoriSupporto)) {$valoreSostituito = '';if ($ritornoConvertDb->datoSpeciale != '' && $ritornoConvertDb->datoSpeciale == 'risaliImgCategorie') {$valoreSostituito = Templating::ritornaValoreDatoDbSpeciale($ritornoConvertDb, $serviziController, $valoriSupporto[$chiaveRighe]);} else {$serviziController->ScriviLogDebug(print_r($valoriSupporto[$chiaveRighe], true));$valoreSostituito = Templating::ritornaValoreDaPercorso($valoriSupporto[$chiaveRighe], $ritornoConvertDb->percorso, $ritornoConvertDb->nomeColonna, $ritornoConvertDb);}if ($valoreSostituito != '' && $valoreSostituito) {if ($ritornoConvertDb->immagine) {if ($serviziController->imageNotFound == null){$serviziController->imageNotFound = $serviziController->impostazioni->ritornaImpostazioneDaNome('ImmagineNonPresenteProdotto');}$valoreSostituito = '<img src="' . ($valoreSostituito != '' ? $valoreSostituito : $serviziController->imageNotFound ) . '" class="' . $ritornoConvertDb->class . '" id="' . $ritornoConvertDb->id . '" />';}$valoreSostituito = '<span style="' . $ritornoConvertDb->style . '" class="' . $ritornoConvertDb->class . '" id="' . $ritornoConvertDb->id . '">' . $valoreSostituito . '</span>';$ritorno['html'] = str_replace($elementoTagCompleto, $valoreSostituito, $ritorno['html']);} else {$ritorno['html'] = str_replace($elementoTagCompleto, 'Errore! Dato database non trovato!', $ritorno['html']);}} else {$ritorno['html'] = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB in struttura categoria. Chiave righe: ' . $chiaveRighe . ' non trovata</p>', $ritorno['html']);}break;}case "ELEMENTO-DIZIONARIO":{$ritornoDizionario = Templating\RitornoElementoDizionario::OttieniDaElementoTag($elementoTagCompleto);$traduzione = $translating->OttieniElementoDizionario($ritornoDizionario->identificativo, $ritornoDizionario->famiglia);$ritornoElementiBase = Templating\RitornoElementiBase::OttieniDaElementoTag($elementoTagCompleto);if ($traduzione){if ($ritornoDizionario->link != '' || $ritornoDizionario->linkAutomatico != ''){$link = $ritornoDizionario->link;if ($ritornoDizionario->linkAutomatico != ''){$link = Templating::creaLinkAutomatico($ritornoDizionario->linkAutomatico, $serviziController->router, $valoriSupporto, $pagina, $ordineCasuale, $serviziController->logger, $serviziController);}$valFinale = '<a ' . $ritornoElementiBase->RitornaStringaElementiBase() . ' title="' . $traduzione->valoreUscita . '" href="' . $link . '" >' . $traduzione->valoreUscita . '</a>';}else{$valFinale = '<span ' . $ritornoElementiBase->RitornaStringaElementiBase() . '>' . $traduzione->valoreUscita . '</span>';}$ritorno['html'] = str_replace($elementoTagCompleto, $valFinale, $ritorno['html']);}else{$ritorno['html'] = str_replace($elementoTagCompleto, '<p style="color: red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore! Identificativo o famiglia non trovato!</p>', $ritorno['html']);}break;}case "SUB-MENU":{break;}case "DIV-CLICCABILE":{$sbs1 = SubstringWithFind::SubstringWithFind('<TMPLT ','<TMPLT DIV-CLICCABILE />',$ritorno['html']);$elementoNuovo = $sbs1->substring;$sbsTestata = SubstringWithFind::SubstringWithFind('<TMPLT ','>',$elementoNuovo);//$this->logger->debug('Sbs testata: ' . $sbsTestata->substring);$stringaSostituireTestata = Templating::convertiTestataDivSecondario($sbsTestata->substring, $serviziController, $serviziController->router, $valoriSupporto, $serviziController->logger, $ordineCasuale);//$this->logger->debug('Stringa sostituire testat: ' . $stringaSostituireTestata);$elementoNuovo = str_replace($sbsTestata->substring, $stringaSostituireTestata, $elementoNuovo);$elementoNuovo = str_replace('<TMPLT DIV-CLICCABILE />', '</a>', $elementoNuovo);$ritorno['html'] = str_replace($sbs1->substring, $elementoNuovo, $ritorno['html']);break;}case "BUTTON":{$ritornoButton = RitornoButton::RitonaDaTagCompleto($elementoTagCompleto);$valoreLink = $ritornoButton->clicLink;if ($ritornoButton->linkAutomatico != ''){$valoreLink = Templating::creaLinkAutomatico($ritornoButton->linkAutomatico, $serviziController->router, $valoriSupporto, $pagina, $ordineCasuale, $serviziController->logger, $serviziController);}$testo = $ritornoButton->testo;if ($ritornoButton->identificativo != ''){$trad = $serviziController->translating->OttieniElementoDizionario($ritornoButton->identificativo, $ritornoButton->famiglia);$testo = $trad->valoreUscita;}$stringaSostituzione = '<button href="' . $valoreLink . '" id="' . $ritornoButton->id . '" class="' . $ritornoButton->class . '" style="' . $ritornoButton->style . '">' . $testo . '</button>';$ritorno['html'] = str_replace($elementoTagCompleto, $stringaSostituzione, $ritorno['html']);break;}default:{$ritorno['html'] = str_replace($elementoTagCompleto, '<p style="color: red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore convertiLayoutStrutturaCategoria! Tipo non gestito:' . $tipo . '</p>', $ritorno['html']);break;}}}return $ritorno;}/*** @param $array* @param array $valori //è il percorso con i vari step per entrare in dettaglio nell'array ($array)* @param string $colonnaDaPrendere* @param RitornoDatoDb $ritornoDatoDb //Se è null non effettuo il check sul tipo di dato* @return mixed*/public static function ritornaValoreDaPercorso($array, $valori = array(), $colonnaDaPrendere = "", RitornoDatoDb $ritornoDatoDb = null){if (count($valori) > 0 && $array != null){$array2 = (is_array($array) ? $array : get_object_vars($array))[array_shift($valori)];return Templating::ritornaValoreDaPercorso($array2, $valori, $colonnaDaPrendere, $ritornoDatoDb);}else{$valore = '';if ($array != null && array_key_exists($colonnaDaPrendere, (is_array($array) ? $array : get_object_vars($array)))) {$valore = (is_array($array) ? $array : get_object_vars($array))[$colonnaDaPrendere];if ($ritornoDatoDb && $ritornoDatoDb->tipoDato == 'double') {$numDec = $ritornoDatoDb->numeroDecimali != '' ? $ritornoDatoDb->numeroDecimali : '0';$sepDec = $ritornoDatoDb->separatoreDecimali != '' ? $ritornoDatoDb->separatoreDecimali : '.';$sepMigl = $ritornoDatoDb->separatoreMigliaia != '' ? $ritornoDatoDb->separatoreMigliaia : ',';$valore = number_format($valore, $numDec, $sepDec, $sepMigl);}}return $valore;}}/*** @param $elemento* @param $ritornoElementiBase RitornoElementiBase* @return string*/public static function ritornaSelectTipologiePreimpostate($elemento, RitornoElementiBase $ritornoElementiBase, ServiziController $servizi){$stringaSelect = '';/** @var $elemento MappaCategoriaArticolo */if ($elemento instanceof MappaCategoriaArticolo){if ($elemento->articolo && $elemento->articolo->usaTipologiePreimpostate && $elemento->articolo->tipologiaPreimpostata && $elemento->articolo->tipologiaPreimpostata->liste && count($elemento->articolo->tipologiaPreimpostata->liste) > 0){$stringaSelect = '<select ' . $ritornoElementiBase->RitornaStringaElementiBase() . ' >';/** @var TipologiaPreimpostataLista $itm */foreach ($elemento->articolo->tipologiaPreimpostata->liste as $itm){$servizi->impostazioni->caricaCacheImpostazioniDaNomi(array('MostraDisponibilitaShop', 'NascondiPrezziShop', ''));$mostraDisponibilita = $servizi->impostazioni->ritornaImpostazioneDaNome('MostraDisponibilitaShop');$nascondiPrezzi = $servizi->impostazioni->ritornaImpostazioneDaNome('NascondiPrezziShop');$stringaPrezzo = '';$stringaDisponibile = '';$nettoCad = 0;if (!$nascondiPrezzi) {/** @var $ritornoNettoCad RitornoCalcoloPrezzoNetto */$ritornoNettoCad = $servizi->calcolaPrezzoNettoMappaOVariante($elemento);$nettoCad = $ritornoNettoCad->prezzoNetto * $itm->fattoreMoltiplicazione;$stringaPrezzo = ' -- € ' . str_replace('.', ',', $nettoCad);}$disponibile = 0;if ($mostraDisponibilita) {/** @var RitornoCalcoloDisponibile $ritornoDisponibile */$ritornoDisponibile = $servizi->calcolaDisponibileMappaOVariante($elemento, $servizi->impostazioni);$disponibile = floor($ritornoDisponibile->disponibileFinale / $itm->fattoreMoltiplicazione);$stringaDisponibile = ' -- ' . $servizi->translating->OttieniElementoDizionario('home_shop_disponibile_select_tipologie_preimpostate', 'home_shop')->valoreUscita . ' ' . str_replace('.',',', $disponibile);}$stringaSelect .= '<option value="' . $itm->id . '">' . $itm->nomeVisualizzato . $stringaDisponibile . $stringaPrezzo . '</option>';}$stringaSelect .= '</select>';}}else{}return $stringaSelect;}/*** @param $entita //Entità database dove iniziare il percorso di decodifica* @param $percorso //Stringa contenente il percorso per la decodica con in fondo il nome della colonna finale attributi.attributiInLingua.testoVisualizzato* @return mixed*/public static function ritornaValoreDaPercorsoValoriSpeciali($entita, $percorso){$arrayPercorso = explode(".", $percorso);$colonnaDaPrendere = array_pop($arrayPercorso); //Elimino l'ultimo e lo salvo nella colonna da prendere$ritornoDatoDb = new RitornoDatoDb();$ritornoDatoDb->percorso = $percorso;return self::ritornaValoreDaPercorso($entita, $arrayPercorso, $colonnaDaPrendere, $ritornoDatoDb);}/** @return array */public static function PagineEComponentiRitornaTipiPagina(){return array("Pagina standard" => 'paginaStandard',"Pagina carrello" => 'paginaCarrello',"Pagina finalizza carrello" => 'paginaFinalizzaCarrello',"Pagina homeshop" => 'paginaHomeShop',"Pagina dettaglio articolo" => "paginaDettaglioArticolo","Pagina dettaglio ordine" => "paginaDettaglioOrdine","Pagina gestione utente" => "paginaGestioneUtente","Componente -> carrello" => "componenteCarrello","Componente -> alberoCategorie" => "componenteAlberoCategorie","Componente -> ordine" => "componenteOrdine","Componente -> utente" => "componenteUtente","Componente -> attributo articolo" => "componenteAttributoArticolo","Riga -> carrello" => "rigaCarrello","Riga -> ordine" => "rigaOrdine","Riga -> homeShop" => "rigaHomeShop","Riga -> magazzino secondario" => "rigaMagazzinoSecondario","Mail standard" => 'mailStandard',"Mail nuovo ordine" => 'mailNuovoOrdine',"Mail ordine esportato" => 'mailOrdineEsportato',"Mail ordine pagamento registrato" => "mailOrdinePagamentoRegistrato","Mail utente nuovo inserimento" => 'mailUtenteNuovoInserimento',"Mail utente cambio mail" => "mailUtenteCambioMail","Mail utente cambio password" => "mailUtenteCambioPassword","Mail cambio stato pagamento" => 'mailCambioStatoPagamento',"Mail invio contatto offerta" => 'mailInvioContattoOfferta',"Modal richiesta prezzo" => 'modalRichiestaPrezzo',"Modal conferma ordinazione magazzini secondari" => 'modalOrdinazioneMagazziniSecondari');}/*** @return array*/public static function RitornaTipiPaginaPerMetaTag(){return array("Homeshop" => 'homeshop',"Dettaglio articolo" => 'dettaglioArticolo',"" => '');}/*** @param $route* @param $variabiliTemplate* @param ManagerRegistry $doctrine* @param ServiziController $serviziController* @param null $idPagina* @return string*/public static function ritornaMetaTagsRoute($route, $variabiliTemplate, ManagerRegistry $doctrine, ServiziController $serviziController, $idPagina = null){$ritorno = '';$pagina = null;if ($idPagina != ''){$pagina = $doctrine->getRepository(PagineEComponenti::class)->find($idPagina);}$tipoRiferimento = '';switch (strtolower($route)){case "home_shop_comune":case "shop_comune_cerca_generico":case "home_shop_comune_naviga":{$tipoRiferimento = 'homeshop';break;}case "home_shop_comune_dettaglio_prodotto":{$tipoRiferimento = 'dettaglioArticolo';break;}}/** @var MetaTags[] $metaTagsRilevati */$metaTagsRilevati = $doctrine->getRepository(MetaTags::class)->createQueryBuilder('metaTags')->where('metaTags.attiva = :atv')->setParameter('atv', true)->andWhere("metaTags.categoriaPagina = :tp OR metaTags.categoriaPagina = ''")->setParameter('tp', $tipoRiferimento)->getQuery()->getResult();foreach ($metaTagsRilevati as $meta){/** @var MetaTagsDettagli $dettaglio */foreach ($meta->getDettagli() as $dettaglio){$stringa = $dettaglio->getValore();while(strpos($stringa, '<TMPLT tp="DATO-DB"') !== false) {//se trovo l'elemento TMPLT effettuo l'azione in base al tp//substringo l'intero tag$sbs1 = SubstringWithFind::SubstringWithFind('<TMPLT ','/>',$stringa);$elementoTagCompleto = $sbs1->substring;$ritornoConvertDb = Templating::ConvertiStringaDatoDb($elementoTagCompleto);$cacheCategorie = new Caching_Categorie($serviziController);$valoreSostituito = "";$chiaveRighe = '';if ($tipoRiferimento == 'homeshop'){if (array_key_exists('cat1', $variabiliTemplate) && $variabiliTemplate['cat1'] != '') {$arr = $cacheCategorie->getCategoriaDaNomeUnivoco($variabiliTemplate['cat1']);//$arr = $doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $variabiliTemplate['cat1']));$valoreSostituito = Templating::elaboraDatoDbPerMetaTag($arr, $ritornoConvertDb, $stringa);$stringa = str_replace($elementoTagCompleto, $valoreSostituito, $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB CAT1. Chiave righe: ' . $chiaveRighe . ' non trovata</p>', $stringa);}if (array_key_exists('cat2', $variabiliTemplate) && $variabiliTemplate['cat1'] != '') {$arr = $cacheCategorie->getCategoriaDaNomeUnivoco($variabiliTemplate['cat2']);//$arr = $doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $variabiliTemplate['cat2']));$valoreSostituito = Templating::elaboraDatoDbPerMetaTag($arr, $ritornoConvertDb, $stringa);$stringa = str_replace($elementoTagCompleto, $valoreSostituito, $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB CAT12. Chiave righe: ' . $chiaveRighe . ' non trovata</p>', $stringa);}if (array_key_exists('cat3', $variabiliTemplate) && $variabiliTemplate['cat3'] != '') {$arr = $cacheCategorie->getCategoriaDaNomeUnivoco($variabiliTemplate['cat3']);//$arr = $doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $variabiliTemplate['cat3']));$valoreSostituito = Templating::elaboraDatoDbPerMetaTag($arr, $ritornoConvertDb, $stringa);$stringa = str_replace($elementoTagCompleto, $valoreSostituito, $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB CAT3. Chiave righe: ' . $chiaveRighe . ' non trovata</p>', $stringa);}if (array_key_exists('cat4', $variabiliTemplate) && $variabiliTemplate['cat4'] != '') {$arr = $cacheCategorie->getCategoriaDaNomeUnivoco($variabiliTemplate['cat4']);//$arr = $doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $variabiliTemplate['cat4']));$valoreSostituito = Templating::elaboraDatoDbPerMetaTag($arr, $ritornoConvertDb, $stringa);$stringa = str_replace($elementoTagCompleto, $valoreSostituito, $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB CAT4. Chiave righe: ' . $chiaveRighe . ' non trovata</p>', $stringa);}if (array_key_exists('cat5', $variabiliTemplate) && $variabiliTemplate['cat5'] != '') {$arr = $cacheCategorie->getCategoriaDaNomeUnivoco($variabiliTemplate['cat5']);//$arr = $doctrine->getRepository(Categorie::class)->findOneBy(array('nomeUnivoco' => $variabiliTemplate['cat5']));$valoreSostituito = Templating::elaboraDatoDbPerMetaTag($arr, $ritornoConvertDb, $stringa);$stringa = str_replace($elementoTagCompleto, $valoreSostituito, $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB CAT1. Chiave righe: ' . $chiaveRighe . ' non trovata</p>', $stringa);}}else {$chiaveRighe = Templating::ottieniElementoDaUtilizzareInBaseATipoPagina($tipoRiferimento);if (array_key_exists($chiaveRighe, $variabiliTemplate)) {$valoreSostituito = Templating::elaboraDatoDbPerMetaTag($variabiliTemplate[$chiaveRighe], $ritornoConvertDb, $stringa);$stringa = str_replace($elementoTagCompleto, $valoreSostituito, $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Errore DATO-DB. Chiave righe: ' . $chiaveRighe . ' non trovata</p>', $stringa);}}}//cerco il tag speciale {%{while(strpos($stringa, '{%{') !== false) {$sbs2 = SubstringWithFind::SubstringWithFind('{%{','}‰}',$stringa);$elementoTagCompleto = $sbs2->substring;$sbs1 = SubstringWithFind::SubstringWithFind('{%{','}‰}',$stringa,0,true);$valoreSpeciale = $sbs1->substring;$chiaveRighe = Templating::ottieniElementoDaUtilizzareInBaseATipoPagina($tipoRiferimento);switch ($valoreSpeciale){case 'img':{if ($tipoRiferimento == 'dettaglioArticolo') {$pathImg = $serviziController->ottieniImmagineDaMappaCategoriaArticolo($variabiliTemplate[$chiaveRighe], true);$stringa = str_replace($elementoTagCompleto, $pathImg, $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Tipo riferimento non mappato in risoluzione meta tags</p>', $stringa);}break;}case 'url':{$stringa = str_replace($elementoTagCompleto, $serviziController->requestStack->getCurrentRequest()->getRequestUri(), $stringa);break;}case 'prezzoNetto':{if ($tipoRiferimento == 'dettaglioArticolo') {$stringa = str_replace($elementoTagCompleto, $serviziController->calcolaPrezzoNettoMappaOVariante($variabiliTemplate[$chiaveRighe]), $stringa);}else{$stringa = str_replace($elementoTagCompleto, '<p style="color:red; font-weight: bold; text-decoration: underline; font-style: oblique;">Tipo riferimento non mappato in risoluzione meta tags</p>', $stringa);}break;}}}$ritorno .= $stringa . ' ';}}return $ritorno;}public static function elaboraDatoDbPerMetaTag($arrayValori, RitornoDatoDb $ritornoConvertDb, $elementoTagCompleto){$valoreSostituito = Templating::ritornaValoreDaPercorso($arrayValori, $ritornoConvertDb->percorso, $ritornoConvertDb->nomeColonna, $ritornoConvertDb);$ritorno = '';if ($valoreSostituito != '' && $valoreSostituito) {$ritorno .= str_replace($elementoTagCompleto, $valoreSostituito, $elementoTagCompleto);} else {$ritorno .= 'Errore! Dato database non trovato!';}return $ritorno;}/*** @param $tipoPagina* @param $valoriSupporto* @param Environment $twig* @param bool $soloForm* @return string|null* @throws LoaderError* @throws RuntimeError* @throws SyntaxError*/public static function ritornaDefaultLayoutPagineEComponenti($tipoPagina, $valoriSupporto, Environment $twig, $soloForm = false){$template = "";if ($soloForm){$valoriSupporto['soloForm'] = '1';}switch ($tipoPagina){case "paginaStandard":case "componenteCarrello":case "componenteVMAC":case "componenteOrdine":case "componenteUtente":case "rigaCarrello":case "rigaOrdine":case "rigaHomeShop":case "mailStandard":{break;}case "modalRichiestaPrezzo":{$template = $twig->render('ZZ_front_end/modal/modal_richiesta_prezzo_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "paginaCarrello":{$template = $twig->render('ZZ_front_end/carrello/carrello_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "paginaFinalizzaCarrello":{$template = $twig->render('ZZ_front_end/carrello/carrello_finalizza_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "paginaHomeShop":{$template = $twig->render('ZZ_front_end/shop/shop_comune_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "paginaDettaglioArticolo":{$template = $twig->render('ZZ_front_end/shop/dettaglio_prodotto/shop_comune_dettaglio_prodotto_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "paginaDettaglioOrdine":{$template = $twig->render('ZZ_front_end/ordini/dettaglio_ordine_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "mailNuovoOrdine":{$template = $twig->render('email/ordini/nuovo_ordine_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "mailUtenteNuovoInserimento":{$template = $twig->render('email/registrazione/nuovo_inserimento_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "mailCambioStatoPagamento":{$template = $twig->render('email/ordini/cambiato_stato_pagamento_ordine_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "mailOrdineEsportato":{$template = $twig->render('email/ordini/ordine_esportato_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "mailOrdinePagamentoRegistrato":{$template = $twig->render('email/ordini/pagamento_ordine_registrato_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "mailUtenteCambioMail":{$template = $twig->render('email/utenti/cambio_mail_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}case "mailUtenteCambioPassword":{$template = $twig->render('email/utenti/cambio_password_dflt.html.twig', $valoriSupporto ? $valoriSupporto : array());break;}}return $template;}public static function ElaboraValoriSpecialiInCodiceHTML($codiceHtml, $valoriSupporto, ServiziController $serviziController, PagineEComponenti $pagina, $ordineCasuale = false, LoggerInterface $logger = null){$dizionarioElementiTrovati = array();$dizionarioIdElementiTrovati = array(); //lista dei soli ID per il recupero nel database$listaId = array();$listaElementiTrovati = SubstringWithFind::TrovaTutteOccorrenzeInStringa($codiceHtml, '%%:', ':%%');foreach ($listaElementiTrovati as $item){ //Creo dizionaro con chiave azione e sotto tutti gli array dello stesso elemento$ritorno = RitornoValoriSpecialiDaSostituire::OttieniDaElementoTag($item, $logger);if (!array_key_exists($ritorno->azione, $dizionarioElementiTrovati)){$dizionarioElementiTrovati[$ritorno->azione] = array();$dizionarioIdElementiTrovati[$ritorno->azione] = array();}array_push($dizionarioElementiTrovati[$ritorno->azione], $ritorno);array_push($dizionarioIdElementiTrovati[$ritorno->azione], $ritorno->idEntita);array_push($listaId, $ritorno->azione);}$recuperoDati = new RecuperoDati($serviziController->doctrine, $serviziController->impostazioni, $serviziController);foreach ($dizionarioElementiTrovati as $key => $value){//Cicli if con l'azioneif ($key == 'Attributi') {$attributiTrovati = array();if($GLOBALS['ELB_VAL_SPEC_ID'][$key]){$attributiTrovati = $GLOBALS['ELB_VAL_SPEC_ID'][$key];}else{$attributiTrovati = $recuperoDati->caricaAttributiDaDB($dizionarioIdElementiTrovati[$key], $serviziController->locale);$GLOBALS['ELB_VAL_SPEC_ID'][$key] = $attributiTrovati;}$dizionarioConIdComeChiaveEEntita = $recuperoDati->creaArrayAssociativoConChiaveId($attributiTrovati);/** @var RitornoValoriSpecialiDaSostituire $itm */foreach ($value as $itm) {if (array_key_exists($itm->idEntita, $dizionarioConIdComeChiaveEEntita)) { // verifico che l'entita con id è stata trovata nel db/** @var Attributi $entitaCollegataDb */$entitaCollegataDb = $dizionarioConIdComeChiaveEEntita[$itm->idEntita];$valoreDecodicia = Templating::ritornaValoreDaPercorsoValoriSpeciali($entitaCollegataDb, $itm->percorsoDecodifica);$codiceHtml = str_replace($itm->elementoTagOriginale, $valoreDecodicia, $codiceHtml); //Sostituisco il tag con il corrispondente valore decodificato} else {$codiceHtml = str_replace($itm->elementoTagOriginale, 'Errore decodifica valore speciale', $codiceHtml);}}}else if ($key == 'RecuperoPercorsoDb'){/** @var RitornoValoriSpecialiDaSostituire $itm */foreach ($value as $itm) {$entitaCollegataDb = $valoriSupporto[Templating::ottieniElementoDaUtilizzareInBaseATipoPagina($pagina->getTipoPagina(), $ordineCasuale)];$valoreDecodicia = Templating::ritornaValoreDaPercorsoValoriSpeciali($entitaCollegataDb, $itm->percorsoDecodifica);if ($valoreDecodicia !== false){$codiceHtml = str_replace($itm->elementoTagOriginale, $valoreDecodicia, $codiceHtml); //Sostituisco il tag con il corrispondente valore decodificato}else{$codiceHtml = str_replace($itm->elementoTagOriginale, 'Errore decodifica valore speciale- Percorso: ' . $itm->percorsoDecodifica, $codiceHtml);}}}else if ($key == 'Dizionario'){/** @var RitornoValoriSpecialiDaSostituire $itm */foreach ($value as $itm) {$traduzione = $serviziController->translating->OttieniElementoDizionario($itm->identificativo, $itm->famiglia)->valoreUscita;if ($traduzione !== false){$codiceHtml = str_replace($itm->elementoTagOriginale, $traduzione, $codiceHtml); //Sostituisco il tag con il corrispondente valore decodificato}else{$codiceHtml = str_replace($itm->elementoTagOriginale, 'Errore elemento dizionario non trovato: ' . $itm->identificativo, $codiceHtml);}}}}return $codiceHtml;}public static function ElaboraTagSostituzionePercorso($codiceHtml, $valoriSupporto, ServiziController $serviziController, LoggerInterface $logger = null){$ritorno = $codiceHtml;$listaElementiTrovati = SubstringWithFind::TrovaTutteOccorrenzeInStringa($codiceHtml, '%££%', '%££%');foreach ($listaElementiTrovati as $item){$itemElaborato = str_replace('%££%', '', $item);//%££%couponForm.children._token.vars.value%££%$percorso = explode('.', $itemElaborato);$colonnaDaPrendere = array_pop($percorso);$valore = self::ritornaValoreDaPercorso($valoriSupporto, $percorso, $colonnaDaPrendere, null);$ritorno = str_replace($item, $valore, $ritorno);if($logger)$logger->debug('Item: ' . $item . '\nItem elaborato: ' . $itemElaborato . '\nPercorso: ' . print_r($percorso, true) . '\nColonna: ' . $colonnaDaPrendere . '\nValore: ' . $valore );}return $ritorno;}public static function ElaboraTagSostituzioneEntita($codiceHtml, $valoriSupporto, ServiziController $serviziController, LoggerInterface $logger = null){$ritorno = $codiceHtml;$listaElementiTrovati = SubstringWithFind::TrovaTutteOccorrenzeInStringa($codiceHtml, Costanti::LYT_DELIMITATORE_ENTITA, Costanti::LYT_DELIMITATORE_ENTITA);foreach ($listaElementiTrovati as $item) {$itemElaborato = str_replace(Costanti::LYT_DELIMITATORE_ENTITA, '', $item);//$ENT$select££App:AssociazioneSpedizioniClienti.spedizione.descrizione+ +consegna.descrizione$ENT$$elementoIniziale = '';if (strpos($itemElaborato, '££') !== false) { //Vuol dire che contiene il carattere ££ e quindi devo verificare cosa fare$arr = explode('££', $itemElaborato);$elementoIniziale = $arr[0];$itemElaborato = $arr[1];} else { //Non è presente il tag iniziale}//App:AssociazioneSpedizioniClienti.spedizione.descrizione+ +consegna.descrizione$esplosoPrimo = explode('.', $itemElaborato);$entita = $esplosoPrimo[0];$itemElaborato = str_replace($entita . '.', '', $itemElaborato);//spedizione.descrizione+ +consegna.descrizioneif (strpos($itemElaborato, '+') !== false)$esplodoCompoenenti = explode('+', $itemElaborato);else$esplodoCompoenenti = array($itemElaborato);$stringaRitorno = '';switch ($entita) {case 'AppBundle:AssociazioneSpedizioniClienti':case 'App:AssociazioneSpedizioniClienti':{$assSped = $serviziController->recuperoDati->RitornaAssociazioneSpedizioneClienti(null);//Se null viene preso in automatico l'attuale$stringaRitorno .= self::elaboraPercorsoPerDatoDaEntita($assSped, $esplodoCompoenenti, $logger, '');break;}case 'AppBundle:Pagamenti':case 'App:Pagamenti':{$pagamenti = $serviziController->recuperoDati->RitornaPagamenti();$idSelezionato = '';if(array_key_exists(Costanti::ID_PAGAMENTO_SELEZIONATO, $valoriSupporto))$idSelezionato = $valoriSupporto[Costanti::ID_PAGAMENTO_SELEZIONATO];$stringaRitorno .= self::elaboraPercorsoPerDatoDaEntita($pagamenti, $esplodoCompoenenti, $logger, $idSelezionato);break;}case 'AppBundle:ModalitaSpedizione':case 'App:ModalitaSpedizione':{$spedizione = $serviziController->recuperoDati->RitornaModalitaSpedizione();$idSelezionato = '';if(array_key_exists(Costanti::ID_MODALITA_SPEDIZIONE_SELEZIONATA, $valoriSupporto))$idSelezionato = $valoriSupporto[Costanti::ID_MODALITA_SPEDIZIONE_SELEZIONATA];$stringaRitorno .= self::elaboraPercorsoPerDatoDaEntita($spedizione, $esplodoCompoenenti, $logger, $idSelezionato);break;}case 'AppBundle:ModalitaPagamento':case 'App:ModalitaPagamento':{$pagamenti = $serviziController->recuperoDati->RitornaModalitaPagamento();$idSelezionato = '';if(array_key_exists(Costanti::ID_MODALITA_PAGAMENTO_SELEZIONATA, $valoriSupporto))$idSelezionato = $valoriSupporto[Costanti::ID_MODALITA_PAGAMENTO_SELEZIONATA];$stringaRitorno .= self::elaboraPercorsoPerDatoDaEntita($pagamenti, $esplodoCompoenenti, $logger, $idSelezionato);break;}case 'AppBundle:Destinazioni':case 'App:Destinazioni':{$destinazioni = array();if(array_key_exists(Costanti::IO_DESTINAZIONI, $valoriSupporto)){foreach ($valoriSupporto[Costanti::IO_DESTINAZIONI] as $d){array_push($destinazioni, Destinazioni::CreaDaConversioneEntity($d));}}$utente = $serviziController->OttieniUtenteCorrente();if ($utente && count($destinazioni) <= 0) {$destinazioni = $serviziController->recuperoDati->RitornaDestinazioni($utente);}if(count($destinazioni) > 0) {$idSelezionato = '';if (array_key_exists(Costanti::ID_DESTINAZIONE_SELEZIONATA, $valoriSupporto))$idSelezionato = $valoriSupporto[Costanti::ID_DESTINAZIONE_SELEZIONATA];$stringaRitorno .= self::elaboraPercorsoPerDatoDaEntita($destinazioni, $esplodoCompoenenti, $logger, $idSelezionato, true);}break;}case 'AppBundle:Nazioni':case 'App:Nazioni':{$nazioni = $serviziController->recuperoDati->RitornaNazioni();$idSelezionato = '';if(array_key_exists(Costanti::ID_NAZIONE_SELEZIONATA, $valoriSupporto))$idSelezionato = $valoriSupporto[Costanti::ID_NAZIONE_SELEZIONATA];$stringaRitorno .= self::elaboraPercorsoPerDatoDaEntita($nazioni, $esplodoCompoenenti, $logger, $idSelezionato);break;}}$ritorno = str_replace($item, $stringaRitorno, $ritorno);}return $ritorno;}/*** @param $entita* @param $componentiPercorso* @param null|LoggerInterface $logger* @param $selezionato string* @return string*/public static function elaboraPercorsoPerDatoDaEntita($entita, $componentiPercorso, $logger = null, $idSelezionato = '', $aggiungiOpzioneVuota = false){$stringaRitorno = '';foreach ($entita as $pag){$testoElaboratoPercorso = '';if($aggiungiOpzioneVuota){$stringaRitorno .= ('<option value=""></option>');}foreach ($componentiPercorso as $percorso) {//$->notice('Percorso: ' . $percorso);if(strpos($percorso, '\'') === false){if(strpos($percorso, '.') !== false){$percorsoSplittato = explode('.', $percorso);$colonnaDaPrendere = array_pop($percorsoSplittato);//$->notice('Percorso: ' . $percorso . ' --- ColonnaDaPrendere: ' . $colonnaDaPrendere . ' --- PercorsoSplittato: ' . print_r($percorsoSplittato));}else{$percorsoSplittato = array();$colonnaDaPrendere = $percorso;}$testoElaboratoPercorso .= self::ritornaValoreDaPercorso($pag, $percorsoSplittato, $colonnaDaPrendere);}else{$testoElaboratoPercorso .= str_replace('\'', '', $percorso);}}$stringaRitorno .= ('<option value="' . $pag->id . '"' . ($pag->id == $idSelezionato ? ' selected' : '') . '>' . $testoElaboratoPercorso . '</option>');}return $stringaRitorno;}/*** @param $layout* @return array*/public static function RitornaArrayFinaleInBaseAlLayout($layout){$ritorno = array();switch ($layout){case "paginaCarrello":{$formCoupon = GJS_FormPreimpostato::Crea(Costanti::CC_RADICE_FORM,Costanti::CC_RADICE_FORM,'%££%' . Costanti::CC_RADICE_FORM . '.vars.action%££%','couponForm','Coupon form','%££%' . Costanti::CC_RADICE_FORM . '.vars.method%££%',true);$formModificaPagamentoSpedizione = GJS_FormPreimpostato::Crea(Costanti::MPSC_RADICE_FORM,Costanti::MPSC_RADICE_FORM,'%££%' . Costanti::MPSC_RADICE_FORM . '.vars.action%££%',Costanti::MPSC_RADICE_FORM,'Modifica spedizione pagamento form','%££%' . Costanti::MPSC_RADICE_FORM . '.vars.method%££%',true);$ritorno['Coupon form'] = array('label' => 'Coupon form','content' => array('type' => 'form-preimpostato','components' => self::RitornaElementiCouponForm(Costanti::CC_RADICE_FORM),'configurazioneJson' => $formCoupon->ConvertiJsonJavascript()),'category' => 'Form necessari','attributes' => array('class' => 'fa fa-forumbee'));$ritorno['Modifica spedizione pagamento form'] = array('label' => 'Modifica spedizione pagamento form','content' => array('type' => 'form-preimpostato','components' => self::RitornaElementiModificaSpedizionePagamentoInCarrello(Costanti::MPSC_RADICE_FORM),'configurazioneJson' => $formModificaPagamentoSpedizione->ConvertiJsonJavascript()),'category' => 'Form necessari','attributes' => array('class' => 'fa fa-forumbee'));break;}case "paginaFinalizzaCarrello":{$formCheckout = GJS_FormPreimpostato::Crea(Costanti::IO_RADICE_FORM,Costanti::IO_RADICE_FORM,'%££%' . Costanti::IO_RADICE_FORM . '.vars.action%££%','checkoutCarrello','checkoutCarrello','%££%' . Costanti::IO_RADICE_FORM . '.vars.method%££%',true);$ritorno['Checkout'] = array('label' => 'Checkout','content' => array('type' => 'form-preimpostato','components' => self::RitornaElementiInvioOrdine(Costanti::IO_RADICE_FORM, true),'configurazioneJson' => $formCheckout->ConvertiJsonJavascript()),'category' => 'Form necessari','attributes' => array('class' => 'fa fa-forumbee'));break;}case "paginaGestioneUtente":{$formCambioPassword = GJS_FormPreimpostato::Crea(Costanti::CP_RADICE_FORM,Costanti::CP_RADICE_FORM,'%££%' . Costanti::CP_RADICE_FORM . '.vars.action%££%','cambiaPassword','Cambia password','%££%' . Costanti::CP_RADICE_FORM . '.vars.method%££%',true);$formRegistrazioneUtente = GJS_FormPreimpostato::Crea(Costanti::RU_RADICE_FORM,Costanti::RU_RADICE_FORM,'%££' . Costanti::RU_RADICE_FORM . '.vars.action%££%',"registrazioneUtente","Registrazione utente",'%££%' . Costanti::RU_RADICE_FORM . '%££%',true);$formCambioMail = GJS_FormPreimpostato::Crea(Costanti::CM_RADICE_FORM,Costanti::CM_RADICE_FORM,'%££%' . Costanti::CM_RADICE_FORM . '.vars.action%££%','cambiaMail','Cambia Mail','%££%' . Costanti::CM_RADICE_FORM . '.vars.method%££%',true);$ritorno['Cambia password'] = array('label' => 'Cambia password','content' => array('type' => 'form-preimpostato','components' => self::RitornaElementiCambiaPassword(Costanti::CP_RADICE_FORM),'configurazioneJson' => $formCambioPassword->ConvertiJsonJavascript()),'category' => 'Form necessari','attributes' => array('class' => 'fa fa-forumbee'));$ritorno['Registrazione utente'] = array('label' => 'Registrazione utente','content' => array('type' => 'form-preimpostato','components' => self::RitornaElementiRegistrazioneUtentePerEditorJSON(Costanti::CP_RADICE_FORM),'configurazioneJson' => $formRegistrazioneUtente->ConvertiJsonJavascript()),'category' => 'Form necessari','attributes' => array('class' => 'fa fa-forumbee'));$ritorno['Cambia mail'] = array('label' => 'Cambia mail','content' => array('type' => 'form-preimpostato','components' => self::RitornaElementiCambiaMail(Costanti::CP_RADICE_FORM),'configurazioneJson' => $formCambioMail->ConvertiJsonJavascript()),'category' => 'Form necessari','attributes' => array('class' => 'fa fa-forumbee'));break;}case "paginaDettaglioArticolo":{$formOrdinazione = GJS_FormPreimpostato::Crea('aggiungi-carrello-form','aggiungiCarrelloForm','/shopCM/cart/add/%££%' . Costanti::T_MAPPA_IDENTIFICATA . '.id%££%','ordinazioneArticolo','Ordinazione articolo','GET',false,array(),array(),array('form-ordinazione-articolo'));$ritorno['Ordinazione articolo'] = array('label' => 'Ordinazione articolo','content' => array('type' => 'form-preimpostato','components' => self::RitornaElementiOrdinazioneArticolo(),'configurazioneJson' => $formOrdinazione->ConvertiJsonJavascript()),'category' => 'Form necessari','attributes' => array('class' => 'fa fa-forumbee'));break;}}return $ritorno;}public static function RitornaElementiOrdinazioneArticolo(){return array(GJS_Components::CreaInput('qta','qta','input','number',array('form-control'),array()),GJS_Components::CreaInput('id-mappa','id-mappa','input','hidden',array(),array('value' => '%££' . Costanti::T_MAPPA_IDENTIFICATA . '.id%££%')),GJS_Components::CreaInput('disponibilita','disponibilita','input','hidden',array(),array('value' => '%££%' . Costanti::T_MAPPA_IDENTIFICATA . '.disponibile%££%')),GJS_Components::CreaInput('id-variante','id-variante','input','hidden',array(),array('value' => '%%ID-VARIANTE%%')),GJS_Components::CreaButton('btn-submit','btn-submit','submit',array('btn', 'btn-success'),array(),array(),'home_shop_ordina_btn','home_shop'));}public static function RitornaElementiCambiaMail($radice = 'form'){return array(GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::CM_NUOVA_MAIL . ']', '', 'modifica_utente_cambia_nuova_mail', 'modifica_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::CM_NUOVA_MAIL . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CM_NUOVA_MAIL,'input','email',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaInput($radice . '[' . Costanti::FORM_TOKEN . ']',$radice . ($radice != '' ? '_' : '') . Costanti::FORM_TOKEN,'input','hidden',array(),array('value' => '%££%' . Costanti::RU_RADICE_FORM . '.children._token.vars.value%££%')),GJS_Components::CreaButton($radice . '[' . Costanti::CM_APPLICA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CM_APPLICA,'submit',array('form-inline', 'btn', 'btn-large', 'btn-success'),array(),array(),'modifica_utente_cambia_mail_applica_btn','modifica_utente'));}public static function RitornaElementiCambiaPassword($radice = 'form'){return array(GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::CP_PASSWORD_CORRENTE . ']', '', 'modifica_utente_password_corrente', 'modifica_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::CP_PASSWORD_CORRENTE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CP_PASSWORD_CORRENTE,'input','password',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::CP_PASSWORD_NUOVA . ']', '', 'modifica_utente_nuova_password', 'modifica_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::CP_PASSWORD_NUOVA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CP_PASSWORD_NUOVA,'input','password',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::CP_PASSWORD_NUOVA_RIPETI . ']', '', 'modifica_utente_ripeti_password', 'modifica_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::CP_PASSWORD_NUOVA_RIPETI . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CP_PASSWORD_NUOVA_RIPETI,'input','password',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaInput($radice . '[' . Costanti::FORM_TOKEN . ']',$radice . ($radice != '' ? '_' : '') . Costanti::FORM_TOKEN,'input','hidden',array(),array('value' => '%££%' . Costanti::RU_RADICE_FORM . '.children._token.vars.value%££%')),GJS_Components::CreaButton($radice . '[' . Costanti::CP_CONFERMA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CP_CONFERMA,'submit',array('form-inline', 'btn', 'btn-large', 'btn-success'),array(),array(),'modifica_utente_cambia_password_btn','modifica_utente'));}/*** @param string $radice* @return array*/public static function RitornaElementiCouponForm($radice = 'form'){return array(GJS_Components::CreaInput($radice . '[' . Costanti::CC_CODICE_COUPON . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CC_CODICE_COUPON,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaButton($radice . '[' . Costanti::CC_APPLICA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::CC_APPLICA,'submit',array('form-inline', 'btn', 'btn-sm', 'btn-success'),array('style' => array('margin-top' => '5px'))),GJS_Components::CreaInput($radice . '[' . Costanti::FORM_TOKEN . ']',$radice . ($radice != '' ? '_' : '') . Costanti::FORM_TOKEN,'input','hidden',array(),array('value' => '%££%' . $radice . '.children._token.vars.value%££%')));}/*** @param string $radice* @return array*/public static function RitornaElementiModificaSpedizionePagamentoInCarrello($radice = Costanti::MPSC_RADICE_FORM){return array(GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_MODALITA_SPEDIZIONE . ']', '', 'carrello_modalita_spedizione', 'carrello'),GJS_Components::CreaSelect($radice . '[' . Costanti::IO_MODALITA_SPEDIZIONE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_MODALITA_SPEDIZIONE,Costanti::LYT_DELIMITATORE_ENTITA . 'App:ModalitaSpedizione.modalitaSpedizioneInLingua.testoDescrittivo' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_MODALITA_PAGAMENTO . ']', '', 'carrello_modalita_pagamento', 'carrello'),GJS_Components::CreaSelect($radice . '[' . Costanti::IO_MODALITA_PAGAMENTO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_MODALITA_PAGAMENTO,Costanti::LYT_DELIMITATORE_ENTITA . 'App:ModalitaPagamento.modalitaPagamentoInLingua.nome' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaButton($radice . '[' . Costanti::MPSC_AGGIORNA_ORDINE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::MPSC_AGGIORNA_ORDINE,'submit',array('btn', 'btn-success'),array('style' => array('padding-left' => '5px','padding-right' => '5px')),array('content' => 'carrello_aggiorna',),'carrello_aggiorna','carrello'),GJS_Components::CreaInput($radice . '[' . Costanti::FORM_TOKEN . ']',$radice . ($radice != '' ? '_' : '') . Costanti::FORM_TOKEN,'input','hidden',array(),array('value' => '%££%' . $radice . '.children._token.vars.value%££%')));}public static function RitornaElementiInvioOrdine($radice = 'form', $ancheRegistrazioneUtente = false){$ritorno = array();if($ancheRegistrazioneUtente){$ritorno = array_merge($ritorno, self::RitornaElementiRegistrazioneUtentePerEditorJSON($radice, true));}array_push($ritorno,GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_RIFERIMENTO_ORDINE . ']', '', 'carrello_riferimento_ordine', 'carrello'),GJS_Components::CreaInput($radice . '[' . Costanti::IO_RIFERIMENTO_ORDINE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_RIFERIMENTO_ORDINE,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_MODALITA_SPEDIZIONE . ']', '', 'carrello_modalita_spedizione', 'carrello'),GJS_Components::CreaSelect($radice . '[' . Costanti::IO_MODALITA_SPEDIZIONE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_MODALITA_SPEDIZIONE,Costanti::LYT_DELIMITATORE_ENTITA . 'App:ModalitaSpedizione.modalitaSpedizioneInLingua.testoDescrittivo' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_MODALITA_PAGAMENTO . ']', '', 'carrello_modalita_pagamento', 'carrello'),GJS_Components::CreaSelect($radice . '[' . Costanti::IO_MODALITA_PAGAMENTO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_MODALITA_PAGAMENTO,Costanti::LYT_DELIMITATORE_ENTITA . 'App:ModalitaPagamento.modalitaPagamentoInLingua.nome' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_NOTE . ']', '', 'carrello_note', 'carrello'),GJS_Components::CreaInput($radice . '[' . Costanti::IO_NOTE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_NOTE,'textarea','textarea',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_NOTE_AZIENDALI . ']', '', 'carrello_note_aziendali', 'carrello'),GJS_Components::CreaInput($radice . '[' . Costanti::IO_NOTE_AZIENDALI . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_NOTE_AZIENDALI,'textarea','textarea',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_DATA_SPEDIZIONE_RITIRO . ']', '', 'carrello_data_spedizione_ritiro_richiesta', 'carrello'),GJS_Components::CreaInput($radice . '[' . Costanti::IO_DATA_SPEDIZIONE_RITIRO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_DATA_SPEDIZIONE_RITIRO,'input','text',array('form-control', 'input-data'),array('style' => array('padding-left' => '5px','padding-right' => '5px')),array('autocomplete' => 'off')),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_SPEDIZIONE_CONSEGNA . ']', '', 'carrello_modalita_spedizione', 'carrello'),GJS_Components::CreaSelect($radice . '[' . Costanti::IO_SPEDIZIONE_CONSEGNA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_SPEDIZIONE_CONSEGNA,Costanti::LYT_DELIMITATORE_ENTITA . 'App:AssociazioneSpedizioniClienti.spedizione.descrizione+\' \'+consegna.descrizione' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_PAGAMENTO . ']', '', 'carrello_modalita_pagamento', 'carrello'),GJS_Components::CreaSelect($radice . '[' . Costanti::IO_PAGAMENTO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_PAGAMENTO,Costanti::LYT_DELIMITATORE_ENTITA . 'App:Pagamenti.descrizione' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::IO_DESTINAZIONI . ']', '', 'carrello_destinazioni', 'carrello'),GJS_Components::CreaSelect($radice . '[' . Costanti::IO_DESTINAZIONI . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_DESTINAZIONI,Costanti::LYT_DELIMITATORE_ENTITA . 'App:Destinazioni.ragioneSociale+\' - \'+indirizzo+\' - \'+citta' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaButton($radice . '[' . Costanti::IO_INVIO_ORDINE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::IO_INVIO_ORDINE,'submit',array('btn', 'btn-success'),array('style' => array('padding-left' => '5px','padding-right' => '5px')),array('content' => 'carrello_completa_btn',),'carrello_completa_btn','carrello'));if(!$ancheRegistrazioneUtente){array_push($ritorno, GJS_Components::CreaInput($radice . '[' . Costanti::FORM_TOKEN . ']',$radice . ($radice != '' ? '_' : '') . Costanti::FORM_TOKEN,'input','hidden',array(),array('value' => '%££%' . Costanti::RU_RADICE_FORM . '.children._token.vars.value%££%')));}return $ritorno;}/*** @param string $radice* @param false $daCheckoutCarrello* @return array*/public static function RitornaElementiRegistrazioneUtentePerEditorJSON($radice = 'form', $daCheckoutCarrello = false){$ritorno = GJS_Components::CreaRadio($radice . '[' . Costanti::RU_AZIENDA_O_PRIVATO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_AZIENDA_O_PRIVATO,array('azienda' => GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_AZIENDA_O_PRIVATO . ']','','dati_utente_azienda','dati_utente'),'privato' => GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_AZIENDA_O_PRIVATO . ']','','dati_utente_privato','dati_utente')));array_push($ritorno,GJS_Components::CreaInput($radice . '[' . Costanti::FORM_TOKEN . ']',$radice . ($radice != '' ? '_' : '') . Costanti::FORM_TOKEN,'input','hidden',array(),array('value' => '%££%' . Costanti::RU_RADICE_FORM . '.children._token.vars.value%££%')),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_RAGIONE_SOCIALE . ']', '', 'dati_utente_ragione_sociale', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_RAGIONE_SOCIALE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_RAGIONE_SOCIALE,'input','text',array('form-control', 'input-sm'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_NOME . ']', '', 'dati_utente_nome', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_NOME . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_NOME,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_COGNOME . ']', '', 'dati_utente_cognome', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_COGNOME . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_COGNOME,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_CODICE_FISCALE . ']', '', 'dati_utente_codice_fiscale', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_CODICE_FISCALE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_CODICE_FISCALE,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_PARTITA_IVA . ']', '', 'dati_utente_partita_iva', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_PARTITA_IVA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_PARTITA_IVA,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_INDIRIZZO . ']', '', 'dati_utente_indirizzo', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_INDIRIZZO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_INDIRIZZO,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_CITTA . ']', '', 'dati_utente_citta', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_CITTA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_CITTA,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_PROVINCIA . ']', '', 'dati_utente_provincia', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_PROVINCIA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_PROVINCIA,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_CAP . ']', '', 'dati_utente_cap', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_CAP . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_CAP,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_STATO . ']', '', 'dati_utente_nazione', 'dati_utente'),GJS_Components::CreaSelect($radice . '[' . Costanti::RU_STATO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_STATO,Costanti::LYT_DELIMITATORE_ENTITA . 'App:Nazioni.descrizione' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_TELEFONO . ']', '', 'dati_utente_cellulare', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_TELEFONO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_TELEFONO,'input','tel',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_FAX . ']', '', 'dati_utente_fax', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_FAX . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_FAX,'input','tel',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_INDIRIZZO_MAIL . ']', '', 'dati_utente_email', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_INDIRIZZO_MAIL . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_INDIRIZZO_MAIL,'input','email',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_INDIRIZZO_PEC . ']', '', 'dati_utente_indirizzo_pec', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_INDIRIZZO_PEC . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_INDIRIZZO_PEC,'input','email',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICA . ']', '', 'dati_utente_codice_destinatario_fattura_elettronica', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_CODICE_DESTINATARIO_FATTURAZIONE_ELETTRONICA,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DESTINAZIONE_DIVERSA . ']', '', 'carrello_rdu_destinazione_diversa', 'carrello'),GJS_Components::CreaCheckbox($radice . '[' . Costanti::RU_DESTINAZIONE_DIVERSA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DESTINAZIONE_DIVERSA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_RAGIONE_SOCIALE . ']', '', 'dati_utente_destinazione_ragione_sociale', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_DD_RAGIONE_SOCIALE . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_RAGIONE_SOCIALE,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_INDIRIZZO . ']', '', 'dati_utente_destinazione_indirizzo', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_DD_INDIRIZZO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_INDIRIZZO,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_CITTA . ']', '', 'dati_utente_destinazione_citta', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_DD_CITTA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_CITTA,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_PROVINCIA . ']', '', 'dati_utente_destinazione_provincia', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_DD_PROVINCIA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_PROVINCIA,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_CAP . ']', '', 'dati_utente_destinazione_cap', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_DD_CAP . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_CAP,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_TELEFONO . ']', '', 'dati_utente_destinazione_telefono', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_DD_TELEFONO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_TELEFONO,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_STATO . ']', '', 'dati_utente_destinazione_nazione', 'dati_utente'),GJS_Components::CreaSelect($radice . '[' . Costanti::RU_DD_STATO . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_STATO,Costanti::LYT_DELIMITATORE_ENTITA . 'App:Nazioni.descrizione' . Costanti::LYT_DELIMITATORE_ENTITA,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_DD_INDIRIZZO_MAIL . ']', '', 'dati_utente_destinazione_mail', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_DD_INDIRIZZO_MAIL . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_DD_INDIRIZZO_MAIL,'input','email',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_USERNAME . ']', '', 'dati_utente_username', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_USERNAME . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_USERNAME,'input','text',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_PASSWORD . ']', '', 'dati_utente_password', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_PASSWORD . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_PASSWORD,'input','password',array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_RIPETI_PASSWORD . ']', '', 'dati_utente_ripeti_password', 'dati_utente'),GJS_Components::CreaInput($radice . '[' . Costanti::RU_RIPETI_PASSWORD . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_RIPETI_PASSWORD,'input','password',array('form-control'),array(),array('style' => array('padding-left' => '5px','padding-right' => '5px'))),GJS_Components::CreaElementoDizionario($radice . '[' . Costanti::RU_PRIVACY . ']', '', 'carrello_privacy_esprimo_il_consenso', 'carrello'),GJS_Components::CreaCheckbox($radice . '[' . Costanti::RU_PRIVACY . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_PRIVACY,array('form-control'),array('style' => array('padding-left' => '5px','padding-right' => '5px'),)));if(!$daCheckoutCarrello) {array_push($ritorno,GJS_Components::CreaButton($radice . '[' . Costanti::RU_REGISTRA . ']',$radice . ($radice != '' ? '_' : '') . Costanti::RU_REGISTRA,'submit',array('btn', 'btn-success'),array(),array('btn-linkautomatico' => 'pfc_completa','content' => 'dati_utente_registra_btn','style' => array('padding-left' => '5px','padding-right' => '5px')),'dati_utente_registra_btn','dati_utente'));}return $ritorno;}}