src/Logging/Activity/ExternalMessageLog.php line 17

Open in your IDE?
  1. <?php
  2. //----------------------------------------------------------------------
  3. // src/Logging/ExternalMessageLog.php
  4. //----------------------------------------------------------------------
  5. namespace App\Logging\Activity;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use App\Entity\Platform\ExternalMessage\ExternalMessage;
  8. use App\Logging\Tools;
  9. use App\Services\LogTools;
  10. class ExternalMessageLog
  11. {
  12.     private array $pendingLogArgs = [];
  13.     public function __construct(ManagerRegistry $doctrineLogTools $logToolsTools $tools)
  14.     {
  15.         $this->em $doctrine->getManager();
  16.         $this->logTools $logTools;
  17.         $this->tools $tools;
  18.     }
  19.     public function logCreation(ExternalMessage $externalMessage)
  20.     {
  21.         $pendingLogArgs = [];
  22.         //----------------------------------------------------------------------
  23.         // Fetch eventual info stored in the object
  24.         $loggingData $this->logTools->handleLoggingData($externalMessage);
  25.         $info $loggingData['info'];
  26.         $specialAuthor $loggingData['special_author'];
  27.         $ignore $loggingData['ignore'];
  28.         if ($ignore) return $pendingLogArgs;
  29.         //----------------------------------------------------------------------
  30.         // Init base log args
  31.         // This does not contain action
  32.         $args $this->initArgs($externalMessage$loggingData);
  33.         //----------------------------------------------------------------------
  34.         $action "external_message_add";
  35.         $args["action"] = $action;
  36.         $args["new_value"] = $externalMessage->getBody();
  37.         $pendingLogArgs[] = $args;
  38.         return $pendingLogArgs;
  39.     }
  40.     public function logChanges(ExternalMessage $externalMessage$changes)
  41.     {
  42.         $pendingLogArgs = [];
  43.         //----------------------------------------------------------------------
  44.         // Fetch eventual info skeletond in the object
  45.         $loggingData $this->logTools->handleLoggingData($externalMessage);
  46.         $info $loggingData['info'];
  47.         $specialAuthor $loggingData['special_author'];
  48.         $ignore $loggingData['ignore'];
  49.         if ($ignore) return $pendingLogArgs;
  50.         //----------------------------------------------------------------------
  51.         // Init base log args
  52.         // This does not contain action
  53.         $args $this->initArgs($externalMessage$loggingData);
  54.         //----------------------------------------------------------------------
  55.         $action "external_message_edit";
  56.         $labelChanges = array(
  57.             "status",
  58.             "type",
  59.         );
  60.         // Method getLogLabel() should be defined for these objects/entities
  61.         $objectChanges = array(
  62.             "society",
  63.         );
  64.         // See what changed and log (members first)
  65.         foreach ($changes as $key => $change)
  66.         {
  67.             // Something to skip ?
  68.             if (false)
  69.             {
  70.                 continue;
  71.             }
  72.             $name $this->logTools->camelToSnakeCase($key);
  73.             $args["action"]    = $action."_".$name;
  74.             $before $change[0];
  75.             $after $change[1];
  76.             if (in_array($key$labelChanges))
  77.             {
  78.                 $pendingLogArgs[] = $this->tools->handleLabelChanges($args$before$after);
  79.                 continue;
  80.             }
  81.             if (in_array($key$objectChanges))
  82.             {
  83.                 $pendingLogArgs[] = $this->tools->handleObjectChanges($args$before$after);
  84.                 continue;
  85.             }
  86.         }
  87.         return $pendingLogArgs;
  88.     }
  89.     public function logRemoval(ExternalMessage $externalMessage)
  90.     {
  91.         $pendingLogArgs = [];
  92.         return $pendingLogArgs;
  93.     }
  94.     private function initArgs(ExternalMessage $externalMessage$loggingData)
  95.     {
  96.         $receiver $externalMessage->getClient();
  97.         $society $externalMessage->getSociety();
  98.         $societyGroup $externalMessage->getSocietyGroup();
  99.         $mission $externalMessage->getMission();
  100.         $args = array(
  101.             "object_id"                    =>    $externalMessage->getId(),
  102.             "object_bundle"                =>    "Platform",
  103.             "object_entity"                =>    "ExternalMessage",
  104.             "object_display"            =>    $externalMessage->display(),
  105.             "object_client_id"            =>    $receiver !== null $receiver->getId() : null,
  106.             "object_client_display"        =>    $receiver !== null $receiver->getName() : null,
  107.             "object_mission_id"            =>    $mission !== null $mission->getId() : null,
  108.             "object_mission_display"    =>    $mission !== null $mission->getRef() : null,
  109.             
  110.             "society_group"                =>    $societyGroup,
  111.             "society"                    =>    $society,
  112.             "info"                        =>    $loggingData['info'],
  113.             "special_author"            =>    $loggingData['special_author'],
  114.         );
  115.         return $args;
  116.     }
  117. }