src/Controller/DefaultController.php line 104
<?phpnamespace App\Controller;use App\Entity\MailSecondarieUtenti;use App\Entity\ModificaNoteAnagrafiche;use App\Entity\PagineEComponenti;use App\Entity\User;use App\Model\Mailer;use App\Model\Security\ReCaptchaGoogle;use App\Model\Translating\Translating;use Doctrine\ORM\EntityManagerInterface;use Psr\Log\LoggerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Cookie;use Symfony\Component\HttpFoundation\File\UploadedFile;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\KernelInterface;use Symfony\Component\Routing\Annotation\Route;use Twig\Environment;/****/class DefaultController extends AbstractController{/** @var LoggerInterface */private $logger;/** @var ReturnImpostazioniServiceController */private $imp;/** @var KernelInterface */private $kernel;/** @var ServiziController */private $servizi;/** @var Environment */private $twig;/** @var Translating */private $translating;/** @var Mailer */private $mailer;/*** DefaultController constructor.* @param LoggerInterface $logger* @param ReturnImpostazioniServiceController $imp* @param KernelInterface $kernel* @param ServiziController $servizi* @param Environment $twig* @param Translating $translating* @param Mailer $mailer*/public function __construct(LoggerInterface $logger, ReturnImpostazioniServiceController $imp, KernelInterface $kernel, ServiziController $servizi, Environment $twig, Translating $translating, Mailer $mailer){$this->logger = $logger;$this->imp = $imp;$this->kernel = $kernel;$this->servizi = $servizi;$this->twig = $twig;$this->translating = $translating;$this->mailer = $mailer;}/*** @Route("/", name="homepage")*/public function indexAction(Request $request){$customHomePage = $this->imp->ritornaImpostazioneDaNome("CustomHomepage");if ($customHomePage != ''){/** @var PagineEComponenti $pagina */$pagina = $this->servizi->doctrine->getRepository(PagineEComponenti::class)->find($customHomePage);if ($pagina){$response = $this->render('ZZ_front_end/pagine_secondarie/pagine_secondarie_render.html.twig', array('pagina' => $pagina));return $response;}else{$response = new Response("", '404');return $response;}}else {/** @var User $user */$user = $this->servizi->OttieniUtenteCorrente();if ($user) {if ($user->getUtenteComune()) {$response = $this->redirectToRoute('home_shop_comune');} else$response = $this->redirectToRoute('home_shop');} else {$response = $this->redirectToRoute('home_shop_comune');}return $response;}}/*** @Route("/products/home", name="home_prodotti")*/public function productsAction(Request $request){/** @var User $user */$user = $this->servizi->OttieniUtenteCorrente();if ($user) {if ($user->getUtenteComune()) {return $this->redirectToRoute('home_shop_comune');} elsereturn $this->redirectToRoute('home_shop');} else {if ($this->imp->ritornaImpostazioneDaNome('AbilitaB2C') != '1'){return $this->redirectToRoute('home_login');}return $this->redirectToRoute('home_shop_comune');}}/*** @Route("/admin/uploadFileAsset", name="admin_upload_file_asset", options={"expose"=true})*/public function uploadFileInAsset(Request $request){$pathStore = $this->kernel->getProjectDir() . DIRECTORY_SEPARATOR . "public" . DIRECTORY_SEPARATOR . "uploads" . DIRECTORY_SEPARATOR;$pathRitorno = DIRECTORY_SEPARATOR ."uploads" . DIRECTORY_SEPARATOR;$listaFile = $request->files;/*** @var $key string*/foreach ($listaFile as $value){/** @var $file UploadedFile */$file = $value[0];$nome = time() . "-" . $file->getClientOriginalName();$file->move($pathStore, $nome);}return new Response("");}/*** @Route("/esportaRelazioniAgenti", name="esportaRelazioniAgenti")*/public function caricaNoteAnagraficaAction(Request $request){if ($this->servizi->verificaSeIpAutorizzatoChiamateImportExport($request->getClientIp())) {/** @var $elenco ModificaNoteAnagrafiche[] */$elenco = $this->servizi->doctrine->getRepository(ModificaNoteAnagrafiche::class)->createQueryBuilder('modifica_note_anagrafiche')->where('modifica_note_anagrafiche.invia = :invia')->setParameter('invia', true)->andWhere('modifica_note_anagrafiche.trasmesso = :tras')->setParameter('tras', false)->orderBy('modifica_note_anagrafiche.anagrafica')->getQuery()->getResult();$em = $this->getDoctrine()->getManager();/** @var $elencoDaInviare ModificaNoteAnagrafiche[]*/$elencoDaInviare = array();if (count($elenco) > 0){$this->servizi->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Caricamento note anagrafica: ' . count($elenco), null);$this->servizi->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Caricamento note anagrafica: ' . count($elenco) . ' - COMPLETATO!', null);$em->flush();try {$from = $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");$nomeShop = $this->imp->ritornaImpostazioneDaNome("NomeShop");$mailCCAgenti = $this->imp->ritornaImpostazioneDaNome('MailCCRelazioniAgenti');$esploso = array();$esploso = explode(";", $mailCCAgenti);if (!$esploso)$esploso = array();if (count($esploso) == 0)array_push($esploso, $mailCCAgenti);$this->mailer->SendMail("Relazioni agenti - " . $nomeShop,$this->renderView('email/relazioni_agenti/relazione_agenti.html.twig',array('lista_relazioni' => $elencoDaInviare,)),array($from),$esploso,$from,'text/html');}catch (\Exception $e){$this->get("logger")->addCritical("Errore invio mail: " . $e->getMessage());$this->ScriviRegistroAttivita($em, $request->getClientIp(), $e, true, "Errore invio mail relazioni agenti -- Errore: " . $e->getMessage(), null);}}return new Response("ok");}else{return new Response("ACCESSO_NEGATO");}}/*** @Route("/setLocale/{locale}", name="set_locale")*/public function setlocale(Request $request, $locale){$request->getSession()->set('_locale', $locale);$referral = $request->server->get('HTTP_REFERER');$response = $this->redirect($referral);$response->headers->setCookie(new Cookie('_locale', $locale, strtotime( '+1 year' ), '/'));return $response;}/*** @param EntityManagerInterface $em* @param string $ip* @param string $debug* @param boolean $esito* @param string $messaggio* @param User $utente*/function ScriviRegistroAttivita($em, $ip, $debug, $esito, $messaggio, $utente){$this->servizi->ScriviRegistroAttivita($ip, $debug, $esito, $messaggio, $utente);}/*** @Route("/contatto/mail", methods={"POST"}, name="contatto_per_mail")*/public function contattoPerMail(Request $request){$sendMail = new Mailer($this->imp, $this->twig, $this->servizi);$mailFrom = $this->imp->ritornaImpostazioneDaNome('IndirizzoMailFromInvioComunicazioni');$oggetto = $request->get('ddflt-oggetto');$mailInvio = $request->get('ddflt-mail-invio');$mailInvioCc = $request->get('ddflt-mail-invio-cc');$traduzione = new Translating($this->servizi->doctrine, $this->logger);$traduzione->CaricaTraduzioniDaFamiglia('form_contatto', $request->getLocale());$parametri = $request->request->keys();$procedi = true;if($oggetto != '' && $mailInvio != ''){if (array_key_exists('recaptcha', $parametri)){/** Il captcha deve essere un input con nome = recaptcha e class = re-captcha-v3*/$token = $parametri['recaptcha'];if (!ReCaptchaGoogle::captchaverify($token, $this->imp)){$procedi = false;$this->addFlash('error',$traduzione->OttieniElementoDizionario('form_contatto_captcha_error', 'form_contatto')->valoreUscita);}}if($procedi){$testoMail = $traduzione->OttieniElementoDizionario('form_contatto_titolo', 'form_contatto')->valoreUscita . '<br /><br /><table class="table table-responsive table-striped"><thead><tr><th>' . $traduzione->OttieniElementoDizionario('form_contatto_parametro', 'form_contatto')->valoreUscita . '</th><th>' . $traduzione->OttieniElementoDizionario('form_contatto_valore', 'form_contatto')->valoreUscita . '</th></tr></thead><tbody>';foreach ($parametri as $key) {if ($key != ('recaptcha'||'ddflt-mail-invio'||'ddflt-mail-invio-cc'||'ddflt-oggetto')) {$testoMail .= '<tr><td>' . $key . '</td><td>' . $request->request->get($key) . '</td></tr>';}}$testoMail .= '</tbody></table>';$sendMail->SendMail($oggetto, $testoMail, explode(';', $mailFrom), explode(';', $mailInvioCc), '', '', true);$this->addFlash('notice',$traduzione->OttieniElementoDizionario('form_contatto_messaggio_inviato', 'form_contatto')->valoreUscita);}}else{$procedi = false;$this->addFlash('error',$traduzione->OttieniElementoDizionario('form_contatto_captcha_error', 'form_contatto')->valoreUscita);}return $this->redirect($this->servizi->getRefererRoute($request));}/*** @Route("/contact/form", name="contatto_form", methods={"POST"})*/public function contattoDaForm(Request $request){$traduzione = $this->translating;$traduzione->CaricaTraduzioniDaFamiglia('form_contatto', $request->getLocale());$mailInvioContatto = $this->imp->ritornaImpostazioneDaNome('MailInvioContattiForm');$mailFrom = $this->imp->ritornaImpostazioneDaNome('IndirizzoMailFromInvioComunicazioni');$arrayMail = array();if (strpos($mailInvioContatto, ';') !== false){$arrayMail = explode(';', $mailInvioContatto);}else{array_push($arrayMail, $mailInvioContatto);}$sendMail = new Mailer($this->imp, $this->twig, $this->servizi);$parametri = $request->request->keys();//return new JsonResponse($request->request->keys());if (count($parametri) > 0) {$procedi = true;//Verifico se è presente un capcha da verificareif (array_key_exists('recaptcha', $parametri)){/** Il captcha deve essere un input con nome = recaptcha e class = re-captcha-v3*/$token = $parametri['recaptcha'];if (!ReCaptchaGoogle::captchaverify($token, $this->imp)){$procedi = false;$this->addFlash('error',$traduzione->OttieniElementoDizionario('form_contatto_captcha_error', 'form_contatto')->valoreUscita);}}if ($procedi) {$testoMail = $traduzione->OttieniElementoDizionario('form_contatto_titolo', 'form_contatto')->valoreUscita . '<br /><br /><table class="table table-responsive table-striped"><thead><tr><th>' . $traduzione->OttieniElementoDizionario('form_contatto_parametro', 'form_contatto')->valoreUscita . '</th><th>' . $traduzione->OttieniElementoDizionario('form_contatto_valore', 'form_contatto')->valoreUscita . '</th></tr></thead><tbody>';foreach ($parametri as $key) {if ($key != 'recaptcha') {$testoMail .= '<tr><td>' . $key . '</td><td>' . $request->request->get($key) . '</td></tr>';}}$testoMail .= '</tbody></table>';$sendMail->SendMail('Contatto da form sito', $testoMail, $mailFrom, $arrayMail, '', '', true);$this->addFlash('notice',$traduzione->OttieniElementoDizionario('form_contatto_messaggio_inviato', 'form_contatto')->valoreUscita);}}return $this->redirect($this->servizi->getRefererRoute($request));}/*** @Route("/admin/masterReset_ppp/{psw}/{da}/{a}", name="master_reset_password")*/public function masterResetPassword(Request $request, $psw, $da = 0, $a = 100){ini_set('max_execution_time', -1);ini_set('memory_limit', -1);$start = microtime(true);$this->servizi->doctrine->getConnection()->getConfiguration()->setSQLLogger(null);$em = $this->servizi->doctrine->getManager();$contatore = 0;$row = 0;$query_eseguite = 0;$batch_size = 1;$this->ScriviRegistroAttivita($em, $request->getClientIp(),"", true, "Chiamata effettuata a /admin/masterReset/ Da: " . $da . " -- A: " . $a, $this->servizi->OttieniUtenteCorrente());$query_eseguite++;if ($psw == "180392"){$inviaMail = $this->imp->ritornaImpostazioneDaNome("InviaMailNuoviClienti");$from = $this->imp->ritornaImpostazioneDaNome("IndirizzoMailFromInvioComunicazioni");$nomeShop = $this->imp->ritornaImpostazioneDaNome("NomeShop");$ccMail = $this->imp->ritornaImpostazioneDaNome("MailCcComunicazioni");/** @var $user User[] */$user = $this->servizi->doctrine->getRepository(User::class)->findAll();$arrayInvioMail = array();for ($i = $da; ($i <= $a) && ($a < count($user)); $i++) {$item = $user[$i];$newPass = $this->servizi->randomString(8);$item->setPassword($newPass);$em = $this->servizi->doctrine->getManager();$em->persist($item);$em->flush();array_push($arrayInvioMail, array($item, $newPass));}foreach ($arrayInvioMail as $valore){$item = $valore[0];//utente$listaMailSecondarie = $this->servizi->doctrine->getRepository(MailSecondarieUtenti::class)->findBy(array('azienda' => $item, 'inviaConfermaOrdine' => true));$adresses = array();foreach ($listaMailSecondarie as $ms){array_push($adresses, $ms->getIndirizzoMail());}array_push($adresses, $ccMail);try {if ($inviaMail) {$this->mailer->SendMail("reset password -- " . $nomeShop,$this->renderView('email/utenti/cambio_password.html.twig',array('utente' => $item,'password' => $valore[1])),$item->getEmail(),$adresses,$from);$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Mail Reset Inviata: ' . $item->getId() . ' - ' .$item->getRagioneSociale() . ' all\'indirizzo ' . $item->getEmail(), null);$query_eseguite++;}}catch (\Exception $e){$this->logger->critical("Errore invio mail: " . $e->getMessage());$this->ScriviRegistroAttivita($em, $request->getClientIp(), $e->getMessage(), true, 'Errore invio mail reset password ' . $item->getCodiceCliente() . ' - ' .$item->getRagioneSociale() . ' all\'indirizzo ' . $item->getEmail() . " --- Errore: " . $e->getMessage(), null);$query_eseguite++;}if ($query_eseguite >= $batch_size) {$contatore = $contatore + $row;$row = 1;$query_eseguite = 0;$em->flush();$em->clear();}}$query_eseguite = 0;$em->flush();$em->clear();$this->ScriviRegistroAttivita(null, $request->getClientIp(), "", true, 'Reset master password completato in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds ---- ' . $contatore . '</br>', null);return new Response('Reset master password completata in ' . $time_elapsed_secs = microtime(true) - $start . ' seconds ---- ' . $contatore . '</br>');}else{return new Response("ERRORE AUTORIZZAZIONE");}}/*** @Route("/pulisciRegistroAttivita", name="pulisci_registro_attivita")*/public function pulisciRegistroAttivitaCronAction(Request $request){if ($request->getClientIp() == ("127.0.0.1")) {$em = $this->servizi->doctrine->getManager();$stmt = $em->getConnection()->prepare("DELETE FROM registro_attivita WHERE data < DATE_SUB(NOW() , INTERVAL 1 WEEK)");$ris = $stmt->execute();$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Pulizia registro attività effettuata', null);return new Response($ris ? "TRUE" : "FALSE");}else{return new Response("ACCESSO_NEGATO");}}/*** @Route("/pulisciCarrelliVecchi", name="pulisci_carrelli_vecchi")*/public function pulisciCarrelliVecchiCronAction(Request $request){if ($request->getClientIp() == ("127.0.0.1")) {$em = $this->servizi->doctrine->getManager();$conn = $this->servizi->doctrine->getConnection();$ris = $conn->executeQuery("DELETE FROM righe_carrello where data_modifica < DATE_SUB(NOW(), INTERVAL 3 MONTH);");$conn->executeQuery("DELETE FROM carrello where data_modifica < DATE_SUB(NOW(), INTERVAL 3 MONTH);");$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Pulizia carrelli vecchi effettuata', null);return new Response($ris ? "TRUE" : "FALSE");}else{return new Response('ACCESSO_NEGATO');}}/*** @Route("/admin/puliziaTotaleDatabaseArticoli", name="admin_puliza_totale_database_articoli")*/public function puliziaTotaleDatabaseArticoli(Request $request){$em = $this->servizi->doctrine->getManager();$conn = $this->servizi->doctrine->getConnection();$conn->executeQuery("SET FOREIGN_KEY_CHECKS=0;");$conn->executeQuery("TRUNCATE `albero_menu_prodotti`;");$conn->executeQuery("TRUNCATE `articoli`;");$conn->executeQuery("TRUNCATE `articoli_in_lingua`;");$conn->executeQuery("TRUNCATE `associazione_articoli_cliente`;");$conn->executeQuery("TRUNCATE `associazione_attributi`;");$conn->executeQuery("TRUNCATE `attributi`;");$conn->executeQuery("TRUNCATE `attributi_in_lingua`;");$conn->executeQuery("TRUNCATE `carrello`;");$conn->executeQuery("TRUNCATE `categorie`;");$conn->executeQuery("TRUNCATE `categorie_in_lingua`;");$conn->executeQuery("TRUNCATE `combinazione_albero_mappa_categorie_articoli`;");$conn->executeQuery("TRUNCATE `listini_vendita`;");$conn->executeQuery("TRUNCATE `magazzino_secondario_disponibilita`;");$conn->executeQuery("TRUNCATE `mappa_categorie_articoli`;");$conn->executeQuery("TRUNCATE `ordini`;");$conn->executeQuery("TRUNCATE `ordini_righe`;");$conn->executeQuery("TRUNCATE `righe_carrello`;");$conn->executeQuery("TRUNCATE `statistiche_categorie`;");$conn->executeQuery("TRUNCATE `statistiche_click_articoli`;");$conn->executeQuery("TRUNCATE `tipologie_preimpostate`;");$conn->executeQuery("TRUNCATE `tipologie_preimpostate_lista`;");$conn->executeQuery("TRUNCATE `unita_misura`;");$conn->executeQuery("TRUNCATE `varianti`;");$conn->executeQuery("TRUNCATE `varianti_in_lingua`;");$conn->executeQuery("SET FOREIGN_KEY_CHECKS=1;");$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Pulizia totale database articoli effettuata', $this->servizi->OttieniUtenteCorrente());return new Response("TRUE");}/*** @Route("/admin/puliziaTotaleAnagrafiche", name="admin_pulizia_totale_anagrafiche")*/public function puliziaTotaleAnagraficheDatabase(Request $request){$em = $this->servizi->doctrine->getManager();$conn = $this->servizi->doctrine->getConnection();$conn->executeQuery("SET FOREIGN_KEY_CHECKS=0;");$conn->executeQuery("TRUNCATE `anagrafica_opzioni_aggiuntive`;");$conn->executeQuery("TRUNCATE `anagrafiche`;");$conn->executeQuery("TRUNCATE `anagrafiche_indirizzi`;");$conn->executeQuery("TRUNCATE `risorse_anagrafiche_colonne_valori`;");$conn->executeQuery("TRUNCATE `risorse_anagrafiche`;");$conn->executeQuery("TRUNCATE `risorse_anagrafiche_colonne`;");$conn->executeQuery("TRUNCATE `sconti_anagrafiche`;");$conn->executeQuery("TRUNCATE `anagrafiche_blocchi`;");$conn->executeQuery("SET FOREIGN_KEY_CHECKS=1;");$this->ScriviRegistroAttivita($em, $request->getClientIp(), "", true, 'Pulizia totale database anagrafiche effettuata', $this->servizi->OttieniUtenteCorrente());return new Response("TRUE");}}