ninegate/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/CoreController.php

156 lines
7.2 KiB
PHP

<?php
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Response;
use Cadoles\PortalBundle\Entity\Page;
class CoreController extends Controller
{
public function homeAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$user=$this->getUser();
$portal_activate=$this->getParameter("portal_activate");
if(!$portal_activate) {
$item_activate=$this->getParameter("item_activate");
$bookmarks=null;
$items=null;
$itemcategorys=null;
if($item_activate) {
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,$this->get('session')->get('ssoitems'));
return $this->render('CadolesPortalBundle:Page:noportal.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'item_activate' => $item_activate,
'bookmarks' => $bookmarks,
'items' => $items,
'itemcategorys' => $itemcategorys
]);
}
else {
return $this->render('CadolesCoreBundle:Core:home.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
]);
}
}
else {
// Récupération de la page encours
$id = $request->query->get('id');
// Récupération redirection potentielle
$gotoroute = $request->query->get('gotoroute');
$gotoid = $request->query->get('gotoid');
// L'utilisateur en cours
// Chargement des chartes à signer
if($user) {
$notices=$em->getRepository("CadolesPortalBundle:Notice")->getNoticeToRead($user);
if(! $notices->isEmpty()) {
$notices=$em->getRepository("CadolesPortalBundle:Notice")->getNoticeUser($user,false);
return $this->render('CadolesPortalBundle:Notice:mustread.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'maxwidth' => true,
'mustread' => true,
'notices' => $notices
]);
}
// On s'assure que l'ensemble des champs user obligatoire sont bien renseignés sinon bascule sur le profil
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$fields=$config->getValue();
$fields=json_decode($fields,true);
$toprofil=false;
if($fields!="") {
foreach($fields as $key => $field) {
// Si champs obligatoire
if($field["perm"]==2) {
switch($key) {
case "firstname": if($user->getFirstname()=="") $toprofil=true; break;
case "visible": if($user->getVisible()=="") $toprofil=true; break;
case "authlevel": if($user->getAuthlevel()=="") $toprofil=true; break;
case "belongingpopulation": if($user->getBelongingpopulation()=="") $toprofil=true; break;
case "job": if($user->getJob()=="") $toprofil=true; break;
case "position": if($user->getPosition()=="") $toprofil=true; break;
case "niveau02": if($user->geNiveau02()=="") $toprofil=true; break;
case "usualname": if($user->getUsualname()=="") $toprofil=true; break;
case "gender": if($user->getGender()=="") $toprofil=true; break;
case "givensname": if($user->getGivensname()=="") $toprofil=true; break;
case "telephonenumber": if($user->getTelephonenumber()=="") $toprofil=true; break;
case "postaladress": if($user->getPostaladress()=="") $toprofil=true; break;
case "birthdate": if($user->getBirthdate()=="") $toprofil=true; break;
case "birthcountry": if($user->getBirthcountry()=="") $toprofil=true; break;
case "birthplace": if($user->getBirthplace()=="") $toprofil=true; break;
}
}
}
}
// Si niveau01 commence par autre = alors niveau01other obligatoire
$message="";
$niveau01=strtolower($user->getNiveau01()->getLabel());
if(stripos($niveau01,"autre")===0) {
if(!$user->getNiveau01other()) {
$toprofil=true;
$message="<br>Merci d'indiquer votre ".$this->getParameter("labelniveau01");
}
}
if($toprofil) {
return $this->redirect($this->generateUrl('cadoles_core_user',array("info"=>"Merci de compléter votre profil".$message)));
}
}
// Calcul des pages de l'utilisateur
$this->getDoctrine()->getRepository("CadolesPortalBundle:Page")->getPagesUser($user,$id,$entity,$pagesuser,$pagesadmin,$groupsshared);
// si aucune page = page par défaut
if(!$entity) {
return $this->render('CadolesPortalBundle:Page:default.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false
]);
}
return $this->render('CadolesPortalBundle:Page:pages.html.twig', [
'useheader' => true,
'usemenu' => true,
'usesidebar' => false,
'entity' => $entity,
'access' => "user",
'pagesadmin' => $pagesadmin,
'pagesuser' => $pagesuser,
'groupsshared' => $groupsshared,
'canadd' => $this->get('session')->get('cancreatepage'),
'widgetsuser' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("user"),
'widgetsgroup' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("group"),
'gotoroute' => $gotoroute,
'gotoid' => $gotoid,
]);
}
}
}