diff --git a/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php b/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php
index 664fc84e..c351f5d5 100644
--- a/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php
+++ b/src/ninegate-1.0/src/Cadoles/CASBundle/Controller/SecurityController.php
@@ -156,6 +156,12 @@ class SecurityController extends Controller
$dispatcher = new EventDispatcher();
$dispatcher->dispatch("security.interactive_login", $event);
+ // On enregistre sa visite
+ $user->setVisitedate(new \DateTime());
+ $user->setVisitecpt($user->getVisitecpt()+1);
+ $em->persist($user);
+ $em->flush();
+
if($redirect)
return $this->redirect($redirect);
else
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/ConfigController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/ConfigController.php
index 6326ccf9..c4c5cf2e 100755
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/ConfigController.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/ConfigController.php
@@ -203,66 +203,94 @@ class ConfigController extends Controller
$session=$this->get('session');
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$fields=$config->getValue();
+ $fields=json_decode($fields,true);
+ if(!is_array($fields)) $fields=[];
- if($fields=="") {
- // Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
+ // Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
+ if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prénom";
+ }
+ if(!array_key_exists("visible",$fields)) {
$fields["visible"]["perm"]=2;
$fields["visible"]["label"]="Visible";
+ }
+ if(!array_key_exists("authlevel",$fields)) {
$fields["authlevel"]["perm"]=2;
$fields["authlevel"]["label"]="Niveau d'authentification";
+ }
+ if(!array_key_exists("belongingpopulation",$fields)) {
$fields["belongingpopulation"]["perm"]=2;
$fields["belongingpopulation"]["label"]="Population d'appartenance";
+ }
+ if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
+ }
+ if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
+ }
+ if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
- $fields["niveau02"]["label"]="Niveau 02";
+ $fields["niveau02"]["label"]=$session->get('labelniveau02');
+ }
+ if(!array_key_exists("usualname",$fields)) {
$fields["usualname"]["perm"]=1;
$fields["usualname"]["label"]="Nom d'Usage";
+ }
+ if(!array_key_exists("gender",$fields)) {
$fields["gender"]["perm"]=1;
$fields["gender"]["label"]="Sexe";
+ }
+ if(!array_key_exists("givensname",$fields)) {
$fields["givensname"]["perm"]=1;
$fields["givensname"]["label"]="Autre Prénom";
+ }
+ if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
+ }
+ if(!array_key_exists("postaladress",$fields)) {
$fields["postaladress"]["perm"]=1;
$fields["postaladress"]["label"]="Adresse";
+ }
+ if(!array_key_exists("birthdate",$fields)) {
$fields["birthdate"]["perm"]=1;
$fields["birthdate"]["label"]="Date de Naissance";
+ }
+ if(!array_key_exists("birthcountry",$fields)) {
$fields["birthcountry"]["perm"]=1;
$fields["birthcountry"]["label"]="Pays de Naissance";
+ }
+ if(!array_key_exists("birthplace",$fields)) {
$fields["birthplace"]["perm"]=1;
$fields["birthplace"]["label"]="Ville de Naissance";
- }
- else {
- $fields=json_decode($fields, true);
- }
+ }
+
+ if(!array_key_exists("visite",$fields)) {
+ $fields["visite"]["perm"]=1;
+ $fields["visite"]["label"]="Visite";
+ }
- if($session->get('viewniveau02')&&!array_key_exists("niveau02",$fields))
- $fields["niveau02"]["perm"]=1;
- elseif(!$session->get('viewniveau02'))
+ if(!$session->get('viewniveau02'))
unset($fields["niveau02"]);
- if(array_key_exists("niveau02",$fields))
- $fields["niveau02"]["label"]=$session->get('labelniveau02');
-
+
$form = $this->createForm(DatauserType::class,$config,array("mode"=>"datauser","fields" => $fields));
@@ -311,59 +339,66 @@ class ConfigController extends Controller
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$fields=$config->getValue();
- if($fields=="") {
- // Valeur par défaut 0=caché / 3=visible
+ $fields=json_decode($fields, true);
+ if(!is_array($fields)) $fields=[];
+
+ // Valeur par défaut 0=caché / 3=visible
+ if(!array_key_exists("avatar",$fields)) {
$fields["avatar"]["perm"]=1;
$fields["avatar"]["label"]="Avatar";
-
+ }
+ if(!array_key_exists("login",$fields)) {
$fields["login"]["perm"]=1;
$fields["login"]["label"]="Login";
-
+ }
+ if(!array_key_exists("lastname",$fields)) {
$fields["lastname"]["perm"]=1;
$fields["lastname"]["label"]="Nom";
-
+ }
+ if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prenom";
-
+ }
+ if(!array_key_exists("email",$fields)) {
$fields["email"]["perm"]=1;
$fields["email"]["label"]="Email";
-
+ }
+ if(!array_key_exists("niveau01",$fields)) {
$fields["niveau01"]["perm"]=1;
- $fields["niveau01"]["label"]="Niveau 01";
-
+ $fields["niveau01"]["label"]=$session->get('labelniveau01');
+ }
+ if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
- $fields["niveau02"]["label"]="Niveau 02";
-
+ $fields["niveau02"]["label"]=$session->get('labelniveau02');
+ }
+ if(!array_key_exists("group",$fields)) {
$fields["group"]["perm"]=1;
$fields["group"]["label"]="Groupes";
-
+ }
+ if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
-
+ }
+ if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
-
+ }
+ if(!array_key_exists("role",$fields)) {
$fields["role"]["perm"]=1;
$fields["role"]["label"]="Rôles";
-
+ }
+ if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
}
- else {
- $fields=json_decode($fields, true);
+ if(!array_key_exists("visitedate",$fields)) {
+ $fields["visitedate"]["perm"]=1;
+ $fields["visitedate"]["label"]="Visite";
}
- $fields["niveau01"]["label"]=$session->get('labelniveau01');
- if($session->get('viewniveau02')&&!array_key_exists("niveau02",$fields))
- $fields["niveau02"]["perm"]=1;
- elseif(!$session->get('viewniveau02'))
+ if(!$session->get('viewniveau02'))
unset($fields["niveau02"]);
- if(array_key_exists("niveau02",$fields))
- $fields["niveau02"]["label"]=$session->get('labelniveau02');
-
-
-
$form = $this->createForm(DatauserType::class,$config,array("mode"=>"datausers","fields" => $fields));
// Récupération des data du formulaire
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/CoreController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/CoreController.php
index 87190a93..73e03010 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/CoreController.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/CoreController.php
@@ -102,7 +102,6 @@ class CoreController extends Controller
}
}
}
-
if($toprofil) {
return $this->redirect($this->generateUrl('cadoles_core_user',array("info"=>"Merci de compléter votre profil")));
}
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php
index 0203c579..5f14647d 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php
@@ -225,6 +225,10 @@ class UserController extends Controller
break;
case 12 :
+ $qb->orderBy('user.visitedate',$order[0]["dir"]);
+ break;
+
+ case 13 :
$qb->orderBy('user.role',$order[0]["dir"]);
break;
}
@@ -264,6 +268,10 @@ class UserController extends Controller
break;
case 10 :
+ $qb->orderBy('user.visitedate',$order[0]["dir"]);
+ break;
+
+ case 11 :
$qb->orderBy('user.role',$order[0]["dir"]);
break;
}
@@ -300,6 +308,7 @@ class UserController extends Controller
array_push($tmp,$groups);
array_push($tmp,$data->getJob());
array_push($tmp,$data->getPosition());
+ array_push($tmp,($data->getVisitedate()?$data->getVisitedate()->format("d/m/Y H:i")."
nb = ".$data->getVisitecpt():""));
array_push($tmp,$data->getRole());
array_push($output["data"],$tmp);
@@ -1147,55 +1156,88 @@ class UserController extends Controller
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$fields=$config->getValue();
$fields=json_decode($fields,true);
+ if(!is_array($fields)) $fields=[];
- if($fields=="") {
- // Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
+ // Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
+ if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prénom";
+ }
+ if(!array_key_exists("visible",$fields)) {
$fields["visible"]["perm"]=2;
$fields["visible"]["label"]="Visible";
+ }
+ if(!array_key_exists("authlevel",$fields)) {
$fields["authlevel"]["perm"]=2;
$fields["authlevel"]["label"]="Niveau d'authentification";
+ }
+ if(!array_key_exists("belongingpopulation",$fields)) {
$fields["belongingpopulation"]["perm"]=2;
$fields["belongingpopulation"]["label"]="Population d'appartenance";
+ }
+ if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
+ }
+ if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
+ }
+ if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]="Niveau 02";
+ }
+ if(!array_key_exists("usualname",$fields)) {
$fields["usualname"]["perm"]=1;
$fields["usualname"]["label"]="Nom d'Usage";
+ }
+ if(!array_key_exists("gender",$fields)) {
$fields["gender"]["perm"]=1;
$fields["gender"]["label"]="Sexe";
+ }
+ if(!array_key_exists("givensname",$fields)) {
$fields["givensname"]["perm"]=1;
$fields["givensname"]["label"]="Autre Prénom";
+ }
+ if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
+ }
+ if(!array_key_exists("postaladress",$fields)) {
$fields["postaladress"]["perm"]=1;
$fields["postaladress"]["label"]="Adresse";
+ }
+ if(!array_key_exists("birthdate",$fields)) {
$fields["birthdate"]["perm"]=1;
$fields["birthdate"]["label"]="Date de Naissance";
+ }
+ if(!array_key_exists("birthcountry",$fields)) {
$fields["birthcountry"]["perm"]=1;
$fields["birthcountry"]["label"]="Pays de Naissance";
+ }
+ if(!array_key_exists("birthplace",$fields)) {
$fields["birthplace"]["perm"]=1;
$fields["birthplace"]["label"]="Ville de Naissance";
}
+ if(!array_key_exists("visite",$fields)) {
+ $fields["visite"]["perm"]=1;
+ $fields["visite"]["label"]="Visite";
+ }
return $fields;
}
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/User.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/User.php
index aca42c5b..ff193744 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/User.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Entity/User.php
@@ -163,6 +163,16 @@ class User implements UserInterface, \Serializable
*/
private $viewcalendar;
+ /**
+ * @ORM\Column(type="datetime", nullable=true)
+ */
+ private $visitedate;
+
+ /**
+ * @ORM\Column(type="integer", nullable=true)
+ */
+ private $visitecpt;
+
/**
* @ORM\ManyToOne(targetEntity="Country", inversedBy="users")
* @ORM\JoinColumn(nullable=true)
@@ -1796,4 +1806,52 @@ class User implements UserInterface, \Serializable
{
return $this->projectcomments;
}
+
+ /**
+ * Set visitedate
+ *
+ * @param \DateTime $visitedate
+ *
+ * @return User
+ */
+ 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 User
+ */
+ 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 ab260019..2447830a 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php
@@ -282,6 +282,19 @@
$session->set("sublogo", $niveau01->getLogo());
}
+
}
+
+ if($curentuser!="anon.") {
+ $visitedate=$curentuser->getVisitedate();
+ $visitedate->add(new \DateInterval("PT1H"));
+ $now=new \DateTime();
+ if($visitedate<$now) {
+ $curentuser->setVisitedate($now);
+ $curentuser->setVisitecpt($curentuser->getVisitecpt()+1);
+ $this->em->persist($curentuser);
+ $this->em->flush();
+ }
+ }
}
}
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php
index 986726af..6820d2c5 100644
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php
@@ -16,6 +16,8 @@ use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
+use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
+use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
@@ -360,6 +362,22 @@ class UserType extends AbstractType
}
}
+ if(!array_key_exists("visite",$fields)) $fields["visite"]["perm"]==2;
+ if($fields["visite"]["perm"]!=0) {
+ $builder->add('visitedate', DateTimeType::class, [
+ "label" => 'Date de dernière visite',
+ "disabled" => true,
+ "required" => ($fields["visite"]["perm"]==2),
+ "widget" => 'single_text',
+ ]);
+
+ $builder->add('visitecpt', IntegerType::class, [
+ "label" => 'Nombre de visites',
+ "required" => ($fields["visite"]["perm"]==2),
+ "disabled" => true,
+ ]);
+ }
+
# Avatar
$builder->add('avatar',HiddenType::class, array("empty_data" => "noavatar.png"));
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig
index 16be8812..8eeb71e6 100755
--- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig
+++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig
@@ -261,6 +261,20 @@
+
+ {% if form.visitedate is defined %}
+