Commit e8c52514 authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

L'utilisateur OSE était mentionné partout comme modificateur au lieu de...

L'utilisateur OSE était mentionné partout comme modificateur au lieu de l'utilisateur courant. C'est rétabli.
parent 5169b8d8
......@@ -10,6 +10,7 @@ author: Laurent Lécluse - DSI - Unicaen
* On peut maintenant s'abonner à un indicateur même avec un rôle de périmètre établissement réduit à une composante.
* Les services réalisés peuvent maintenant être initialisés à partir de volumers horaires auto-validés en plus e ceux qui ont été validés manuellement.
* Le référentiel peut être saisi même pour un intervenant d'une autre composante si l'enseignement est dans la composante du gestionnaire
* L'utilisateur OSE était mentionné partout comme modificateur au lieu de l'utilisateur courant. C'est rétabli.
# OSE 8.2.2
......
......@@ -5,7 +5,7 @@ namespace BddAdmin;
use BddAdmin\Exception\BddCompileException;
use BddAdmin\Exception\BddException;
use BddAdmin\Exception\BddIndexExistsException;
use mysql_xdevapi\Exception;
use \Exception;
class Bdd
{
......
......@@ -42,7 +42,7 @@ $config = [
'orm_default' => [
'subscribers' => [
\Doctrine\DBAL\Event\Listeners\OracleSessionInit::class,
'UnicaenApp\HistoriqueListener',
ORM\Event\Listeners\HistoriqueListener::class,
],
],
],
......@@ -142,18 +142,19 @@ $config = [
],
'service_manager' => [
'invokables' => [
Service\AnneeService::class => Service\AnneeService::class,
Service\LocalContextService::class => Service\LocalContextService::class,
Service\ParametresService::class => Service\ParametresService::class,
Service\TypeInterventionService::class => Service\TypeInterventionService::class,
Service\SourceService::class => Service\SourceService::class,
Service\AffectationService::class => Service\AffectationService::class,
Service\RoleService::class => Service\RoleService::class,
Service\PaysService::class => Service\PaysService::class,
Service\DepartementService::class => Service\DepartementService::class,
Service\FichierService::class => Service\FichierService::class,
Service\TauxHoraireHETDService::class => Service\TauxHoraireHETDService::class,
Assertion\InformationAssertion::class => Assertion\InformationAssertion::class,
Service\AnneeService::class => Service\AnneeService::class,
Service\LocalContextService::class => Service\LocalContextService::class,
Service\ParametresService::class => Service\ParametresService::class,
Service\TypeInterventionService::class => Service\TypeInterventionService::class,
Service\SourceService::class => Service\SourceService::class,
Service\AffectationService::class => Service\AffectationService::class,
Service\RoleService::class => Service\RoleService::class,
Service\PaysService::class => Service\PaysService::class,
Service\DepartementService::class => Service\DepartementService::class,
Service\FichierService::class => Service\FichierService::class,
Service\TauxHoraireHETDService::class => Service\TauxHoraireHETDService::class,
Assertion\InformationAssertion::class => Assertion\InformationAssertion::class,
ORM\Event\Listeners\HistoriqueListener::class => ORM\Event\Listeners\HistoriqueListener::class,
],
'factories' => [
'navigation' => Service\NavigationFactoryFactory::class,
......@@ -182,7 +183,7 @@ $config = [
],
'controllers' => [
'invokables' => [
'Application\Controller\Index' => Controller\IndexController::class,
'Application\Controller\Index' => Controller\IndexController::class,
],
],
'controller_plugins' => [
......
<?php
namespace Application\ORM\Event\Listeners;
use Application\Service\Traits\ContextServiceAwareTrait;
use Application\Service\Traits\UtilisateurServiceAwareTrait;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Event\PreUpdateEventArgs;
use Doctrine\ORM\Events;
use RuntimeException;
use UnicaenApp\Entity\HistoriqueAwareInterface;
class HistoriqueListener implements EventSubscriber
{
use ContextServiceAwareTrait;
use UtilisateurServiceAwareTrait;
/**
* @param LifecycleEventArgs $args
*
* @throws RuntimeException Aucun utilisateur disponible pour en faire l'auteur de la création/modification
*/
protected function updateHistorique(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
// l'entité doit implémenter l'interface requise
if (!$entity instanceof HistoriqueAwareInterface) {
return;
}
$now = new \DateTime();
// on tente d'abord d'obtenir l'utilisateur connecté pour en faire l'auteur de la création/modification.
$user = $this->getServiceContext()->getUtilisateur();
// si aucun utilisateur connecté n'est disponible, on utilise l'éventuel auteur existant
if (null === $user) {
$user = $entity->getHistoCreateur();
}
// Si aucun utilisatur n'esty trouvé, alors on utilise OseAppli
if (null === $user) {
$user = $this->getServiceUtilisateur()->getOse();
}
// si nous ne disposons d'aucun utilisateur, basta!
if (null === $user) {
throw new RuntimeException("Aucun utilisateur disponible pour en faire l'auteur de la création/modification.");
}
if (null === $entity->getHistoCreation()) {
$entity->setHistoCreation($now);
}
if (null === $entity->getHistoCreateur()) {
$entity->setHistoCreateur($user);
}
$entity->setHistoModificateur($user);
$entity->setHistoModification($now);
if (null !== $entity->getHistoDestruction() && null === $entity->getHistoDestructeur()) {
$entity->setHistoDestructeur($user);
}
}
/**
* @param LifecycleEventArgs $args
*/
public function prePersist(LifecycleEventArgs $args)
{
$this->updateHistorique($args);
}
/**
* @param PreUpdateEventArgs $args
*/
public function preUpdate(PreUpdateEventArgs $args)
{
$this->updateHistorique($args);
}
/**
* {@inheritdoc}
*/
public function getSubscribedEvents()
{
return [Events::prePersist, Events::preUpdate];
}
}
\ No newline at end of file
......@@ -434,15 +434,6 @@ abstract class AbstractEntityService extends AbstractService
throw new \RuntimeException('L\'entité transmise n\'est pas de la classe ' . $serviceEntityClass . '.');
}
if ($entity instanceof HistoriqueAwareInterface){
if (!$entity->getHistoCreateur()){
/** @var UtilisateurService $utilisateurService */
$utilisateurService = \Application::$container->get(UtilisateurService::class);
$entity->setHistoCreateur($utilisateurService->getOse());
}
}
$this->getEntityManager()->persist($entity);
$this->getEntityManager()->flush($entity);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment