<?php
namespace VcaBundle\Controller;
use BeSimple\SsoAuthBundle\Tests\Controller\TrustedSsoController;
use Proxies\__CG__\VcaBundle\Entity\Users;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager;
use Symfony\Component\Validator\Tests\Fixtures\Entity;
use VcaBundle\VcaBundle;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use VcaBundle\Entity\DataverseArticle;
class IndexController extends AbstractController
{
public function preExecute()
{
@UsersController::securityAction();
}
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
$sql = "Select b.id, b.blogTitre, b.blogDescription, b.blogFilename
FROM blog b where blogpublie is true
ORDER BY b.id desc ";
$blogs=$db->fetchAll($sql);
$sql = "Select b.id, b.diapoTitre, b.diapoDescription, b.diapoFilename
FROM diaporama b
ORDER BY b.id desc ";
$diaporamas=$db->fetchAll($sql);
$sql = "SELECT * FROM v_graphique_annee";
$annee = $db->fetchAll($sql);
$itemsDataverse = ApiController::apidataverseAction($this->getParameter('dataverse_api'));
if ($itemsDataverse == null){
$em = $this->getDoctrine()->getManager();
$itemsDataverse = $em->getRepository('VcaBundle:DataverseArticle')->findAll();
}
$itemsAgritrop = ApiController::apiAgritropAction($this->getParameter('agritrop_rss').urlencode($this->getParameter('agritrop_requete')));
return $this->render('default/homepage.html.twig', array(
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
'blogs' => $blogs,
'diaporamas' => $diaporamas,
'itemsDataverse' => $itemsDataverse,
'itemsAgritrop' => $itemsAgritrop['channel']['item'],
'graphiqueAnnee' => $annee
));
}
/**
* Récupère le nombre d'analyses par an
*
* @Route("/get_graphique/annee", name="get_graphique_annee")
*/
public function getGraphiqueAnneeAction(Request $request) {
$db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
$sql = "SELECT * FROM v_graphique_annee";
$pays = json_encode($db->fetchAll($sql));
echo $pays; exit;
}
/**
* Récupère les 10 pays avec le plus de déterminations
*
* @Route("/get_graphique/pays", name="get_graphique_pays")
*/
public function getGraphiquePaysAction(Request $request) {
$db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
$sql = "SELECT * FROM v_graphique_pays";
$pays = json_encode($db->fetchAll($sql));
echo $pays; exit;
}
/**
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
* @Route("/see_dataverse", name="see_dataverse")
*/
public function dataverseAction(Request $request)
{
$itemsDataverse = ApiController::apiDataverseMoreAction($this->getParameter('dataverse_api'), $_GET['page'], 10);
return $this->render('default/seeDataverse.html.twig', array(
'itemsDataverse' => $itemsDataverse['items'],
'total_item' => $itemsDataverse['total_item'],
'total_page' => $itemsDataverse['total_page'],
'total_current_page' => $itemsDataverse['total_current_page'],
'current_page'=>$_GET['page']
));
}
/**
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
* @Route("/see_agritrop", name="see_agritrop")
*/
public function agritropAction(Request $request)
{
$itemsAgritrop = ApiController::apiAgritropAction($this->getParameter('agritrop_rss').urlencode($this->getParameter('agritrop_requete')));
return $this->render('/default/seeAgritrop.html.twig', array(
'itemsAgritrop' => $itemsAgritrop['channel']['item'],
'total_item' => count($itemsAgritrop['channel']['item'])
));
}
/**
* @Route("/see_blog/{id}", name="see_blog_public")
*/
public function indexBlogAction(Request $request, $id)
{
$session = New Session();
$sql = "SELECT id, blogtitre as blogTitre, blogdescription, blogfilename, encode(CAST(blogtext AS bytea), 'base64') AS blogtext, blogpublie from blog
WHERE id =$id";
$db=$this->getDoctrine()->getManager()->getConnection();
$blog=$db->fetchAll($sql);
if (!$blog[0]["blogpublie"]) {
return $this->redirect("/");
}
$blog[0]["blogtext"] = html_entity_decode(base64_decode($blog[0]["blogtext"]));
return $this->render('default/seeBlog.html.twig', array(
'blog' => $blog[0]
));
}
/**
* @Route("/index/home/article", name="index_blog_home")
*/
public function indexHomeBlogAction(Request $request)
{
$id = $_GET["id"];
$db=$this->getDoctrine()->getManager()->getConnection();//on récupére un objet Doctrine\DBAL\Connection
$blog=$db->fetchAll();
$blog[0]["blogtext"] = html_entity_decode(base64_decode($blog[0]["blogtext"]));
echo json_encode($blog[0]);exit;
}
/**
* Logs in a non-Cirad User
*
* @Route("/login", name="login")
*/
public function loginAction(Request $request)
{
$session = new Session();
$message = "";
$em = $this->getDoctrine()->getManager();
if (isset($_COOKIE["isRealAdminFairdoc"]) && isset($_COOKIE["userIdFairdoc"]) && isset($_COOKIE["userHashFairdoc"])) {
$user = $em->getRepository('VcaBundle:Users')->findOneBy(array('userHash' => $_COOKIE["userHashFairdoc"], 'id' => $_COOKIE["userIdFairdoc"]));
if ($user !== NULL) {
$session->set('userNom', $_COOKIE["userNom"]);
$session->set('userPrenom', $_COOKIE["userPrenom"]);
$session->set('userIdFairdoc', $_COOKIE["userIdFairdoc"]);
$session->set('isRealAdminFairdoc', $_COOKIE["isRealAdminFairdoc"]);
$session->set('userHashFairdoc', $_COOKIE["userHashFairdoc"]);
return $this->redirect($this->getParameter('baseDir').'admin/monedp');
} else {
return $this->render('index/login.html.twig', array(
'message' => 'Erreur de Connexion'));
}
}
if (isset($_COOKIE["userNom"]) && isset($_COOKIE["userIdFairdoc"]) && isset($_COOKIE["userPrenom"]) && isset($_COOKIE["userHashFairdoc"])) {
$user = $em->getRepository('VcaBundle:Users')->findOneBy(array('userHash' => $_COOKIE["userHashFairdoc"], 'id' => $_COOKIE["userIdFairdoc"]));
if ($user !== NULL) {
$session->set('userNom', $_COOKIE["userNom"]);
$session->set('userPrenom', $_COOKIE["userPrenom"]);
$session->set('userIdFairdoc', $_COOKIE["userIdFairdoc"]);
$session->set('userHashFairdoc', $_COOKIE["userHashFairdoc"]);
return $this->redirect($this->getParameter('baseDir').'admin/monedp');
} else {
return $this->render('index/login.html.twig', array(
'message' => 'Erreur de Connexion'));
}
}
if ($request->isMethod('POST')) {
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('VcaBundle:Users')->findOneBy(array('userLogin' => $_POST["login"], 'userPassword' => $_POST["password"]));
if ($user !== NULL) {
if ($user->getUserLdap() == false) {
$session->set('userNom', $user->getUserNom());
$session->set('userPrenom', $user->getUserPrenom());
$session->set('userIdFairdoc', $user->getUserId());
$session->set('isRealAdminFairdoc', $user->getUserAdmin());
$session->set('userHashFairdoc', $user->getUserHash());
$session->set('ldapConnect', false);
$_SESSION["userIdFairdoc"] = $user->getUserId();
$_SESSION["isRealAdminFairdoc"] = $user->getUserAdmin();
if (!empty($_POST['remember'])) {
setcookie ("userIdFairdoc",$user->getUserId(),time()+ (30 * 24 * 60 * 60));
setcookie ("isRealAdminFairdoc",$user->getUserAdmin(),time()+ (30 * 24 * 60 * 60));
setcookie ("userNom",$user->getUserNom(),time()+ (30 * 24 * 60 * 60));
setcookie ("userPrenom",$user->getUserPrenom(),time()+ (30 * 24 * 60 * 60));
setcookie ("userHashFairdoc",$user->getUserHash(),time()+ (30 * 24 * 60 * 60));
} else {
if(isset($_COOKIE["userIdFairdoc"])) {
setcookie ("userIdFairdoc","");
}
if(isset($_COOKIE["isRealAdminFairdoc"])) {
setcookie ("isRealAdminFairdoc","");
}
}
return $this->redirect($this->getParameter('baseDir').'admin/monedp');
} else {
$message = 'Cliquez sur "Connexion Compte Cirad" pour vous connecter à un compte Cirad';
}
} else {
$message = 'Login or Password Wrong';
}
}
// replace this example code with whatever you need
return $this->render('admin/login.html.twig', array(
'message' => $message,
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
));
}
/**
* Logs in a non-Cirad User
*
* @Route("/mdp", name="mdp")
*/
public function mdpAction(Request $request)
{
$session = new Session();
$message = "";
if ($request->isMethod('POST')) {
if ($_POST["mail"] != "") {
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('VcaBundle:Users')->findOneBy(array('userEmail' => $_POST["mail"]));
if ($user !== NULL) {
$to = $user->getUserEmail();
$subject = 'Contact Fairdoc';
$message = 'Bonjour,
Votre mot de passe est : '.$user->getUserPassword().'
Cordialement';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
return $this->redirect($this->getParameter('baseDir').'login');
} else {
return $this->redirect($this->getParameter('baseDir').'login');
}
}
}
// replace this example code with whatever you need
return $this->render('admin/mdp.html.twig', array(
'message' => $message,
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
));
}
/**
* Logs in a non-Cirad User
*
* @Route("/read/{id}", name="read")
*/
public function readAction(Request $request, $id)
{
$session = new Session();
$message = "";
//if ($request->isMethod('POST')) {
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('VcaBundle:Users')->findOneBy(array('userLogin' => $id));
if ($user !== NULL) {
if ($user->getUserLecteur()) {
$session->set('userNom', $user->getUserNom());
$session->set('userPrenom', $user->getUserPrenom());
$session->set('userIdFairdoc', $user->getUserId());
$session->set('isRealAdminFairdoc', $user->getUserAdmin());
$session->set('ldapConnect', false);
$_SESSION["userIdFairdoc"] = $user->getUserId();
$_SESSION["isRealAdminFairdoc"] = $user->getUserAdmin();
return $this->redirect($this->getParameter('baseDir').'admin/monedp');
} else {
$message = 'Erreur';
}
} else {
$newID = substr($id, 0,-6);
//echo $newID;exit;
$newstring = substr($id, -6);
$user = $em->getRepository('VcaBundle:Users')->findOneBy(array('userLogin' => $newID));
if ($user !== NULL) {
if ($user->getUserLecteur()) {
return $this->redirect($this->getParameter('baseDir').'admin/downloadDoc/'.(int) $newstring.'');
}
} else {
$message = 'Login or Password Wrong';
}
}
//}
// replace this example code with whatever you need
return $this->render('admin/login.html.twig', array(
'message' => $message,
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
));
}
/**
* Logs in a Cirad User
*
* @Route("/loginCirad", name="loginCirad")
*/
public function loginCiradAction(Request $request)
{
//Récupération des attributs fournis par le cas
$attributes = $this->get('security.token_storage')->getToken()->getAttributes();
$attributes = $attributes['sso:validation'];
//Mise à jour du nom et du prénom du Users dans la base
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('VcaBundle:Users')->findOneBy(array('userEmail'=>$attributes['cas:email']));
$user->setUserNom($attributes['cas:last_name']);
$user->setUserPrenom($attributes['cas:first_name']);
$user->setUserEmail($attributes['cas:email']);
$em->flush();
//Initialisation de la session
$session = new Session();
$session->set('userNom', $attributes['cas:last_name']);
$session->set('userPrenom', $attributes['cas:first_name']);
$session->set('userIdFairdoc', $user->getUserId());
$session->set('isRealAdminFairdoc', $user->getUserAdmin());
$session->set('ldapConnect', true);
$_SESSION["userIdFairdoc"] = $user->getUserId();
$_SESSION["isRealAdminFairdoc"] = $user->getUserAdmin();
return $this->redirect($this->getParameter('baseDir').'admin/datamart/see');
}
/**
* @Route("/logout", name="logout")
*/
public function logoutAction(Request $request)
{
$session = new Session();
$ldap = $session->get('ldapConnect');
session_unset();
session_destroy();
unset($_COOKIE['userIdFairdoc']);
unset($_COOKIE['isRealAdminFairdoc']);
unset($_COOKIE['userPrenom']);
unset($_COOKIE['userNom']);
setcookie('userIdFairdoc', null, -1);
setcookie('isRealAdminFairdoc', null, -1);
setcookie('userPrenom', null, -1);
setcookie('userNom', null, -1);
if ($ldap == true){
return $this->redirect($this->getParameter('cas_logout_url'));
}
return $this->redirect($this->getParameter('baseDir').'');
}
}