<?php
namespace App\Controller;
use App\Entity\ListeEvenements;
use App\Entity\Parametres;
use App\Entity\Voyage;
use App\Entity\ListeMenu;
use App\Entity\ListeMenuTranslation;
use App\Entity\ListeVideos;
use App\Entity\Etapes;
use App\Entity\ListePays;
use App\Entity\ListePaysTranslation;
use App\Services\MenuFetcher;
use App\Services\MessageReponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query;
use Doctrine\ORM\Query\ResultSetMapping;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\Request;
class HomeController extends Controller
{
/**
* @Route("/home", name="home")
*/
public function index(SessionInterface $session, MenuFetcher $menuFetcher, MessageReponse $msgReponse)
{
$user = $session->get('user',null);
// si pas de connexion on est visiteur
if ($user == null)
{
$user = $this->getDoctrine()
->getRepository(Parametres::class)
->find(469);
$session->set('user', $user);
$session->set('last_activity_time', time());
}
$last_activity = $session->get('last_activity_time',null);
$langue ='fr';
if ($user && $last_activity && (time() - $last_activity) > 86400)//24h d'inactivité = expiration de la session
{
$user = null;
$session->clear();
$session->invalidate();
}
if($user)
$langue = $user->getLangue();
$travelpublic = $this->getDoctrine()
->getRepository(Voyage::class)
//->findAll();
->findBy([],array('dateMaj'=>'DESC','idVoyageServeur' => 'DESC'));
/*
echo '<pre>';
var_dump($travelpublic);
echo '</pre>';
die();
*/
/* donnees utilisateurs */
$utilisateur = array();
if ($user==null)
{
$credentiel=3;
$utilisateur['nom'] = 'Visitor';
$utilisateur['photo'] = 'avatar.jpg';
$utilisateur['pseudo'] = 'Visitor';
$utilisateur['prenom'] = 'Visitor';
}
else
{
$utilisateur['iduser'] = $user->getIdParametres();
$utilisateur['nom'] = $user->getNom();
$utilisateur['prenom'] = $user->getPrenom();
$utilisateur['langue'] = $user->getLangue();
$utilisateur['credentiel'] = $user->getIdCredentiel();
$credentiel = $user->getIdCredentiel();
$utilisateur['pseudo'] = $user->getPseudo();
$session->set('iduser', $user->getIdParametres());
$session->set('pseudo', $user->getPseudo());
if ($user->getPhoto() =='' || $user->getPhoto() == null)
$utilisateur['photo'] = 'avatar.jpg';
else
$utilisateur['photo'] = $user->getPhoto();
}
$em = $this->getDoctrine()->getManager();
$ListeEvenements_stmt = $em->getConnection()->prepare('SELECT * FROM `liste_evenements` `e` WHERE TO_DAYS(`e`.`date`) + `e`.`nbre_de_jour` >= TO_DAYS(NOW()) ORDER BY `e`.`date` ASC');
$ListeEvenements_stmt->execute();
$ListeEvenements = $ListeEvenements_stmt->fetchAll();
$j=0;
$pays_lev = array();
foreach($ListeEvenements as $lev)
{
$pays_lev_stmt = $em->getConnection()->prepare("SELECT `pays` FROM `liste_pays_translation` WHERE `liste_pays_translation`.`lang` = 'fr' AND `liste_pays_translation`.`id_liste_pays` = ".$lev['id_liste_pays']);
$pays_lev_stmt->execute();
foreach($pays_lev_stmt->fetchAll() as $pays)
{
$pays_lev[] = $pays['pays'];
}
}
$name="";
$listeMenu = $this->getDoctrine()
->getRepository(ListeMenu::class)
->findAll();
$listeMenu = $menuFetcher->menu('en', $em->getConnection());
$videos = $em->createQueryBuilder('vid')->select('v')->from('App\Entity\ListeVideos', 'v')->where('v.publier = 0')->getQuery()->getResult();
$travel_pays = array();
$likes = array();
foreach($travelpublic as $travel)
{
$statement_pays = $em->getConnection()->prepare('SELECT `liste_pays_translation`.`pays` FROM `liste_pays_translation` INNER JOIN `etapes` ON `etapes`.`id_liste_pays` = `liste_pays_translation`.`id_liste_pays` WHERE `etapes`.`id_voyage_serveur` = '.$travel->getIdVoyageServeur().' AND `etapes`.`num_etape` = 1');
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
if(empty($result_pays))
{
$travel_pays[] = 'Non renseigné';
}
else
{
$travel_pays[] = $result_pays[0]['pays'];
}
$statement_like = $em->getConnection()
->prepare('SELECT COUNT(*) FROM `jaime` WHERE `jaime`.`id_voyage_serveur` = '.$travel->getIdVoyageServeur());
$statement_like->execute();
$result_like = $statement_like->fetchAll();
if(empty($result_like))
{
$likes[] = 0;
}
else
{
$likes[] = $result_like[0]['COUNT(*)'];
}
}
$events = $em->createQueryBuilder("evt")
->select("e")
->from("App\Entity\ListeEvenements", "e")
->where("DATE_ADD(e.date, e.nbreDeJour, 'DAY') BETWEEN CURRENT_DATE() AND DATE_ADD(CURRENT_DATE() ,5 , 'DAY')")
->orWhere("e.date BETWEEN CURRENT_DATE() AND DATE_ADD(CURRENT_DATE(), 5, 'DAY')")
->orWhere("e.date = CURRENT_DATE()")
->orderBy("e.date")
->getQuery()
->getResult();
$pays_events = array();
$flag_events = array();
$i = 0;
foreach($events as $event)
{
$stmt_p = $em->getConnection()->prepare("SELECT `pays` FROM `liste_pays_translation` WHERE `liste_pays_translation`.`lang` = '".$langue."' AND `id_liste_pays` = ".$event->getIdListePays());
$stmt_p->execute();
$pays_events[$i] = $stmt_p->fetchAll()[0]['pays'];
$stmt_f = $em->getConnection()->prepare('SELECT `flag` FROM `liste_pays` WHERE `id_liste_pays` ='.$event->getIdListePays());
$stmt_f->execute();
$flag_events[$i] = $stmt_f->fetchAll()[0]['flag'];
$i++;
}
$messages = $em->createQueryBuilder('mess')->select('m')->from('App\Entity\MessageParametre', 'm')->orderBy('m.id', 'DESC')->getQuery()->getResult();
$messages_pseudo = array();
$nbrReponses = array();
$conn = $em->getConnection();
foreach($messages as $message)
{
$sender = $em->createQueryBuilder('pseudo')->select('u')->from('App\Entity\Parametres', 'u')->where('u.idParametres ='.$message->getIdParametre())->getQuery()->getResult();
if(empty($sender))
{
$messages_pseudo[] = "Non renseigné";
}
else
{
$messages_pseudo[] = $sender[0]->getPseudo();
}
$nbrReponses[] = $msgReponse->getNombreReponses($message, $conn);
}
/*
->select('lp.id_liste_pays')
->from('ListePays lp')
->where('lp.id_liste_pays = ?', $Idpays);
*/
if($user == null)
{
$info = array("Devenez membre, c'est gratuit, et profitez de toutes les fonctionnalités du portail");
$session->set('last_activity_time', time());
return $this->render('home/index.html.php', array(
'listeEvenements' => $ListeEvenements,
'credentiel' =>$credentiel,
'listeMenu'=>$listeMenu,
'utilisateur'=>$utilisateur,
'travelpublic'=>$travelpublic,
'travel_pays'=>$travel_pays,
'likes'=>$likes,
'langue'=>$langue,
'videos'=>$videos,
'events'=>$events,
'pays_events'=>$pays_events,
'flag_events'=>$flag_events,
'messages'=>$messages,
'messages_pseudo'=>$messages_pseudo,
'nbrReponses'=>$nbrReponses,
'informations'=>$info));
}
else
{
$informations = $em->createQueryBuilder('info')->select('i')->from('App\Entity\InformationTranslation', 'i')->getQuery()->getResult();
$info = array();
foreach($informations as $inf) {
$info[] = $this->format_info($inf->getContenu());
}
$session->set('last_activity_time', time());
return $this->render('home/index.html.php', array(
'listeEvenements' => $ListeEvenements,
'pays_lev'=> $pays_lev,
'credentiel' =>$credentiel,
'listeMenu'=>$listeMenu,
'utilisateur'=>$utilisateur,
'travelpublic'=>$travelpublic,
'travel_pays'=>$travel_pays,
'likes'=>$likes,
'langue'=>$langue,
'idParemetre'=>$user->getIdParametres(),
'videos'=>$videos,
'events'=>$events,
'pays_events'=>$pays_events,
'flag_events'=>$flag_events,
'messages'=>$messages,
'messages_pseudo'=>$messages_pseudo,
'nbrReponses'=>$nbrReponses,
'informations'=>$info));
}
}
public function findEventByPays($idPays)
{
}
/* methode pour recuperer les donnees utilisateurs ! pseudo*/
public function format_info($texte) {
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
// The Text you want to filter for urls
//$text = "The text you want to filter goes here. http://google.com";
// Check if there is a url in the text
if(preg_match($reg_exUrl, $texte, $url)) {
// make the urls hyper links
//return preg_replace($reg_exUrl, "<a href="{$url[0]}">{$url[0]}</a> ", $texte);
$tmp0 = preg_replace($reg_exUrl, '<a class="lien" href="'.$url[0].'" rel="nofollow">'.$url[0].'</a>', $texte);
} else {
// if no urls in the text just return the text
$tmp0 = $texte;
}
$tmp = get_html_translation_table(HTML_ENTITIES);
$tmp = array_flip ($tmp);
$texteTmp = strtr ($tmp0, $tmp);
return $texteTmp;
}
public function recherche(request $request,SessionInterface $session,MenuFetcher $menuFetcher)
{
$user = $session->get('user',null);
$last_activity = $session->get('last_activity_time',null);
if ($user == null)
{
$user = $this->getDoctrine()
->getRepository(Parametres::class)
->find(469);
$session->set('user', $user);
$session->set('last_activity_time', time());
}
$em = $this->getDoctrine()->getManager();
//$ListeEvenements_stmt = $em->getConnection()->prepare('SELECT * FROM `liste_evenements` `e` WHERE TO_DAYS(`e`.`date`) + `e`.`nbre_de_jour` >= TO_DAYS(NOW()) ORDER BY `e`.`date` ASC');
// $ListeEvenements_stmt->execute();
// $ListeEvenements = $ListeEvenements_stmt->fetchAll();
$listeMenu = $menuFetcher->menu('en', $em->getConnection());
/*echo '<pre>';
var_dump($listeMenu);
echo '</pre>';
die();*/
// par defaut la langue est le français
$langue = "fr";
$locale = "fr_FR";
if (isset($user))
{
$idParametres = $user->getIdParametres();
$langue = $user->getLangue();
$credentiel = $user->getIdCredentiel();
}
$travelpublic = $this->getDoctrine()
->getRepository(Voyage::class)
//->findAll();
->findBy([],array('dateMaj'=>'DESC','idVoyageServeur' => 'DESC'));
/*
echo '<pre>';
var_dump($travelpublic);
echo '</pre>';
die();
*/
/* donnees utilisateurs */
$utilisateur = array();
if ($user==null)
{
$credentiel=3;
$utilisateur['nom'] = 'Visitor';
$utilisateur['photo'] = 'avatar.jpg';
$utilisateur['pseudo'] = 'Visitor';
$utilisateur['prenom'] = 'Visitor';
}
else
{
$utilisateur['iduser'] = $user->getIdParametres();
$utilisateur['nom'] = $user->getNom();
$utilisateur['prenom'] = $user->getPrenom();
$utilisateur['langue'] = $user->getLangue();
$utilisateur['credentiel'] = $user->getIdCredentiel();
$credentiel = $user->getIdCredentiel();
$utilisateur['pseudo'] = $user->getPseudo();
$session->set('iduser', $user->getIdParametres());
$session->set('pseudo', $user->getPseudo());
if ($user->getPhoto() =='' || $user->getPhoto() == null)
$utilisateur['photo'] = 'avatar.jpg';
else
$utilisateur['photo'] = $user->getPhoto();
}
// récupération du mot clé saisi
$motcle = $_POST['motcle'];
// partie à revoir EM 18/01/2012
$exlure = array("LE", "LA", "LES", "ET", "OU", "DE", "DES", "D�");
$clean_value = str_ireplace($exlure, "%", $motcle);
//$clean_value = str_ireplace(" ", "", $motcle);
$this->mc = $clean_value;
$now = date('Y-m-d');
// traitement des évènements
$qb=$em->createQueryBuilder('l');
$qb->select('l')
->from('App\Entity\ListeEvenements', 'l')
->leftJoin('App\Entity\ListePays', 'p','WITH','l.idListePays = p.idListePays')
->leftJoin('App\Entity\ListePaysTranslation','t','WITH','p.idListePays = t.idListePays')
->add('where', $qb->expr()->andX(
$qb->expr()->lt('l.date','?1'),$qb->expr()->orX(
$qb->expr()->like('l.titre', '?2'),
$qb->expr()->like('l.descriptions', '?2'),
$qb->expr()->like('l.lieu', '?2'),
$qb->expr()->like('t.pays', '?2')
)))
->orderBy('l.date','ASC')
->setParameters(array(1=>$now,2=>'%'.$motcle.'%'));
$query = $qb->getQuery();
$listeEvenements = $query->getResult();
//->add('orderBy', new Expr\OrderBy('l.date', 'ASC'));
// $this->listeEvenements = $listeEvenements ;
$j=0;
$pays_lev = array();
foreach($listeEvenements as $lev)
{
$pays_lev_stmt = $em->getConnection()->prepare("SELECT `id_liste_pays` , `pays` FROM `liste_pays_translation` WHERE `liste_pays_translation`.`lang` = '$langue' AND `liste_pays_translation`.`id_liste_pays` = ".$lev->getIdListePays());
$pays_lev_stmt->execute();
foreach($pays_lev_stmt->fetchAll() as $pays)
{
$pays_lev[$pays['id_liste_pays']] = $pays['pays'];
}
}
$pays_lev = array();
foreach($listeEvenements as $lev)
{
$pays_lev_stmt = $em->getConnection()->prepare("SELECT `pays` FROM `liste_pays_translation` WHERE `liste_pays_translation`.`lang` = 'fr' AND `liste_pays_translation`.`id_liste_pays` = ".$lev->getIdListePays());
$pays_lev_stmt->execute();
foreach($pays_lev_stmt->fetchAll() as $pays)
{
$pays_lev[] = $pays['pays'];
}
}
//
// herche dans groupes
// $query = Doctrine_Query::create()
// //->select('l.saison, v.detail_voyage')
// ->from('ListePays p')
// ->Where('p.pays LIKE ?', '%'.$motcle.'%');
// $pays = $query->execute();
// recherche dans voyage etape
// $query = Doctrine_Query::create()
/*$qb->select('l')
//->select('l.saison, v.detail_voyage')
->from('groupes g')
->leftJoin('g.Parametres p')
//rem loic le 26-06-2012
->innerjoin('g.GroupesMembres gm')
->where('gm.id_groupes =?',36)
//fin rem
->Where('g.groupe LIKE ?', '%'.$motcle.'%')
->orWhere('g.description LIKE ?', '%'.$motcle.'%');
$Groupes = $query->execute();
$listeGroupes = Groupes::getMesGroupes($idParametres);
if (isset($ownerName))
$this->ownerName = $ownerName;
$this->listeGroupes = $listeGroupes;
$this->Groupes = $Groupes;*/
//
// $query = Doctrine_Query::create()
//->select('l.saison, v.detail_voyage')
$qb=$em->createQueryBuilder();
$qb->select('v')
->from('App\Entity\Voyage','v')
->leftJoin('App\Entity\ListeSaison','l','WITH','v.idListeSaison = l.idListeSaison')
->leftJoin('App\Entity\Etapes', 'e','WITH', 'e.idVoyageServeur = v.idVoyageServeur')
// ->leftJoin('l.Translation t WITH t.lang = ?', $culture)
// ->leftJoin('v.GroupesVoyages g')
// ->leftJoin('g.Groupes j')
//->where('v.id_parametres = ?', $idParametres)
->add('where', $qb->expr()->orX(
$qb->expr()->like('v.detailVoyage', '?1'),
$qb->expr()->like('v.nomVoyage','?1'),
$qb->expr()->like('e.hebergement ','?1'),
$qb->expr()->like('e.particulariteEtape','?1'),
$qb->expr()->like('e.aVoir','?1'),
$qb->expr()->like('e.aFaire','?1'),
$qb->expr()->like('e.remarque','?1')
))
// $qb->expr()->like('t.saison LIKE ?', '%'.$motcle.'%')
// ->orWhere('j.groupe LIKE ?', '%'.$motcle.'%')
// ->orWhere('j.description LIKE ?', '%'.$motcle.'%')
// ->orWhere('g.notification LIKE ?', '%'.$motcle.'%')
//rem loic le 27-06-2012
->orderBy('v.idVoyageServeur', 'DESC')
->setParameter(1,'%'.$motcle.'%');
$query = $qb->getQuery();
$travelpublic=$query->getResult();
/*echo '<pre>';
print_r($travelpublic);
echo '</pre>';
die();*/
$travel_pays=array();
$likes=array();
foreach($travelpublic as $travel)
{
$statement_pays = $em->getConnection()->prepare('SELECT `liste_pays_translation`.`pays` FROM `liste_pays_translation` INNER JOIN `etapes` ON `etapes`.`id_liste_pays` = `liste_pays_translation`.`id_liste_pays` WHERE `etapes`.`id_voyage_serveur` = '.$travel->getIdVoyageServeur().' AND `etapes`.`num_etape` = 1');
$statement_pays->execute();
$result_pays = $statement_pays->fetchAll();
if(empty($result_pays))
{
$travel_pays[] = 'Non renseigné';
}
else
{
$travel_pays[] = $result_pays[0]['pays'];
}
$statement_like = $em->getConnection()
->prepare('SELECT COUNT(*) FROM `jaime` WHERE `jaime`.`id_voyage_serveur` = '.$travel->getIdVoyageServeur());
$statement_like->execute();
$result_like = $statement_like->fetchAll();
if(empty($result_like))
{
$likes[] = 0;
}
else
{
$likes[] = $result_like[0]['COUNT(*)'];
}
}
// ->andWhere('v.id_liste_type_voyage = ?',1);
// recherche les projets de voyages
/* $query = Doctrine_Query::create()
//->select('l.saison, v.detail_voyage')
->from('Voyage v')
->leftJoin('v.ListeSaison l')
->where('v.id_parametres = ?', $idParametres)
->andWhere('v.detail_voyage LIKE ?', '%'.$motcle.'%')
->andWhere('v.id_liste_type_voyage = ?',1)
//rem loic le 27-06-2012
->orderBy('v.id_voyage_serveur DESC');
//fin rem loic
$mesProjets = $query->execute();
$this->mesProjets = $mesProjets;*/
// recherche dans mon voyage
$qb=$em->createQueryBuilder();
$qb->select('v')
->from('App\Entity\Voyage','v')
->leftJoin('App\Entity\ListeSaison','l','WITH','v.idListeSaison = l.idListeSaison')
->add('where', $qb->expr()->orX(
$qb->expr()->eq('v.idParametres', '?1'),
$qb->expr()->eq('v.detailVoyage', '?1'),
$qb->expr()->eq('v.idListeTypeVoyage', '?2')
))
->setParameters(array(1=>'%'.$motcle.'%',2=>'2'));
$query = $qb->getQuery();
$monVoyage=$query->getResult();
////////
$events = $em->createQueryBuilder("evt")
->select("e")
->from("App\Entity\ListeEvenements", "e")
->where("DATE_ADD(e.date, e.nbreDeJour, 'DAY') BETWEEN CURRENT_DATE() AND DATE_ADD(CURRENT_DATE() ,5 , 'DAY')")
->orWhere("e.date BETWEEN CURRENT_DATE() AND DATE_ADD(CURRENT_DATE(), 5, 'DAY')")
->orWhere("e.date = CURRENT_DATE()")
->orderBy("e.date")
->getQuery()
->getResult();
$pays_events = array();
$flag_events = array();
$i = 0;
/* echo '<pre>';
var_dump($events);
echo '</pre>';
die();*/
foreach($events as $event)
{
$stmt_p = $em->getConnection()->prepare("SELECT `pays` FROM `liste_pays_translation` WHERE `liste_pays_translation`.`lang` = '".$langue."' AND `id_liste_pays` = ".$event->getIdListePays());
$stmt_p->execute();
$pays_events[$i] = $stmt_p->fetchAll()[0]['pays'];
$stmt_f = $em->getConnection()->prepare('SELECT `flag` FROM `liste_pays` WHERE `id_liste_pays` ='.$event->getIdListePays());
$stmt_f->execute();
$flag_events[$i] = $stmt_f->fetchAll()[0]['flag'];
$i++;
}
// recherche dans mes anciens voyages
/* $query = Doctrine_Query::create()
//->select('l.saison, v.detail_voyage')
->from('Voyage v')
->where('v.id_parametres = ?', $idParametres)
->andWhere('v.id_liste_type_voyage = ?',3)
->andWhere('v.detail_voyage LIKE ?', '%'.$motcle.'%');
$mesAnciensVoyages = $query->execute();
$this->mesAnciensVoyages = $mesAnciensVoyages;*/
//$travelpublic=array();
//$travel_pays=array();
//$likes=array();
$langue="fr";
$locale="fr_FR";
return $this->render('home/search.html.php', array(
'listeEvenements' => $listeEvenements,
'monVoyage' => array(),
'pays_lev'=> $pays_lev,
'travelpublic'=>$travelpublic,
'travel_pays'=>$travel_pays,
'credentiel' =>$credentiel,
'likes'=>$likes,
'langue'=>$langue,
'locale'=>$locale,
'idParemetre'=>$user->getIdParametres(),
'listeMenu'=>$listeMenu,
'utilisateur'=>$utilisateur
));
//}
}
}
?>