vendor/abcpremium/data-object-quality-bundle/src/Event/Subscriber/AddClassIdsToSettings.php line 32

Open in your IDE?
  1. <?php
  2. namespace Abcpremium\DataObjectQualityBundle\Event\Subscriber;
  3. use Abcpremium\DataObjectQualityBundle\Configuration\BundleConfiguration;
  4. use Pimcore\Event\Admin\IndexActionSettingsEvent;
  5. use Pimcore\Event\AdminEvents;
  6. use Pimcore\Model\DataObject\DataQualityConfig\Listing;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class AddClassIdsToSettings implements EventSubscriberInterface
  9. {
  10.     private BundleConfiguration $bundleConfiguration;
  11.     public function __construct(
  12.         BundleConfiguration $bundleConfiguration
  13.     )
  14.     {
  15.         $this->bundleConfiguration $bundleConfiguration;
  16.     }
  17.     /**
  18.      * {@inheritDoc}
  19.      */
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             AdminEvents::INDEX_ACTION_SETTINGS => 'addClassIds',
  24.         ];
  25.     }
  26.     public function addClassIds(IndexActionSettingsEvent $event): void
  27.     {
  28.         $event->addSetting('abcpremiumDataObjectQuality'$this->getSettings());
  29.     }
  30.     private function getSettings(): array
  31.     {
  32.         $classIds $this->getClassIdsWithQualityConfigs();
  33.         return [
  34.             'classIds'      => $classIds,
  35.             'properties'    => $this->getPropertyNamesForClassIds($classIds),
  36.             'thresholds'    => $this->getResultThresholdsForClassIds($classIds)
  37.         ];
  38.     }
  39.     private function getClassIdsWithQualityConfigs(): array
  40.     {
  41.         $classIds = [];
  42.         $configListing = new Listing();
  43.         foreach ($configListing as $qualityConfig) {
  44.             $classIds[] = $qualityConfig->getDataObjectClassId();
  45.         }
  46.         return array_unique($classIds);
  47.     }
  48.     private function getPropertyNamesForClassIds(array $classIds): array
  49.     {
  50.         $properties = [];
  51.         foreach ($classIds as $classId) {
  52.             $properties[$classId] = $this->bundleConfiguration->getPropertyNameForDataQuality($classId);
  53.         }
  54.         return $properties;
  55.     }
  56.     private function getResultThresholdsForClassIds(array $classIds): array
  57.     {
  58.         $thresholds = [];
  59.         foreach ($classIds as $classId) {
  60.             $thresholds[$classId] = $this->bundleConfiguration->getResultThresholdsByClassId($classId);
  61.         }
  62.         return $thresholds;
  63.     }
  64. }