src/VcaBundle/Controller/IndexController.php line 27

Open in your IDE?
  1. <?php
  2. namespace VcaBundle\Controller;
  3. use BeSimple\SsoAuthBundle\Tests\Controller\TrustedSsoController;
  4. use Proxies\__CG__\VcaBundle\Entity\Users;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Session\Session;
  9. use Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager;
  10. use Symfony\Component\Validator\Tests\Fixtures\Entity;
  11. use VcaBundle\VcaBundle;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  13. use VcaBundle\Entity\DataverseArticle;
  14. class IndexController extends AbstractController
  15. {
  16.     public function preExecute()
  17.     {
  18.         @UsersController::securityAction();
  19.     }
  20.     /**
  21.      * @Route("/", name="homepage")
  22.      */
  23.     public function indexAction(Request $request)
  24.     {
  25.         $db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
  26.         $sql "Select b.id, b.blogTitre, b.blogDescription, b.blogFilename
  27.                 FROM blog b where blogpublie is true
  28.                 ORDER BY b.id desc ";
  29.         $blogs=$db->fetchAll($sql);
  30.         $sql "Select b.id, b.diapoTitre, b.diapoDescription, b.diapoFilename
  31.                 FROM diaporama b
  32.                 ORDER BY b.id desc ";
  33.         $diaporamas=$db->fetchAll($sql);
  34.         $sql "SELECT * FROM v_graphique_annee";
  35.         $annee $db->fetchAll($sql);
  36.         $itemsDataverse ApiController::apidataverseAction($this->getParameter('dataverse_api'));
  37.         if ($itemsDataverse == null){
  38.             $em $this->getDoctrine()->getManager();
  39.             $itemsDataverse $em->getRepository('VcaBundle:DataverseArticle')->findAll();
  40.         }
  41.         $itemsAgritrop ApiController::apiAgritropAction($this->getParameter('agritrop_rss').urlencode($this->getParameter('agritrop_requete')));
  42.         return $this->render('default/homepage.html.twig', array(
  43.             'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
  44.             'blogs' => $blogs,
  45.             'diaporamas' => $diaporamas,
  46.             'itemsDataverse' => $itemsDataverse,
  47.             'itemsAgritrop' => $itemsAgritrop['channel']['item'],
  48.             'graphiqueAnnee' => $annee
  49.         ));
  50.     }
  51.     /**
  52.      * Récupère le nombre d'analyses par an
  53.      *
  54.      * @Route("/get_graphique/annee", name="get_graphique_annee")
  55.      */
  56.     public function getGraphiqueAnneeAction(Request $request) {
  57.         $db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
  58.         $sql "SELECT * FROM v_graphique_annee";
  59.         $pays json_encode($db->fetchAll($sql));
  60.         echo $pays; exit;
  61.     }
  62.     /**
  63.      * Récupère les 10 pays avec le plus de déterminations
  64.      *
  65.      * @Route("/get_graphique/pays", name="get_graphique_pays")
  66.      */
  67.     public function getGraphiquePaysAction(Request $request) {
  68.         $db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
  69.         $sql "SELECT * FROM v_graphique_pays";
  70.         $pays json_encode($db->fetchAll($sql));
  71.         echo $pays; exit;
  72.     }
  73.     /**
  74.      * @param Request $request
  75.      * @return \Symfony\Component\HttpFoundation\Response
  76.      * @Route("/see_dataverse", name="see_dataverse")
  77.      */
  78.     public function dataverseAction(Request $request)
  79.     {
  80.         $itemsDataverse ApiController::apiDataverseMoreAction($this->getParameter('dataverse_api'), $_GET['page'], 10);
  81.         return $this->render('default/seeDataverse.html.twig', array(
  82.             'itemsDataverse' => $itemsDataverse['items'],
  83.             'total_item' => $itemsDataverse['total_item'],
  84.             'total_page' => $itemsDataverse['total_page'],
  85.             'total_current_page' => $itemsDataverse['total_current_page'],
  86.             'current_page'=>$_GET['page']
  87.         ));
  88.     }
  89.     /**
  90.      * @param Request $request
  91.      * @return \Symfony\Component\HttpFoundation\Response
  92.      * @Route("/see_agritrop", name="see_agritrop")
  93.      */
  94.     public function agritropAction(Request $request)
  95.     {
  96.         $itemsAgritrop ApiController::apiAgritropAction($this->getParameter('agritrop_rss').urlencode($this->getParameter('agritrop_requete')));
  97.         return $this->render('/default/seeAgritrop.html.twig', array(
  98.             'itemsAgritrop' => $itemsAgritrop['channel']['item'],
  99.             'total_item' => count($itemsAgritrop['channel']['item'])
  100.         ));
  101.     }
  102.     /**
  103.      * @Route("/see_blog/{id}", name="see_blog_public")
  104.      */
  105.     public function indexBlogAction(Request $request$id)
  106.     {
  107.         $session = New Session();
  108.         $sql "SELECT id, blogtitre as blogTitre, blogdescription, blogfilename, encode(CAST(blogtext AS bytea), 'base64') AS blogtext, blogpublie from blog
  109.                 WHERE id =$id";
  110.         $db=$this->getDoctrine()->getManager()->getConnection();
  111.         $blog=$db->fetchAll($sql);
  112.         if (!$blog[0]["blogpublie"]) {
  113.             return $this->redirect("/");
  114.         }
  115.         $blog[0]["blogtext"] = html_entity_decode(base64_decode($blog[0]["blogtext"]));
  116.         return $this->render('default/seeBlog.html.twig', array(
  117.             'blog' => $blog[0]
  118.         ));
  119.     }
  120.     /**
  121.      * @Route("/index/home/article", name="index_blog_home")
  122.      */
  123.     public function indexHomeBlogAction(Request $request)
  124.     {
  125.         $id $_GET["id"];
  126.         $db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
  127.         $blog=$db->fetchAll();
  128.         $blog[0]["blogtext"] = html_entity_decode(base64_decode($blog[0]["blogtext"]));
  129.         echo json_encode($blog[0]);exit;
  130.     }
  131.     /**
  132.      * Logs in a non-Cirad User
  133.      *
  134.      * @Route("/login", name="login")
  135.      */
  136.     public function loginAction(Request $request)
  137.     {
  138.         $session = new Session();
  139.         $message "";
  140.         $em $this->getDoctrine()->getManager();
  141.         if (isset($_COOKIE["isRealAdminFairdoc"]) && isset($_COOKIE["userIdFairdoc"]) && isset($_COOKIE["userHashFairdoc"])) {
  142.             $user $em->getRepository('VcaBundle:Users')->findOneBy(array('userHash' => $_COOKIE["userHashFairdoc"], 'id' => $_COOKIE["userIdFairdoc"]));
  143.             
  144.             if ($user !== NULL) {
  145.                 $session->set('userNom'$_COOKIE["userNom"]);
  146.                 $session->set('userPrenom'$_COOKIE["userPrenom"]);
  147.                 $session->set('userIdFairdoc'$_COOKIE["userIdFairdoc"]);
  148.                 $session->set('isRealAdminFairdoc'$_COOKIE["isRealAdminFairdoc"]);
  149.                 $session->set('userHashFairdoc'$_COOKIE["userHashFairdoc"]);
  150.                 return $this->redirect($this->getParameter('baseDir').'admin/monedp');
  151.             } else {
  152.                 return $this->render('index/login.html.twig', array(
  153.                 'message' => 'Erreur de Connexion'));
  154.             }
  155.         }
  156.         
  157.         if (isset($_COOKIE["userNom"]) && isset($_COOKIE["userIdFairdoc"]) && isset($_COOKIE["userPrenom"]) && isset($_COOKIE["userHashFairdoc"])) {
  158.             $user $em->getRepository('VcaBundle:Users')->findOneBy(array('userHash' => $_COOKIE["userHashFairdoc"], 'id' => $_COOKIE["userIdFairdoc"]));
  159.             
  160.             if ($user !== NULL) {
  161.                 $session->set('userNom'$_COOKIE["userNom"]);
  162.                 $session->set('userPrenom'$_COOKIE["userPrenom"]);
  163.                 $session->set('userIdFairdoc'$_COOKIE["userIdFairdoc"]);
  164.                 $session->set('userHashFairdoc'$_COOKIE["userHashFairdoc"]);
  165.                 return $this->redirect($this->getParameter('baseDir').'admin/monedp');
  166.             } else {
  167.                 return $this->render('index/login.html.twig', array(
  168.                 'message' => 'Erreur de Connexion'));
  169.             }
  170.         }
  171.         if ($request->isMethod('POST')) {
  172.             $em $this->getDoctrine()->getManager();
  173.             $user $em->getRepository('VcaBundle:Users')->findOneBy(array('userLogin' => $_POST["login"], 'userPassword' => $_POST["password"]));
  174.                 if ($user !== NULL) {
  175.                     if ($user->getUserLdap() == false) {
  176.                         $session->set('userNom'$user->getUserNom());
  177.                         $session->set('userPrenom'$user->getUserPrenom());
  178.                         $session->set('userIdFairdoc'$user->getUserId());
  179.                         $session->set('isRealAdminFairdoc'$user->getUserAdmin());
  180.                         $session->set('userHashFairdoc'$user->getUserHash());
  181.                         $session->set('ldapConnect'false);
  182.                         $_SESSION["userIdFairdoc"] = $user->getUserId();
  183.                         $_SESSION["isRealAdminFairdoc"] = $user->getUserAdmin();
  184.                         if (!empty($_POST['remember'])) {
  185.                             setcookie ("userIdFairdoc",$user->getUserId(),time()+ (30 24 60 60));
  186.                             setcookie ("isRealAdminFairdoc",$user->getUserAdmin(),time()+ (30 24 60 60));
  187.                             setcookie ("userNom",$user->getUserNom(),time()+ (30 24 60 60));
  188.                             setcookie ("userPrenom",$user->getUserPrenom(),time()+ (30 24 60 60));
  189.                             setcookie ("userHashFairdoc",$user->getUserHash(),time()+ (30 24 60 60));
  190.                         } else {
  191.                             if(isset($_COOKIE["userIdFairdoc"])) {
  192.                                 setcookie ("userIdFairdoc","");
  193.                             }
  194.                             if(isset($_COOKIE["isRealAdminFairdoc"])) {
  195.                                 setcookie ("isRealAdminFairdoc","");
  196.                             }
  197.                         }
  198.                     return $this->redirect($this->getParameter('baseDir').'admin/monedp');
  199.                     } else {
  200.                     $message 'Cliquez sur "Connexion Compte Cirad" pour vous connecter à un compte Cirad';
  201.                 }
  202.             } else {
  203.                  $message 'Login or Password Wrong';
  204.             }
  205.         }
  206.         // replace this example code with whatever you need
  207.         return $this->render('admin/login.html.twig', array(
  208.             'message' => $message,
  209.             'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
  210.         ));
  211.     }
  212.     
  213.     /**
  214.      * Logs in a non-Cirad User
  215.      *
  216.      * @Route("/mdp", name="mdp")
  217.      */
  218.     public function mdpAction(Request $request)
  219.     {
  220.         $session = new Session();
  221.         $message "";
  222.        
  223.         if ($request->isMethod('POST')) {
  224.             if ($_POST["mail"] != "") {
  225.                 $em $this->getDoctrine()->getManager();
  226.                 $user $em->getRepository('VcaBundle:Users')->findOneBy(array('userEmail' => $_POST["mail"]));
  227.                     if ($user !== NULL) {
  228.                     $to      $user->getUserEmail();
  229.                     $subject 'Contact Fairdoc';
  230.                     $message 'Bonjour,
  231.     Votre mot de passe est : '.$user->getUserPassword().
  232.     Cordialement';
  233.                     $headers 'From: [email protected]"\r\n" .
  234.                     'Reply-To: [email protected]"\r\n" .
  235.                     'X-Mailer: PHP/' phpversion();
  236.                     mail($to$subject$message$headers);
  237.                     return $this->redirect($this->getParameter('baseDir').'login');
  238.                 } else {
  239.                      return $this->redirect($this->getParameter('baseDir').'login');
  240.                 }
  241.             }
  242.         }
  243.         // replace this example code with whatever you need
  244.         return $this->render('admin/mdp.html.twig', array(
  245.             'message' => $message,
  246.             'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
  247.         ));
  248.     }
  249.     
  250.     /**
  251.      * Logs in a non-Cirad User
  252.      *
  253.      * @Route("/read/{id}", name="read")
  254.      */
  255.     public function readAction(Request $request$id)
  256.     {
  257.         $session = new Session();
  258.         $message "";
  259.         
  260.         //if ($request->isMethod('POST')) {
  261.             $em $this->getDoctrine()->getManager();
  262.             $user $em->getRepository('VcaBundle:Users')->findOneBy(array('userLogin' => $id));
  263.                 if ($user !== NULL) {
  264.                     if ($user->getUserLecteur()) {
  265.                         $session->set('userNom'$user->getUserNom());
  266.                         $session->set('userPrenom'$user->getUserPrenom());
  267.                         $session->set('userIdFairdoc'$user->getUserId());
  268.                         $session->set('isRealAdminFairdoc'$user->getUserAdmin());
  269.                         $session->set('ldapConnect'false);
  270.                         $_SESSION["userIdFairdoc"] = $user->getUserId();
  271.                         $_SESSION["isRealAdminFairdoc"] = $user->getUserAdmin();
  272.                         
  273.                     return $this->redirect($this->getParameter('baseDir').'admin/monedp');
  274.                     } else {
  275.                         $message 'Erreur';
  276.                 }
  277.             } else {
  278.                 $newID substr($id0,-6);
  279.                 //echo $newID;exit;
  280.                 $newstring substr($id, -6);
  281.                 $user $em->getRepository('VcaBundle:Users')->findOneBy(array('userLogin' => $newID));
  282.                 if ($user !== NULL) {
  283.                     if ($user->getUserLecteur()) {
  284.                         return $this->redirect($this->getParameter('baseDir').'admin/downloadDoc/'.(int) $newstring.'');
  285.                     }
  286.                 } else {
  287.                     $message 'Login or Password Wrong';
  288.                 }
  289.             }
  290.         //}
  291.         // replace this example code with whatever you need
  292.         return $this->render('admin/login.html.twig', array(
  293.             'message' => $message,
  294.             'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
  295.         ));
  296.     }
  297.     /**
  298.      * Logs in a Cirad User
  299.      *
  300.      * @Route("/loginCirad", name="loginCirad")
  301.      */
  302.     public function loginCiradAction(Request $request)
  303.     {
  304.         //Récupération des attributs fournis par le cas
  305.         $attributes $this->get('security.token_storage')->getToken()->getAttributes();
  306.         $attributes $attributes['sso:validation'];
  307.         //Mise à jour du nom et du prénom du Users dans la base
  308.         $em $this->getDoctrine()->getManager();
  309.         $user $em->getRepository('VcaBundle:Users')->findOneBy(array('userEmail'=>$attributes['cas:email']));
  310.         $user->setUserNom($attributes['cas:last_name']);
  311.         $user->setUserPrenom($attributes['cas:first_name']);
  312.         $user->setUserEmail($attributes['cas:email']);
  313.         $em->flush();
  314.         //Initialisation de la session
  315.         $session = new Session();
  316.         $session->set('userNom'$attributes['cas:last_name']);
  317.         $session->set('userPrenom'$attributes['cas:first_name']);
  318.         $session->set('userIdFairdoc'$user->getUserId());
  319.         $session->set('isRealAdminFairdoc'$user->getUserAdmin());
  320.         $session->set('ldapConnect'true);
  321.         $_SESSION["userIdFairdoc"] = $user->getUserId();
  322.         $_SESSION["isRealAdminFairdoc"] = $user->getUserAdmin();
  323.         return $this->redirect($this->getParameter('baseDir').'admin/datamart/see');
  324.     }
  325.     /**
  326.      * @Route("/logout", name="logout")
  327.      */
  328.     public function logoutAction(Request $request)
  329.     {
  330.         $session = new Session();
  331.         $ldap $session->get('ldapConnect');
  332.         session_unset();
  333.         session_destroy();
  334.         unset($_COOKIE['userIdFairdoc']);
  335.         unset($_COOKIE['isRealAdminFairdoc']);
  336.         unset($_COOKIE['userPrenom']);
  337.         unset($_COOKIE['userNom']);
  338.         setcookie('userIdFairdoc'null, -1);
  339.         setcookie('isRealAdminFairdoc'null, -1);
  340.         setcookie('userPrenom'null, -1);
  341.         setcookie('userNom'null, -1);
  342.         if ($ldap == true){
  343.             return $this->redirect($this->getParameter('cas_logout_url'));
  344.         }
  345.         return $this->redirect($this->getParameter('baseDir').'');
  346.     }
  347. }