<?php
namespace App\Controller;
use App\Entity\Sondage;
use App\Entity\TypeSondage;
use App\Entity\Comment;
use App\Entity\Enquetes;
use App\Entity\ReponseUser;
use App\Entity\Infousers;
use App\Entity\PayeUsers;
use App\Entity\UserVip;
use App\Entity\User;
use App\Entity\UsersAuthToken;
use App\Entity\Forums;
use App\Entity\UserNiveauAtteint;
use App\Entity\UserOccupationPrincipale;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Security\Core\Security;
use Pusher\Pusher;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Mime\Email;
class SecurityController extends AbstractController
{
private $session;
private $security;
private $pusher;
public function __construct(SessionInterface $session,Security $security,Pusher $pusher)
{
$this->session = $session;
$this->security = $security;
$this->pusher = $pusher;
}
public function redirectadmin()
{
if($this->getUser()){
return null;
}
return $this->redirectToRoute('home');
}
public function home()
{
return $this->redirectToRoute('home');
}
public function index(Request $request)
{
if($request->get('auth') && $request->get('auth')=="success"){
$entityManager = $this->getDoctrine()->getManager();
$tokenuser = uniqid().$request->get('_csrf_token').uniqid();
$user = $entityManager->getRepository(User::class)->findOneBy(['username' => $request->get('login')]);
if (!$user) {
$user = $entityManager->getRepository(User::class)->findOneBy(['phone' => $request->get('login')]);
}
if (!$user) {
$user = $entityManager->getRepository(User::class)->findOneBy(['email' => $request->get('login')]);
}
if ($user) {
$AuthToken = new UsersAuthToken();
$AuthToken->setIdUser($user->getId());
$AuthToken->setToken($tokenuser);
$AuthToken->setCreateAt(new \DateTime("now"));
$AuthToken->setExpired(0);
$entityManager->persist($AuthToken);
$entityManager->flush();
return $this->redirectToRoute('home',["token"=>$tokenuser]);
}
}
if ($this->getUser()) {
$page_sondage = $this->session->get('page_sondage');
if ($page_sondage && $page_sondage!=""){
$reponseuser = new ReponseuserController($this->security,$this->pusher);
$user_sondage = $this->session->get('reponse_user_sondage');
$user_sondage_type = $this->session->get('reponse_user_sondage_type');
if($user_sondage !=""){
$request->attributes->set('user_sondage',$user_sondage);
$request->attributes->set('user_sondage_type',$user_sondage_type);
$request->attributes->set('user_sondage_login','oui');
$reponseuser->voter_sondage($request,$page_sondage,$this->getDoctrine());
}
$sondage= $this->getDoctrine()->getRepository(Sondage::class)->find($page_sondage);
if($request->getLocale()=="fr"){
$slug = $sondage->getSlugFr();
}else{
$slug = $sondage->getSlugAr();
}
if($sondage->getCategories()){
$categorie= $this->getDoctrine()->getRepository(TypeSondage::class)->find($sondage->getCategories()[0]);
if($request->getLocale()=="fr"){
$categorie=$categorie->getSlug();
}else{
$categorie=$categorie->getArSlug();
}
}else{
$categorie="null";
}
$this->session->set('page_sondage',"");
$this->session->set('user_sondage',"");
$this->session->set('user_sondage_type',"");
$this->session->set('user_sondage_login',"");
if($request->get('token') && $request->get('token')!=""){
return $this->redirectToRoute('detail_sondage', array(
'categorie' => $categorie,
'slug' => $slug,
'token' =>$request->get('token')
));
}else{
return $this->redirectToRoute('detail_sondage', array(
'categorie' => $categorie,
'slug' => $slug
));
}
}
}
$sondages = $this->getDoctrine()->getRepository(Sondage::class)->findBy(['post_status' => 'publish'],['id' => 'DESC']);
$sql = "
SELECT s.id as id_s ,
(SELECT count(*) FROM reponse_user r WHERE s.id = r.id_sondage ) as nbvotes ,
(SELECT count(*) FROM comment c WHERE s.id = c.id_sondage ) as nbcomments
FROM sondage s
";
$nbvotesnbcomments = $this->getDoctrine()->getManager()->getConnection()->prepare($sql);
$nbvotesnbcomments->execute();
$nbvotesnbcomments = $nbvotesnbcomments->fetchAll();
$nbvotes_nbcomments = [];
foreach ($nbvotesnbcomments as $key => $value) {
$nbvotes_nbcomments [$value["id_s"]] = $value;
}
$sondages_art_culture = $this->get_sondages_home_by_categorie($sondages,1,$request->getLocale(),4,$nbvotes_nbcomments);
$sondages_celebrites = $this->get_sondages_home_by_categorie($sondages,2,$request->getLocale(),6,$nbvotes_nbcomments);
$sondages_divertissement = $this->get_sondages_home_by_categorie($sondages,3,$request->getLocale(),4,$nbvotes_nbcomments);
$sondages_economie = $this->get_sondages_home_by_categorie($sondages,4,$request->getLocale(),4,$nbvotes_nbcomments);
$sondages_medias = $this->get_sondages_home_by_categorie($sondages,5,$request->getLocale(),4,$nbvotes_nbcomments);
$sondages_santes = $this->get_sondages_home_by_categorie($sondages,12,$request->getLocale(),4,$nbvotes_nbcomments);
$sondages_society = $this->get_sondages_home_by_categorie($sondages,8,$request->getLocale(),6,$nbvotes_nbcomments);
$sondages_policy = $this->get_sondages_home_by_categorie($sondages,9,$request->getLocale(),4,$nbvotes_nbcomments);
$sondages_sport = $this->get_sondages_home_by_categorie($sondages,7,$request->getLocale(),5,$nbvotes_nbcomments);
$sondages_divers = $this->get_sondages_home_by_categorie($sondages,11,$request->getLocale(),5,$nbvotes_nbcomments);
$typesondage = $this->getDoctrine()->getRepository(TypeSondage::class)->findAll();
$categories = [] ;
foreach ($typesondage as $key => $value) {
$categories [$value->getId()] =$value;
}
$sondages_slider = $this->prepare_slider_home($request->getLocale());
$pays= $this->getDoctrine()->getRepository(PayeUsers::class)->findBy(['parent' => null]);
$paysSondage=[];
foreach ($pays as $key => $value) {
if($request->getLocale()=="fr"){
$paysSondage [$value->getId()] =$value->getLibelle();
}elseif($request->getLocale()=="ar"){
$paysSondage [$value->getId()] =$value->getLibelleAr();
}
}
return $this->render('security/index.html.twig', [
'page' => 'Home',
'controller_name' => 'SecurityController',
'categories' => $categories,
'sondages_slider' => $sondages_slider,
'sondages_art_culture' => $sondages_art_culture,
'sondages_celebrites' => $sondages_celebrites,
'sondages_divertissement' => $sondages_divertissement,
'sondages_economie' => $sondages_economie,
'sondages_medias' => $sondages_medias,
'sondages_santes' => $sondages_santes,
'sondages_sport' => $sondages_sport,
'sondages_society' => $sondages_society,
'sondages_policy' => $sondages_policy,
'sondages_divers' => $sondages_divers,
'pays' => $paysSondage
]);
}
public function get_sondages_home_by_categorie($sondages,$categorie,$long,$nb_sondages,$nbvotes_nbcomments)
{
if($long=="fr"){
foreach ($sondages as $key => $sondage) {
if( $sondage->getLongSondage() =="ar" ){
unset($sondages[$key]);
}else{
if(!in_array($categorie, $sondage->getCategories())){
unset($sondages[$key]);
}
}
}
}else{
foreach ($sondages as $key => $sondage) {
if( $sondage->getLongSondage() =="fr" ){
unset($sondages[$key]);
}else{
if(!in_array($categorie, $sondage->getCategories())){
unset($sondages[$key]);
}
}
}
}
$new_sondages=[];
//if($nb_sondages<=sizeof($sondages)){
$i=0;
foreach ($sondages as $key => $sondage) {
if($i<$nb_sondages){
$new_sondages [] =$sondage;
}else{
break;
}
$i++;
}
foreach ($new_sondages as $key => &$sondage) {
//$comments = $this->getDoctrine()->getRepository(Comment::class)->findBy(['id_sondage'=>$sondage->getId()]);
$sondage->{'nbcomments'} = $nbvotes_nbcomments[$sondage->getId()]["nbcomments"];//sizeof($comments);
//$reponseUser= $this->getDoctrine()->getRepository(ReponseUser::class)->findBy(["id_sondage"=>$sondage->getId()]);
$sondage->{'nbvotes'} = $nbvotes_nbcomments[$sondage->getId()]["nbvotes"]+$sondage->getVoteVartuel();//sizeof($reponseUser);
}
//}
return $new_sondages;
}
public function admin(Request $request)
{
if ($this->getUser()) {
if ($this->getUser()->getValid()==null){
// $PayesUser = $this->getDoctrine()->getRepository(PayeUsers::class)->findBy(['parent' => 1]);
// foreach ($PayesUser as $key => &$PayeUser ) {
// $filss = $this->getDoctrine()->getRepository(PayeUsers::class)->findBy(['parent' => $PayeUser->getId()]);
// foreach ($filss as $key => &$fils ) {
// $fils->{'fils'}=$this->getDoctrine()->getRepository(PayeUsers::class)->findBy(['parent' => $fils->getId()]);
// }
// $PayeUser->{'fils'}=$filss;
// }
// $infouser = $this->getDoctrine()->getRepository(Infousers::class)->findBy(['id_user'=>$this->getUser()->getId()]);
// $NiveausAtteint = $this->getDoctrine()->getRepository(UserNiveauAtteint::class)->findAll();
// $OccupationsPrincipale = $this->getDoctrine()->getRepository(UserOccupationPrincipale::class)->findAll();
// return $this->render('user/complete_info.html.twig', [
// 'page' => 'User',
// 'controller_name' => 'UserController',
// 'PayesUser' => $PayesUser,
// 'infouser' => $infouser[0],
// 'NiveausAtteint' => $NiveausAtteint,
// 'OccupationsPrincipale' => $OccupationsPrincipale
// ]);
}
$page_sondage = $this->session->get('page_sondage');
if ($page_sondage && $page_sondage!=""){
$reponseuser = new ReponseuserController($this->security,$this->pusher);
$user_sondage = $this->session->get('reponse_user_sondage');
$user_sondage_type = $this->session->get('reponse_user_sondage_type');
if($user_sondage !=""){
$request->attributes->set('user_sondage',$user_sondage);
$request->attributes->set('user_sondage_type',$user_sondage_type);
$request->attributes->set('user_sondage_login','oui');
$reponseuser->voter_sondage($request,$page_sondage,$this->getDoctrine());
}
$sondage= $this->getDoctrine()->getRepository(Sondage::class)->find($page_sondage);
if($request->getLocale()=="fr"){
$slug = $sondage->getSlugFr();
}else{
$slug = $sondage->getSlugAr();
}
if($sondage->getCategories()){
$categorie= $this->getDoctrine()->getRepository(TypeSondage::class)->find($sondage->getCategories()[0]);
if($request->getLocale()=="fr"){
$categorie=$categorie->getSlug();
}else{
$categorie=$categorie->getArSlug();
}
}else{
$categorie="null";
}
$this->session->set('page_sondage',"");
$this->session->set('user_sondage',"");
$this->session->set('user_sondage_type',"");
$this->session->set('user_sondage_login',"");
return $this->redirectToRoute('detail_sondage', array(
'categorie' => $categorie,
'slug' => $slug
));
}
$page_enquete = $this->session->get('page_enquete');
if ($page_enquete && $page_enquete!=""){
$sondage= $this->getDoctrine()->getRepository(Enquetes::class)->find($page_enquete);
$categorie=$sondage->getCategories()[0];
$this->session->set('page_enquete',"");
return $this->redirectToRoute('detail_enquete_id', array(
'id_categorie' => $categorie,
'id' => $page_enquete
));
}
$infouser = $this->getDoctrine()->getRepository(Infousers::class)->findBy(['id_user'=>$this->getUser()->getId()]);
if($infouser){
$info_user= $infouser[0];
$all_points_user= $this->getDoctrine()->getRepository(ReponseUser::class)->findBy(["id_user"=>$this->getUser()->getId()]);
$points_sondage = 0;
foreach ($all_points_user as $key => $value) {
$points_sondage +=$value->getNpPoints();
}
$points_vip = 0;
if ($this->getUser()->getUserVip()==7) {
$all_points_user= $this->getDoctrine()->getRepository(UserVip::class)->findBy(["id_user"=>$this->getUser()->getId()]);
foreach ($all_points_user as $key => $value) {
$points_vip +=$value->getNbPoint();
}
}
$points_heritage = 0;
$infouser_parents = $this->getDoctrine()->getRepository(Infousers::class)->findBy(['id_parent'=>$this->getUser()->getId()]);
foreach ($infouser_parents as $key => $infouser_parent) {
if($infouser_parent->getValide()==1){
$points_heritage = $points_heritage + 200 ;
}
}
}
return $this->render('admin/index.html.twig', [
'page' => 'Home',
'controller_name' => 'SecurityController',
'infouser' => $infouser[0],
'points_vip' => $points_vip,
'points_sondage' => $points_sondage,
'points_heritage' => $points_heritage,
'token' => $request->get("token")
]);
}else{
return $this->redirectToRoute('home');
}
}
/**
* @Route("/blockmonaccount", name="blockmonaccount")
*/
public function blockmonaccount(Request $request)
{
if ($this->getUser()) {
$infouser = $this->getDoctrine()->getRepository(Infousers::class)->findBy(['id_user'=>$this->getUser()->getId()]);
return $this->render('security/block_mon_account.html.twig', [
'user' => $this->getUser(),
'infouser' => $infouser[0],
'connected' => "oui"
]);
}else{
return $this->render('security/block_mon_account.html.twig', [
'user' => null,
'infouser' => null,
'connected' => "non"
]);
}
}
/**
* @Route("/nav_categories-{slog_name}", name="nav_categories")
*/
public function nav_categories($slog_name = null)
{
$sql = "UPDATE `sondage` SET expirer=1 WHERE date_fin < CURDATE() OR (date_fin = CURDATE() AND `time_fin`<= CURTIME())";
$update_sondage = $this->getDoctrine()->getManager()->getConnection()->prepare($sql);
$update_sondage->execute();
$categories = $this->getDoctrine()->getRepository(TypeSondage::class)->findBy([],["sort"=>"ASC"]);
foreach ($categories as $key => $categorie) {
if($categorie->getSort()==0)
unset( $categories[$key] );
}
//dd($slog_name);
return $this->render('nav_categories.html.twig', [
'nav_categories' => $categories,
'slog_name' => $slog_name
]);
}
/**
* @Route("/get_parrain", name="get_parrain")
*/
public function get_parrain()
{
$name="";
$user = $this->getUser();
if( $user && !in_array("ROLE_ADMIN", $user->getRoles())){
$infouser = $this->getDoctrine()->getRepository(Infousers::class)->findBy(["id_user"=>$user->getId()]);
if($infouser){
$parent = $this->getDoctrine()->getRepository(Infousers::class)->find($infouser[0]->getIdParent());
if($parent){
$name=$parent->getNom();
}
}
}
return $this->render('admin/get_parrain.html.twig', [
'name'=> $name
]);
}
public function login(Request $request,AuthenticationUtils $authenticationUtils): Response
{
if($request->get('sondage')){
$this->session->set('page_sondage', $request->get('sondage'));
$this->session->set('reponse_user_sondage', $request->get('user_sondage'));
$this->session->set('reponse_user_sondage_type', $request->get('user_sondage_type'));
}
if($request->get('enquete')){
$this->session->set('page_enquete', $request->get('enquete'));
}
if ($this->getUser()) {
return $this->redirectToRoute('home');
}
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('security/login.html.twig', ['last_username' => $lastUsername, 'error' => $error]);
}
public function logout()
{
//throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
}
public function app_logout_user(Request $request)
{
dd($request->get('token'));
}
public function login_google(Request $request)
{
if ($this->getUser()) {
return $this->redirectToRoute('home');
}
$user = $this->getDoctrine()->getRepository(User::class)->findBy(["email" => $request->get("google_email")]);
if($user && sizeof($user)>0 ){
$user = $user[0];
if($user->getIdGoogle() == $request->get("google_id") ){
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
$this->get('session')->set('_security_main', serialize($token));
$entityManager = $this->getDoctrine()->getManager();
$tokenuser = uniqid().$request->get('_csrf_token').uniqid();
$AuthToken = new UsersAuthToken();
$AuthToken->setIdUser($user->getId());
$AuthToken->setToken($tokenuser);
$AuthToken->setCreateAt(new \DateTime("now"));
$AuthToken->setExpired(0);
$entityManager->persist($AuthToken);
$entityManager->flush();
return $this->redirectToRoute('home',["token"=>$tokenuser]);
}else{
return $this->redirectToRoute('app_login',['error' => "l'email google existe déjà "]);
}
}else{
return $this->redirectToRoute('add_user',[
"email"=>$request->get("google_email"),
"name"=>$request->get("google_name"),
"prenom"=>$request->get("google_prenom"),
"google_id"=>$request->get("google_id"),
"login"=>$request->get("google_login"),
"photo"=>$request->get("google_photo"),
]);
}
}
public function login_facebook(Request $request)
{
if ($this->getUser()) {
return $this->redirectToRoute('home');
}
$user = $this->getDoctrine()->getRepository(User::class)->findBy(["email" => $request->get("fb_email")]);
if($user && sizeof($user)>0 ){
$user = $user[0];
if($user->getIdFacebook() == $request->get("fb_id") ){
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
$this->get('session')->set('_security_main', serialize($token));
$entityManager = $this->getDoctrine()->getManager();
$tokenuser = uniqid().$request->get('_csrf_token').uniqid();
$AuthToken = new UsersAuthToken();
$AuthToken->setIdUser($user->getId());
$AuthToken->setToken($tokenuser);
$AuthToken->setCreateAt(new \DateTime("now"));
$AuthToken->setExpired(0);
$entityManager->persist($AuthToken);
$entityManager->flush();
return $this->redirectToRoute('home',["token"=>$tokenuser]);
}else{
return $this->redirectToRoute('app_login',['error' => "l'email facebook existe déjà "]);
}
}else{
return $this->redirectToRoute('add_user',[
"email"=>$request->get("fb_email"),
"name"=>$request->get("fb_name"),
"prenom"=>$request->get("fb_prenom"),
"fb_id"=>$request->get("fb_id"),
"login"=>$request->get("fb_login"),
"photo"=>$request->get("fb_photo"),
]);
}
}
public function login_key_token(Request $request)
{
if ($request->get("login_key_token")!="") {
$token = $this->getDoctrine()->getRepository(UsersAuthToken::class)->findOneBy(["token" => $request->get("login_key_token")]);
if( $token ){
$user = $this->getDoctrine()->getRepository(User::class)->find($token->getIdUser());
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
$this->get('session')->set('_security_main', serialize($token));
return new Response("connected");
}
}
return new Response("error");
}
public function forgottenPassword(Request $request, UserPasswordEncoderInterface $encoder, MailerInterface $mailer, TokenGeneratorInterface $tokenGenerator,TranslatorInterface $translator): Response
{
if ($request->isMethod('POST')) {
$email = $request->request->get('email');
$entityManager = $this->getDoctrine()->getManager();
$user = $entityManager->getRepository(User::class)->findOneByEmail($email);
if ($user === null) {
$this->addFlash('danger', 'Email Inconnu, recommence !');
return $this->redirectToRoute('app_forgotten_password');
}
$token = $tokenGenerator->generateToken();
try{
$user->setResetToken($token);
$entityManager->flush();
} catch (\Exception $e) {
$this->addFlash('warning', $e->getMessage());
return $this->redirectToRoute('home');
}
$url = $this->generateUrl('app_reset_password', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL);
$infouser = $this->getDoctrine()->getRepository(Infousers::class)->findBy(['id_user'=>$user->getId()]);
$message = (new Email())
->from('noreply@e-sondage.com')
->to($user->getEmail())
->subject($translator->trans('Oubli de mot de passe - Réinisialisation'))
->text('Sending emails is fun again!')
->html($this->renderView('security/emails/resetPasswordMail.html.twig', ['user'=>$user,'infouser'=>$infouser[0],'url'=>$url ] ));
$mailer->send($message);
$this->addFlash('notice', 'Mail envoyé, tu vas pouvoir te connecter à nouveau !');
return $this->redirectToRoute('valider_email',["type"=>"reset_password"]);
}
return $this->render('security/forgottenPassword.html.twig');
}
public function resetPassword(Request $request, string $token, UserPasswordEncoderInterface $passwordEncoder)
{
$entityManager = $this->getDoctrine()->getManager();
$user = $entityManager->getRepository(User::class)->findOneBy(["reset_token"=>$token]);
/* @var $user User */
if ($user === null) {
$this->addFlash('danger', 'Mot de passe non reconnu');
return $this->redirectToRoute('home');
}
//Reset avec le mail envoyé
if ($request->isMethod('POST')) {
$password = $passwordEncoder->encodePassword($user, $request->get('password'));
$user->setResetToken(null);
$entityManager->flush();
$entityManager->getRepository(User::class)->upgradePassword($user,$password);
// $user->setPassword($passwordEncoder->encodePassword($user, $request->get('password')));
//
$this->addFlash('notice', 'Mot de passe mis à jour !');
return $this->redirectToRoute('app_login');
}else {
return $this->render('security/resetPassword.html.twig', ['token' => $token]);
}
}
public function prepare_slider_home($long)
{
$sondages_slider = $this->getDoctrine()->getRepository(Sondage::class)->findBy(["top" => "on",'post_status' => 'publish'],['date_deb' => 'DESC']);
$enquetes_slider = $this->getDoctrine()->getRepository(Enquetes::class)->findBy(["top" => "on"],['id' => 'DESC']);
foreach ($sondages_slider as $key => $slider) {
if ($long=="fr") {
if( $slider->getLongSondage() =="ar" ){
unset($sondages_slider[$key]);
}
}else{
if( $slider->getLongSondage() =="fr" ){
unset($sondages_slider[$key]);
}
}
}
foreach ($enquetes_slider as $key => $slider) {
if ($long=="fr") {
if( $slider->getLongEnquete() =="ar" ){
unset($enquetes_slider[$key]);
}
}else{
if( $slider->getLongEnquete() =="fr" ){
unset($enquetes_slider[$key]);
}
}
}
$slider_home=[];
foreach ($sondages_slider as $key => $sondage) {
$reponseUser= $this->getDoctrine()->getRepository(ReponseUser::class)->findBy(["id_sondage"=>$sondage->getId()]);
$reponseUser =sizeof($reponseUser);
$slider_home[]=[
"id"=>$sondage->getId(),
"name" => ($long=="fr") ? $sondage->getNameSondage() : $sondage->getArNameSondage() ,
"categories" => $sondage->getCategories(),
"image"=>$sondage->getImage(),
"expirer"=>$sondage->getExpirer(),
"dateFin" => $sondage->getDateFin(),
"timeFin" => $sondage->getTimeFin(),
"paye_sondage" => $sondage->getPayeSondage(),
"slug" => ($long=="fr") ? $sondage->getSlugFr() : $sondage->getSlugAr() ,
"nbvotes" => $reponseUser+$sondage->getVoteVartuel(),
"nbcomments" => "0",
"type" => "sondage"
];
}
// foreach ($enquetes_slider as $key => $enquete) {
// $slider_home[]=[
// "id"=>$sondage->getId(),
// "name" => ($long=="fr") ? $enquete->getNameEnquete() : $enquete->getArNameEnquete() ,
// "categories" => $enquete->getCategories(),
// "image"=>$enquete->getImage(),
// "expirer"=>$enquete->getExpirer(),
// "dateFin" => $enquete->getDateFin(),
// "timeFin" => $enquete->getTimeFin(),
// "paye_sondage" => $sondage->getPayeSondage(),
// "slug" => ($long=="fr") ? $enquete->getSlugFr() : $enquete->getSlugAr() ,
// "nbvotes" => "0",
// "nbcomments" => "0",
// "type" => "enquete"
// ];
// }
$new_slider_home=[];
foreach ($slider_home as $key => $slider) {
$slider_s1=$slider_home[0];
try {
if($slider_home[$key+1]){
$slider_s1=$slider_home[$key+1];
}
} catch (\Throwable $th) {}
$slider_s2=$slider_home[1];
try {
if($slider_home[$key+2]){
$slider_s2=$slider_home[$key+2];
}
} catch (\Throwable $th) {}
$new_slider_home[]=[
"slider_p" => $slider,
"slider_s1" => $slider_s1,
"slider_s2" => $slider_s2,
];
}
//dd( $new_slider_home );
// $sondages_slider_old=[];
// foreach ($sondages_slider as $key => $slider) {
// $sondages_slider_old[]=$slider;
// }
// $sondages_slider= $sondages_slider_old;
// $new_sondages_slider=[];
// $i=0;
// $block_sondages_slider=[];
// foreach ($sondages_slider as $key => $slider) {
// if ($i==0) {
// $block_sondages_slider=[];
// }
// $block_sondages_slider [] = $slider;
// $i++;
// if ($i==3) {
// $new_sondages_slider [] = $block_sondages_slider;
// $i=0;
// }
// }
// if ($i==2) {
// $block_sondages_slider [] = $sondages_slider[0];
// $new_sondages_slider [] = $block_sondages_slider;
// }
// if ($i==1) {
// $block_sondages_slider [] = $sondages_slider[0];
// $block_sondages_slider [] = $sondages_slider[1];
// $new_sondages_slider [] = $block_sondages_slider;
// }
return $new_slider_home;
}
public function Categories(Request $request,$categorie)
{
if($request->getLocale()=="fr"){
$categorie_id = $this->getDoctrine()->getRepository(TypeSondage::class)->findBy(["slug"=>$categorie]);
}else{
$categorie_id = $this->getDoctrine()->getRepository(TypeSondage::class)->findBy(["ar_slug"=>$categorie]);
}
if(!$categorie_id){
if($request->getLocale()=="ar"){
$categorie_id = $this->getDoctrine()->getRepository(TypeSondage::class)->findBy(["slug"=>$categorie]);
}else{
$categorie_id = $this->getDoctrine()->getRepository(TypeSondage::class)->findBy(["ar_slug"=>$categorie]);
}
}
if($categorie_id){
$categorie_id =$categorie_id[0];
$categorie_id = $categorie_id->getId();
$sondages = $this->getDoctrine()->getRepository(Sondage::class)->findBy(['post_status' => 'publish'],['date_deb' => 'DESC']);
$enquetes = $this->getDoctrine()->getRepository(Enquetes::class)->findBy([],['id' => 'DESC']);
$forums = $this->getDoctrine()->getRepository(Forums::class)->findBy([],['id' => 'DESC']);
if($request->getLocale()=="fr"){
foreach ($sondages as $key => $sondage) {
if( $sondage->getLongSondage() =="ar" ){
unset($sondages[$key]);
}else{
if(!in_array($categorie_id, $sondage->getCategories())){
unset($sondages[$key]);
}
}
}
foreach ($enquetes as $key => $enquete) {
if( $enquete->getLongEnquete() =="ar" ){
unset($enquetes[$key]);
}else{
if(!in_array($categorie_id, $enquete->getCategories())){
unset($enquetes[$key]);
}
}
}
}else{
foreach ($sondages as $key => $sondage) {
if( $sondage->getLongSondage() =="fr" ){
unset($sondages[$key]);
}else{
if(!in_array($categorie_id, $sondage->getCategories())){
unset($sondages[$key]);
}
}
}
foreach ($enquetes as $key => $enquete) {
if( $enquete->getLongEnquete() =="fr" ){
unset($enquetes[$key]);
}else{
if(!in_array($categorie_id, $enquete->getCategories())){
unset($enquetes[$key]);
}
}
}
}
}else{
$sondages = [] ;
$enquetes = [] ;
$forums = [] ;
}
$all=[];
foreach ($sondages as $key => &$sondage) {
$comments = $this->getDoctrine()->getRepository(Comment::class)->findBy(['id_sondage'=>$sondage->getId()]);
$sondage->{'nbcomments'} = sizeof($comments);
$reponseUser= $this->getDoctrine()->getRepository(ReponseUser::class)->findBy(["id_sondage"=>$sondage->getId()]);
$sondage->{'nbvotes'} = sizeof($reponseUser);
$sondage->{'namefr'} = $sondage->getNameSondage();
$sondage->{'namear'} = $sondage->getArNameSondage();
$sondage->{'slugfr'} = $sondage->getSlugFr();
$sondage->{'slugar'} = $sondage->getSlugAr();
$sondage->{'descriptionfr'} = $sondage->getDescriptionFr();
$sondage->{'descriptionar'} = $sondage->getDescriptionAr();
$sondage->{'typeall'} = "sondage";
$all[]= $sondage;
}
foreach ($enquetes as $key => &$enquete) {
//$comments = $this->getDoctrine()->getRepository(Comment::class)->findBy(['id_sondage'=>$sondage->getId()]);
$enquete->{'nbcomments'} = 0;//sizeof($comments);
//$reponseUser= $this->getDoctrine()->getRepository(ReponseUser::class)->findBy(["id_sondage"=>$sondage->getId()]);
$enquete->{'nbvotes'} = 0;//sizeof($reponseUser);
$enquete->{'namefr'} = $enquete->getNameEnquete();
$enquete->{'namear'} = $enquete->getArNameEnquete();
$enquete->{'slugfr'} = $enquete->getSlugFr();
$enquete->{'slugar'} = $enquete->getSlugAr();
$enquete->{'descriptionfr'} = $enquete->getDescriptionFr();
$enquete->{'descriptionar'} = $enquete->getDescriptionAr();
$enquete->{'typeall'} = "enquete";
$all[]= $enquete;
}
foreach ($forums as $key => &$forum) {
//$comments = $this->getDoctrine()->getRepository(Comment::class)->findBy(['id_sondage'=>$sondage->getId()]);
$forum->{'nbcomments'} = 0;//sizeof($comments);
//$reponseUser= $this->getDoctrine()->getRepository(ReponseUser::class)->findBy(["id_sondage"=>$sondage->getId()]);
$forum->{'nbvotes'} = 0;//sizeof($reponseUser);
$forum->{'namefr'} = $forum->getLibelle();
$forum->{'namear'} = $forum->getLibelle();
$forum->{'slugfr'} = $forum->getSlug();
$forum->{'slugar'} = $forum->getSlug();
$forum->{'descriptionfr'} = $forum->getDescription();
$forum->{'descriptionar'} = $forum->getDescription();
$forum->{'expirer'} = 0;
$forum->{'nbPoint'} = 0;
$forum->{'typeall'} = "forum";
$all[]= $forum;
}
$categories = $this->getDoctrine()->getRepository(TypeSondage::class)->findAll();
$liste_categories=[];
foreach ($categories as $key => $value) {
$liste_categories[$value->getId()] = $value;
}
$categorie_name = $liste_categories[$categorie_id]->getLibelle();
if($request->getLocale()=="ar")
$categorie_name = $liste_categories[$categorie_id]->getArLibelle();
//dd($all);
return $this->render('liste-categories-all.html.twig', [
'controller_name' => 'Home',
'categorie_id' => $categorie_id,
'categorie' => $categorie,
'all' => $all,
'liste_categories' => $liste_categories,
'categorie_name' => $categorie_name
]);
}
/**
* @Route("/change-locale/{locale}", name="change_locale")
*/
public function changeLocale(Request $request,$locale)
{
$request->getSession()->set("_locale",$locale);
$url = $request->headers->get('referer');
$url = str_replace("/ar","/".$locale,$url);
$url = str_replace("/fr","/".$locale,$url);
$ref = str_replace("app_dev.php/", "", parse_url( $url,PHP_URL_PATH ));
$route = $this->container->get('router')->match($ref)['_route'];
return $this->redirectToRoute($route);
//return $this->redirect( $url );
}
/**
* @Route("/{_locale}/typed_text", name="typed_text")
*/
public function typed_text(Request $request)
{
return $this->render('typed_text.html.twig');
}
/**
* @Route("/{_locale}/pusher", name="pusher")
*/
public function pusher(Request $request,Pusher $pusher)
{
$pusher->trigger('nb-votes-sondage', 'update', [
"id"=>55,
"nbVotes" => 366
]);
return $this->render('typed_text.html.twig');
}
}