src/Controller/DefaultController.php line 103
<?php
namespace App\Controller;
use App\Entity\MailSecondarieUtenti;
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');
} else
return $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("/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 verificare
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') {
$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");
}
}