src/EventSubscriber/Logger/ActivityLogger/OsAdminEventSubscriber.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\Logger\ActivityLogger;
  3. use App\Features\Core\ILogger;
  4. use OSAdmin\Event\OSAdminActivityLogEvent;
  5. use OSAdmin\Form\ExportData;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class OsAdminEventSubscriber implements EventSubscriberInterface
  8. {
  9.     public function __construct(private ILogger $activityLogger){}
  10.     public static function getSubscribedEvents(): array
  11.     {
  12.         return [
  13.             OSAdminActivityLogEvent::NAME => 'notifyActivity',
  14.         ];
  15.     }
  16.     public function notifyActivity(OSAdminActivityLogEvent $event)
  17.     {
  18.         $entity$event->getEntity();
  19.         $object$event->getObject();
  20.         $action$event->getAction();
  21.         $message"";
  22.         if($action === OSAdminActivityLogEvent::ACTION_SHOW){
  23.             if($object){
  24.                 $message"Vous avez consulté l'élément ".$entity." : ".$object->getId();
  25.             }else{
  26.                 $message"Vous avez consulté l'élément ".$entity;
  27.             }
  28.         }
  29.         if($action === OSAdminActivityLogEvent::ACTION_DELETE){
  30.             if($object){
  31.                 $message"Vous avez supprimé l'élément ".$entity." : ".$object->getId();
  32.             }else{
  33.                 $message"Vous avez supprimé l'élément ".$entity;
  34.             }
  35.         }
  36.         if($action === OSAdminActivityLogEvent::ACTION_ADD){
  37.             if($object){
  38.                 $message"Vous avez ajouté l'élément ".$entity." : ".$object->getId();
  39.             }else{
  40.                 $message"Vous avez ajouté l'élément ".$entity;
  41.             }
  42.         }
  43.         if($action === OSAdminActivityLogEvent::ACTION_EDIT){
  44.             if($object){
  45.                 $message"Vous avez modifié l'élément ".$entity." : ".$object->getId();
  46.             }else{
  47.                 $message"Vous avez modifié l'élément ".$entity;
  48.             }
  49.         }
  50.         if($action === OSAdminActivityLogEvent::ACTION_ENABLED_DISABLED){
  51.             if($object){
  52.                 $message"Vous avez activité/désactivé l'élément ".$entity." : ".$object->getId();
  53.             }else{
  54.                 $message"Vous avez activité/désactivé l'élément ".$entity;
  55.             }
  56.         }
  57.         if($action === OSAdminActivityLogEvent::ACTION_LIST){
  58.             $message"Vous avez consulté la liste des éléments ".$entity;
  59.         }
  60.         if($action === OSAdminActivityLogEvent::ACTION_EXPORT){
  61.             if($object instanceof ExportData){
  62.                 $message"Vous avez exporté la liste des éléments ".$entity." ayant les id suivant: ".(implode(","$object->ids));
  63.             }else{
  64.                 $message"Vous avez exporté la liste des éléments ".$entity;
  65.             }
  66.         }
  67.         if($message && $action){
  68.             try{
  69.                 $this->activityLogger->log($object??$entity$action$message);
  70.             }catch (\Exception $e){}
  71.         }
  72.     }
  73. }