Esempio n. 1
0
 /**
  * Genera un registro de auditoría con un detalle de los cambios realizados a la entidad.
  *
  * @param LifecycleEventArgs $eventArgs
  */
 public function logChangeSet(LifecycleEventArgs $eventArgs, $action)
 {
     $em = $eventArgs->getEntityManager();
     $uow = $em->getUnitOfWork();
     $entity = $eventArgs->getEntity();
     $classMetadata = $em->getClassMetadata(get_class($entity));
     $user = $this->container->get('security.token_storage')->getToken()->getUser();
     if ($this->isEntitySupported($classMetadata->reflClass)) {
         $uow->computeChangeSet($classMetadata, $entity);
         $changeSet = $uow->getEntityChangeSet($entity);
         $this->WriteToLog($action, $entity, $user, $changeSet);
         $Registro = new \Tapir\BaseBundle\Entity\AuditoriaRegistro();
         $Registro->setAccion($action);
         $Registro->setElementoTipo($classMetadata->reflClass->getName());
         $Registro->setElementoId($entity->getId());
         $Registro->setEstacion($this->container->get('request')->getClientIp());
         if (\Tapir\BaseBundle\Helper\ClassHelper::UsaTrait($user, 'Tapir\\BaseBundle\\Entity\\ConIdMetodos')) {
             // Algunas veces el usuario no tiene ID (por ejemplo en el entorno de pruebas unitarias)
             $Registro->setUsuario($user->getId());
         }
         //echo '<pre>' . json_encode($changeSet, JSON_PRETTY_PRINT) . '</pre>';
         $Registro->setCambios(json_encode($changeSet));
         $em->persist($Registro);
         $em->flush();
         //$em->clear();
         //$RegistroMeta = $em->getClassMetadata(get_class($Registro));
         //$uow->computeChangeSet($RegistroMeta, $Registro);
     }
 }
Esempio n. 2
0
 /**
  * Genera un registro de auditoría con un detalle de los cambios realizados a la entidad.
  *
  * @param LifecycleEventArgs $eventArgs
  */
 public function WriteToLogTable($em, $action, $entity, $user, $changeSet = null)
 {
     $uow = $em->getUnitOfWork();
     $Registro = new \Tapir\BaseBundle\Entity\AuditoriaRegistro();
     $Registro->setAccion($action);
     $Registro->setElementoTipo(str_replace('Proxies\\__CG__\\', '', get_class($entity)));
     $Registro->setElementoId($entity->getId());
     if ($Request = $this->container->get('request_stack')->getCurrentRequest()) {
         // A veces no hay request, por ejemplo al correr servicios desde la línea de comandos
         $Registro->setEstacion($Request->getClientIp());
     }
     if (\Tapir\BaseBundle\Helper\ClassHelper::UsaTrait($user, 'Tapir\\BaseBundle\\Entity\\ConIdMetodos')) {
         // A veces el usuario no tiene ID (por ejemplo en el entorno de pruebas unitarias)
         $Registro->setUsuario($user);
     }
     $Registro->setCambios(json_encode($changeSet));
     $em->persist($Registro);
     $this->InsercionesSinId[] = $Registro;
     $cambioMetadata = $em->getClassMetadata(get_class($Registro));
     $uow->computeChangeSet($cambioMetadata, $Registro);
 }