src/mvk/Import/EventListener/DataImporterListener.php line 33

Open in your IDE?
  1. <?php
  2. /**
  3.  * This file is part of the Pimcore X Installation by
  4.  * ercas GmbH & CO. KG <https://www.ercasdieagentur.de>
  5.  *
  6.  *  @license GPLv3
  7.  */
  8. namespace App\mvk\Import\EventListener;
  9. use App\mvk\Import\Messenger\ImportHighPrioHandler;
  10. use App\mvk\Import\Messenger\ImportLowPrioHandler;
  11. use App\mvk\Import\Messenger\ImportSpecialPrioHandler;
  12. use Pimcore\Bundle\DataImporterBundle\Event\PostPreparationEvent;
  13. use Pimcore\Bundle\DataImporterBundle\PimcoreDataImporterBundle;
  14. use Pimcore\Bundle\DataImporterBundle\Processing\ImportProcessingService;
  15. use Pimcore\Log\ApplicationLogger;
  16. class DataImporterListener
  17. {
  18.     public function __construct(
  19.         protected ImportHighPrioHandler $importHighPrioHandler,
  20.         protected ImportLowPrioHandler $importLowPrioHandler,
  21.         protected ImportSpecialPrioHandler $importSpecialPrioHandler,
  22.         protected ApplicationLogger $applicationLogger,
  23.         protected ImportProcessingService $importProcessingService
  24.     ) {
  25.         $this->applicationLogger $applicationLogger;
  26.         $this->importProcessingService $importProcessingService;
  27.     }
  28.     public function importPrepared(PostPreparationEvent $event)
  29.     {
  30.         $configName $event->getConfigName();
  31.         // add Log Entry with some information about count of changes
  32.         $importStatus $this->importProcessingService->getImportStatus($configName);
  33.         if (isset($importStatus['isRunning'])) {
  34.             if ($importStatus['isRunning'] === false) {
  35.                 $importStatus['isRunning'] = 'NO';
  36.             } else {
  37.                 $importStatus['isRunning'] = 'YES';
  38.             }
  39.         }
  40.         $message 'Import Status '.$configName.': '.$this->mapped_implode(', '$importStatus' is ');
  41.         $this->applicationLogger->info($message, [
  42.             'component' => PimcoreDataImporterBundle::LOGGER_COMPONENT_PREFIX $configName,
  43.         ]);
  44.         if (str_contains($configName'Relation_') == true) {
  45.             if ($configName=='Relation_Agent_Policy') {
  46.                 $this->importSpecialPrioHandler->dispatchMessages($event->getExecutionType());
  47.             } else {
  48.                 // if the current config is a relation config use low prio messenger transport. Otherwise always use high transport message
  49.                 $this->importLowPrioHandler->dispatchMessages($event->getExecutionType());
  50.             }
  51.         } else {
  52.             $this->importHighPrioHandler->dispatchMessages($event->getExecutionType());
  53.         }
  54.     }
  55.     /**
  56.      * helper function to implode the key value pairs from import status return array to a string message for application logger
  57.      */
  58.     public function mapped_implode($glue$array$symbol '=')
  59.     {
  60.         return implode($gluearray_map(
  61.             function ($k$v) use ($symbol) {
  62.                 return $k $symbol $v;
  63.             },
  64.             array_keys($array),
  65.             array_values($array)
  66.         )
  67.         );
  68.     }
  69. }