vendor/blackbit/data-director/EventListener/AssetHashListener.php line 24

Open in your IDE?
  1. <?php
  2. namespace Blackbit\DataDirectorBundle\EventListener;
  3. use Blackbit\DataDirectorBundle\lib\Pim\Helper;
  4. use Blackbit\DataDirectorBundle\lib\Pim\AssetNormalizer\NormalizeAction;
  5. use Blackbit\DataDirectorBundle\lib\Pim\AssetNormalizer\NormalizeActionHistogram;
  6. use Blackbit\DataDirectorBundle\lib\Pim\AssetNormalizer\NormalizeActionSquaredSize;
  7. use Blackbit\DataDirectorBundle\lib\Pim\AssetNormalizer\Normalizer;
  8. use Blackbit\DataDirectorBundle\lib\Pim\Item\Importer;
  9. use Blackbit\DataDirectorBundle\model\Dataport;
  10. use Blackbit\DataDirectorBundle\model\Fieldmapping;
  11. use Blackbit\DataDirectorBundle\model\PimcoreDbRepository;
  12. use Blackbit\DataDirectorBundle\Tools\Installer;
  13. use InvalidArgumentException;
  14. use Pimcore\Cache;
  15. use Pimcore\Event\Model\AssetEvent;
  16. use Pimcore\Event\Model\ElementEventInterface;
  17. use Pimcore\Model\Asset\Image;
  18. use Pimcore\Model\Property;
  19. class AssetHashListener
  20. {
  21.     public function updateHash(AssetEvent $e)
  22.     {
  23.         if (\method_exists($e'getArgument')) {
  24.             try {
  25.                 $saveVersionOnly $e->getArgument('saveVersionOnly');
  26.                 if ($saveVersionOnly) {
  27.                     return;
  28.                 }
  29.             } catch (\InvalidArgumentException $exception) {
  30.             }
  31.         }
  32.         $asset $e->getAsset();
  33.         $parentPath $asset->getParent()->getFullPath(); // when asset gets moved realpath is not correct yet but only parent gets set
  34.         $fieldMappings = new Fieldmapping();
  35.         $calculateHash false;
  36.         $dataports = new Dataport();
  37.         foreach($fieldMappings->find(['format LIKE ?' => '%"preventDuplicates";b:1%']) as $fieldMapping) {
  38.             $dataport $dataports->get($fieldMapping['dataportId']);
  39.             $targetConfig unserialize($dataport['targetconfig'], ['allowed_classes' => false]);
  40.             if(strpos($asset->getRealPath(), $targetConfig['assetFolder']) === || strpos($parentPath$targetConfig['assetFolder']) === 0) {
  41.                 $calculateHash true;
  42.                 break;
  43.             }
  44.         }
  45.         if(!$calculateHash) {
  46.             return;
  47.         }
  48.         try {
  49.             $asset->setProperty(Normalizer::HASH_PROPERTY'text'Normalizer::getHash($asset));
  50.         } catch (\Exception $e) {
  51.             return;
  52.         }
  53.     }
  54. }