From e85f74cda54bf9e9195b4a119d657e3c9ae65667 Mon Sep 17 00:00:00 2001 From: afornerot Date: Tue, 9 Jun 2020 11:24:07 +0200 Subject: [PATCH] compteur de visite group (ref #151) --- .../CoreBundle/Controller/GroupController.php | 32 +++++++--- .../Cadoles/CoreBundle/Entity/UserGroup.php | 60 ++++++++++++++++++- .../EventListener/sessionListener.php | 2 +- .../Resources/views/Group/users.html.twig | 4 +- .../Controller/PageController.php | 18 ++++++ 5 files changed, 104 insertions(+), 12 deletions(-) diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php index de1d446f..aa69ebe8 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php @@ -349,7 +349,7 @@ class GroupController extends Controller // Avatar $avatar="getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;cursor:pointer;'>"; - array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager)); + array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),"",$fgmanager)); } // Retour @@ -459,11 +459,11 @@ class GroupController extends Controller $qb->setParameter("groupid",$id); switch($order[0]["column"]) { case 2 : - $qb->orderBy('user.username',$order[0]["dir"]); + $qb->orderBy('user.username',$order[0]["dir"]); break; case 3 : - $qb->orderBy('user.email',$order[0]["dir"]); + $qb->orderBy('user.email',$order[0]["dir"]); break; } @@ -491,9 +491,14 @@ class GroupController extends Controller if($fgproprio) $fgmanager="Propriétaire du groupe"; } - + + // Visite + $visite=""; + if($usergroup->getVisitedate()) { + $visite=$usergroup->getVisitedate()->format("d/m/Y H:i")."
nb = ".$usergroup->getVisitecpt(); + } - array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager)); + array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$visite,$fgmanager)); } // Retour @@ -974,8 +979,8 @@ class GroupController extends Controller public function usergroupexportAction($id,Request $request, $access="config") { // Récupération de l'enregistrement courant - $data=$this->getData($id); - $this->canManager($data,$access); + $group=$this->getData($id); + $this->canManager($group,$access); $em = $this->getDoctrine()->getManager(); $dir = $this->get('kernel')->getRootDir() . '/../uploads/export/'; @@ -989,7 +994,7 @@ class GroupController extends Controller $e = '"'; // this is the default but i like to be explicit // Entête de colonne - $data=["id","Login","Nom","Prénom","Email","Téléphone",$this->getParameter("labelniveau01"),$this->getParameter("labelniveau02"),"Métier","Fonction","Nom Usage","Autres Prénom","Sexe","Adresse","Date Naissance","Pays Naissance","Ville Naissance"]; + $data=["id","Login","Nom","Prénom","Email","Téléphone",$this->getParameter("labelniveau01"),$this->getParameter("labelniveau02"),"Métier","Fonction","Nom Usage","Autres Prénom","Sexe","Adresse","Date Naissance","Pays Naissance","Ville Naissance","Date Visite","Nb Visites"]; fputcsv($csvh, $data, $d, $e); // Liste des utilisateurs en fonction du role de l'utilisateur en cours @@ -1040,9 +1045,18 @@ class GroupController extends Controller "birthdate"=>($user->getBirthdate()?$user->getBirthdate()->format("d/m/Y"):""), "birthcountry"=>($user->getBirthcountry()?$user->getBirthcountry()->getLabel():""), "birthplace"=>($user->getBirthplace()?$user->getBirthplace()->getLabel():""), - + "visitedate"=>"", + "visitecpt"=>"", ]; + $usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]); + if($usergroup) { + if($usergroup->getVisitedate()) { + $data["visitedate"]=$usergroup->getVisitedate()->format("d/m/Y H:i"); + $data["visitecpt"]=$usergroup->getVisitecpt(); + } + } + fputcsv($csvh, $data, $d, $e); } fclose($csvh); diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/UserGroup.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/UserGroup.php index c23bcc05..27937767 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/UserGroup.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/UserGroup.php @@ -44,7 +44,17 @@ class UserGroup * @ORM\Column(type="string", length=60, nullable=true) */ private $keyvalue; - + + /** + * @ORM\Column(type="datetime", nullable=true) + */ + private $visitedate; + + /** + * @ORM\Column(type="integer", nullable=true) + */ + private $visitecpt; + /** * Get id * @@ -150,4 +160,52 @@ class UserGroup { return $this->keyvalue; } + + /** + * Set visitedate + * + * @param \DateTime $visitedate + * + * @return UserGroup + */ + public function setVisitedate($visitedate) + { + $this->visitedate = $visitedate; + + return $this; + } + + /** + * Get visitedate + * + * @return \DateTime + */ + public function getVisitedate() + { + return $this->visitedate; + } + + /** + * Set visitecpt + * + * @param integer $visitecpt + * + * @return UserGroup + */ + public function setVisitecpt($visitecpt) + { + $this->visitecpt = $visitecpt; + + return $this; + } + + /** + * Get visitecpt + * + * @return integer + */ + public function getVisitecpt() + { + return $this->visitecpt; + } } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php index 2447830a..ea2ea5e1 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php @@ -287,7 +287,7 @@ if($curentuser!="anon.") { $visitedate=$curentuser->getVisitedate(); - $visitedate->add(new \DateInterval("PT1H")); + if($visitedate) $visitedate->add(new \DateInterval("PT1H")); $now=new \DateTime(); if($visitedate<$now) { $curentuser->setVisitedate($now); diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig index 6b2b4789..91710c09 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig @@ -29,7 +29,8 @@ Action Avatar Login - Email + Email + Visite {% if group.fgcanshare %} Manager {% endif %} @@ -56,6 +57,7 @@ Avatar Login Email + Visite {% if group.fgcanshare %} Manager {% endif %} diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PageController.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PageController.php index 21933970..f59166b9 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PageController.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PageController.php @@ -515,6 +515,24 @@ class PageController extends Controller } */ + // Compteur de visite + if($this->getUser()) { + $group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid); + if($group && $group->getFgcanshare()) { + $usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findoneby(["group"=>$group,"user"=>$this->getUser()]); + if($usergroup) { + $visitedate=$usergroup->getVisitedate(); + if($visitedate) $visitedate->add(new \DateInterval("PT1H")); + $now=new \DateTime(); + if($visitedate<$now) { + $usergroup->setVisitedate($now); + $usergroup->setVisitecpt($usergroup->getVisitecpt()+1); + $em->persist($usergroup); + $em->flush(); + } + } + } + } // Type Calendrier if($entity->getPageCategory()->getId()==-100) {