<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Pagina;
use App\Entity\General;
use App\Entity\General2;
use App\Entity\DarreraHora;
use App\Entity\Galeries;
use App\Entity\Fotos;
use App\Entity\VideosYoutube;
use App\Entity\Pestanyes;
use App\Entity\FotosHome;
use Dp\CalendarBundle\Entity\Item;
use Symfony\Component\Translation\LocaleSwitcher;
use Symfony\Component\Security\Core;
use Symfony\Component\Security\Core\Security;
use Twig\Sandbox\SecurityError;
use App\Entity\Usuari;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpFoundation\Session\Session;
class DefaultController extends AbstractController
{
private $em;
public function __construct(private LocaleSwitcher $localeSwitcher, EntityManagerInterface $em)
{
$this->em = $em;
}
#/[Route('/', name: 'app_default_index')]
public function indexAction(Request $peticion)
{
$session = $peticion->getSession();
$session->start();
$repository = $this->em->getRepository(Pagina::class);
/////////////////////////////////: Response
// la plana amb l'id 1 és la home
/////////////////////////////////
$pagina = $repository->getPagina(1);
/////////////////////////
// Recull valors generals
/////////////////////////
$objGeneral = $this->em->getRepository(General::class)->findAll();
$objGeneral2 = $this->em->getRepository(General2::class)->findAll();
$aGeneral['iMin'] = $aGeneral['iMax'] = $objGeneral[0]->getMasellaCm();
if ($objGeneral[0]->getBoscCm() != '')
{
if ($objGeneral[0]->getBoscCm() > $aGeneral['iMax']) $aGeneral['iMax'] = $objGeneral[0]->getBoscCm();
if ($objGeneral[0]->getBoscCm() < $aGeneral['iMin']) $aGeneral['iMin'] = $objGeneral[0]->getBoscCm();
}
if ($objGeneral[0]->getTosaCm() != '')
{
if ($objGeneral[0]->getTosaCm() > $aGeneral['iMax']) $aGeneral['iMax'] = $objGeneral[0]->getTosaCm();
if ($objGeneral[0]->getTosaCm() < $aGeneral['iMin']) $aGeneral['iMin'] = $objGeneral[0]->getTosaCm();
}
////////////////////////////////
// Opcions del calaix de la home
////////////////////////////////
$iClassBox = 0;
if ($objGeneral[0]->getWebcamVisible()) $iClassBox++;
if ($objGeneral[0]->getMeteoVisible()) $iClassBox++;
if ($objGeneral[0]->getPistesVisible()) $iClassBox++;
if ($objGeneral[0]->getRemuntadorsVisible()) $iClassBox++;
if ($objGeneral[0]->getDesnivellVisible()) $iClassBox++;
if ($objGeneral[0]->getGruixVisible()) $iClassBox++;
if ($objGeneral[0]->getQualitatVisible()) $iClassBox++;
if ($iClassBox == 7) $iClassBox = 13;
else
{
if ($iClassBox != 0)
$iClassBox = 12 / $iClassBox;
}
$blDarrera_hora = false;
foreach ($pagina->getBlocs() as $key => $val)
{
if ($val->getTipus()->getSlug() == 'darrera_hora')
{
$blDarrera_hora = true;
}
}
$objDarreraHora = array();
if ($blDarrera_hora)
{
$aSort = array("data" => "DESC");
$aParam = array();
$objDarreraHora = $this->em->getRepository(DarreraHora::class)->findBy($aParam,$aSort,5);
}
///////////////
// Foto del dia
///////////////
$sFotoDelDia = array();
$aParam = array('individual' => '1');
$enFoto = array();
$enGaleries = $this->em->getRepository(Galeries::class)->findOneBy($aParam);
if ($enGaleries)
{
$aParam = array('galeries' => $enGaleries);
$enFoto = $this->em->getRepository(Fotos::class)->findBy($aParam, array('fecha'=>'DESC'));
if ($enFoto)
{
$sFotoDelDia['url'] = $enFoto[0]->getRutaImagen();
$sFunctionName = 'getDescripcio' . ucfirst($peticion->getLocale());
$sFotoDelDia['nom'] = $enFoto[0]->$sFunctionName();
$sFotoDelDia['fecha'] = $enFoto[0]->getFecha();
}
}
$aParam = array('galeries' => $pagina->getGaleries());
$fotos = $this->em->getRepository(Fotos::class)->findBy($aParam, array('orden' => 'ASC'),null);
///////////////////////////////////
// Això es Masella TV al backoffice
///////////////////////////////////
$aParam = array( 'destacat' => 1,
'actiu' => 1);
$aVideoYoutubeDestacat = $this->em->getRepository(VideosYoutube::class)->findBy($aParam);
$aParam = array( 'destacat_central' => 1,
'actiu' => 1);
$aVideoYoutubeDestacatCentral = $this->em->getRepository(VideosYoutube::class)->findBy($aParam);
////////////
// Pestanyes
////////////
$enPestanyes = $this->em->getRepository(Pestanyes::class)->findBy(
array( 'visible' => 1),
array( 'ordre' => 'ASC'));
$enFotosHome = $this->em->getRepository(FotosHome::class)->findBy(
array(),
array( 'orden' => 'ASC'));
return $this->render('index.html.twig',array(
'pagina' => $pagina,
'esHome' => 1,
'fotos' => $fotos,
'objDarreraHora' => $objDarreraHora,
'aGeneral' => $aGeneral,
'general' => $objGeneral[0],
'general2' => $objGeneral2[0],
'videoYoutubeDestacatCentral' => (array_key_exists('0', $aVideoYoutubeDestacatCentral)?$aVideoYoutubeDestacatCentral[0]:array()),
'VideoYoutubeDestacat' => (array_key_exists('0', $aVideoYoutubeDestacat)?$aVideoYoutubeDestacat[0]:array()),
'entMenu' => array(),
'iClassBox' => $iClassBox,
'sFotoDelDia' => $sFotoDelDia,
'enFoto' => $enFoto,
'enPestanyes' => $enPestanyes,
'enFotosHome' => $enFotosHome
));
}
public function menuListAction($isMobileVersion=false)
{
$repository = $this->getDoctrine()->getRepository(Pagina::class);
$list = $repository->getSecciones();
return $this->render('menuList.html.twig', array(
"isMobileVersion" => $isMobileVersion,
"list" => $list
));
}
/**
* Només visible per dev
*
* @param string $email
* @param string $password
* @return \App\Controller\Response
*/
public function createUserAction($email, $password)
{
$factory = $this->get('security.encoder_factory');
$user = new Usuari();
$encoder = $factory->getEncoder($user);
$user->setSalt(md5(time()));
$pass = $encoder->encodePassword($password, $user->getSalt());
$user->setEmail($email);
$user->setPassword($pass);
$user->setActivat(1);
$this->em->persist($user);
$this->em->flush();
return new Response('Usuari creat!');
}
/**
* Funciona para limpiar la cache de produccion
*
* @return Response
*/
public function limpiaCacheAction()
{
if ($_SERVER['SERVER_NAME'] == 'www.masella.com'
|| $_SERVER['SERVER_NAME'] == 'beta.masella.com')
{
$sResposta = shell_exec("/opt/plesk/php/7.3/bin/php ../app/console assets:install");
echo '1<pre>' . $sResposta . '</pre>';
$sResposta = shell_exec("chmod -R 777 ../app/cache/ ../app/logs/");
echo '2<pre>' . $sResposta . '</pre>';
$sResposta = shell_exec("/opt/plesk/php/7.3/bin/php ../app/console cache:clear --env=prod");
echo '3<pre>' . $sResposta . '</pre>';
} else {
$sResposta = shell_exec("php ../app/console assets:install");
echo '1<pre>' . $sResposta . '</pre>';
$sResposta = shell_exec("chmod -R 777 ../app/cache/ ../app/logs/");
echo '2<pre>' . $sResposta . '</pre>';
$sResposta = shell_exec("php ../app/console cache:clear --env=prod");
echo '3<pre>' . $sResposta . '</pre>';
}
return new Response("Cielo de junio, limpio como ninguno!");
}
/**
* @param Request $request
* @return Response
*/
public function loginAction(Request $request)
{
$session = $request->getSession();
//////////////////////////////////////
// get the login error if there is one
//////////////////////////////////////
if ($request->attributes->has(Security::AUTHENTICATION_ERROR))
{
$error = $request->attributes->get(Security::AUTHENTICATION_ERROR);
} else {
$error = $session->get(Security::AUTHENTICATION_ERROR);
$session->remove(Security::AUTHENTICATION_ERROR);
}
return $this->render('login.html.twig', array(
'last_username' => $session->get(Security::LAST_USERNAME),
'error' => $error,
)
);
}
/**
* @param $pagina
* @return Response
*/
public function getPaginaSlugAction($pagina)
{
$entity = $this->em->getRepository(Pagina::class)->find($pagina);
return new Response($entity->getSlug($this->localeSwitcher->getLocale()));
}
public function cookiesAction(Request $request)
{
$value = $request->cookies->get('cookie_accepted');
if ($value != 'si')
{
return $this->render('cookies.html.twig');
} else {
return new Response();
}
}
public function cookiesGoogleAnalyticsAction(Request $request)
{
$value = $request->cookies->get('cookie_accepted_google_analytics');
if ($value == 'si')
{
return new Response('<!-- Global site tag (gtag.js) - Google Analytics -->'
. '<!-- <script async src="https://www.googletagmanager.com/gtag/js?id=UA-4478510-1"></script> -->'
. '<script src="/frontoffice/js/googleAnalytics.js?v2"></script>'
. '<script async src="https://www.googletagmanager.com/gtag/js?id=G-1CJZZCQC36"></script>'
. '<script src="/frontoffice/js/googleAnalytics2.js?v2"></script>'
);
} else {
return new Response();
}
}
/**
* @param Request $request
* @return Response
*/
public function cookiesGoogleAnalyticsBodyAction(Request $request): Response
{
$value = $request->cookies->get('cookie_accepted_google_analytics');
if ($value == 'si')
{
return new Response('<!-- Google Tag Manager (noscript) -->'
. '<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-THMVSV8" '
. 'height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>'
. '<!-- End Google Tag Manager (noscript) -->');
} else {
return new Response();
}
}
public function appAction(Request $request)
{
$response = new Response();
$value = $request->cookies->get('cookie_app');
/*
if ($value!='si') {
$cookie = new Cookie('cookie_app', 'si', time() + 365 * 3600 * 24 * 7);
$response->headers->setCookie($cookie);
$response->send();
return $this->render('app.html.twig');
} else {
return new Response();
}
*/
return new Response();
}
public function aceptarCookieAction(Request $request)
{
$cookie = new Cookie('cookie_accepted', 'si', time() + 365 * 3600 * 24 * 7);
$response = new Response();
$response->headers->setCookie($cookie);
return $response->send();
}
public function aceptarCookieGoogleAnalyticsAction(Request $request)
{
$cookie = new Cookie('cookie_accepted_google_analytics', 'si', time() + 365 * 3600 * 24 * 7);
$response = new Response();
$response->headers->setCookie($cookie);
return $response->send();
}
public function eliminarCookiesAction(Request $request)
{
$cookie = new Cookie('cookie_accepted_google_analytics', '', time() - 3600, '/');
// Crear cookies amb una data d'expiració en el passat per eliminar-les
$gaCookie = new Cookie('_ga', '', time() - 3600, '/');
$gidCookie = new Cookie('_gid', '', time() - 3600, '/');
$gatCookie = new Cookie('_gat', '', time() - 3600, '/');
$response = new Response();
$response->headers->setCookie($cookie);
// Afegir les cookies als encapçalaments de la resposta per eliminar-les
$response->headers->setCookie($gaCookie);
$response->headers->setCookie($gidCookie);
$response->headers->setCookie($gatCookie);
return $response->send();
}
public function getBasesSlugAction()
{
$pagina = $this->getParameter("PAGE_ID_BASES");
return $this->getPaginaSlugAction($pagina);
}
public function getPrivacitatSlugAction()
{
$pagina=$this->getParameter("PAGE_ID_PRIVACITAT");
return $this->getPaginaSlugAction($pagina);
}
public function getPrivacitatEscolaSlugAction()
{
$pagina=$this->getParameter("PAGE_ID_PRIVACITAT_ESCOLA");
return $this->getPaginaSlugAction($pagina);
}
public function getCondicionsGeneralsSlugAction()
{
$pagina=$this->getParameter("PAGE_ID_CONDICIONS_GENERALS");
return $this->getPaginaSlugAction($pagina);
}
public function getCondicionsGeneralsEscolaSlugAction()
{
$pagina=$this->getParameter("PAGE_ID_CONDICIONS_GENERALS_ESCOLA");
return $this->getPaginaSlugAction($pagina);
}
public function getPoliticaSlugAction()
{
$pagina=$this->getParameter("PAGE_ID_AVIS_LEGAL");
return $this->getPaginaSlugAction($pagina);
}
public function getPoliticaEscolaSlugAction()
{
$pagina=$this->getParameter("PAGE_ID_AVIS_LEGAL_ESCOLA");
return $this->getPaginaSlugAction($pagina);
}
public function getCookiesSlugAction()
{
$pagina=$this->getParameter("PAGE_ID_COOKIES");
return $this->getPaginaSlugAction($pagina);
}
public function getAppSlugAction(): Response
{
$pagina = $this->getParameter("PAGE_ID_APP");
return $this->getPaginaSlugAction($pagina);
}
public function getMapaPistesSlugAction()
{
$pagina = $this->getParameter("PAGE_ID_MAPA_PISTES");
return $this->getPaginaSlugAction($pagina);
}
public function getNocturnSlugAction()
{
$pagina = $this->getParameter("PAGE_ID_NOCTURN");
return $this->getPaginaSlugAction($pagina);
}
public function getAllotjamentSlugAction()
{
$pagina = $this->getParameter("PAGE_ID_ALLOTJAMENT");
return $this->getPaginaSlugAction($pagina);
}
public function getDenunciaSlugAction()
{
$pagina = $this->getParameter("PAGE_ID_DENUNCIA");
return $this->getPaginaSlugAction($pagina);
}
public function getPromoSlugAction()
{
$pagina = 111;
return $this->getPaginaSlugAction($pagina);
}
/**
* Funciona para limpiar la cache de produccion
*
* @return Response
*/
public function cronVideosYoutubeAction()
{
////////////////////////////////////////////////////////
// Si es dissabte al migdia es desmarca el vidio central
////////////////////////////////////////////////////////
echo 'Dia (' . date("w") . ') i hora (' . date("G") . ')';
echo '<br>';
if (date("w") == 6
&& date("G") >= '8')
{
$sQuery = "UPDATE App:VideosYoutube p SET "
. " p.destacat_central = :destacat_central"
. " WHERE p.destacat_central = :destacat_central_where";
$query = $this->em->createQuery($sQuery)
->setParameter('destacat_central', 0)
->setParameter('destacat_central_where', 1);
$enVideosYoutube = $query->getResult();
echo 'Desativat destacat central';
echo '<br>';
} else {
echo "No s'ha desativat destacat central";
echo '<br>';
}
return new Response("Desactivar destacat central VideosYoutube");
}
}