src/Controller/AssetController.php line 57

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Helpers\AuthHelper;
  4. use App\Tools\StaticImportMethods;
  5. use Carbon\Carbon;
  6. use Cocur\Slugify\Slugify;
  7. use Exception;
  8. use Google\Service\Compute\Image;
  9. use PhpOffice\PhpSpreadsheet\Style\NumberFormat\FractionFormatter;
  10. use Pimcore\Controller\FrontendController;
  11. use Pimcore\Event\Model\AssetEvent;
  12. use Pimcore\Event\Model\DataObjectEvent;
  13. use Pimcore\Model\Asset;
  14. use Pimcore\Model\DataObject;
  15. use Pimcore\Model\DataObject\Family;
  16. use Pimcore\Model\DataObject\Folder;
  17. use Pimcore\Model\DataObject\Product;
  18. use Pimcore\Model\DataObject\Product\Listing;
  19. use Pimcore\Model\DataObject\Sector;
  20. use Pimcore\Model\DataObject\SubFamily;
  21. use Pimcore\Model\Element\ValidationException;
  22. use Pimcore\Tool\Storage;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use pcrov\JsonReader\JsonReader;
  27. use function Symfony\Component\String\s;
  28. use function Symfony\Component\Translation\t;
  29. use Pimcore\Twig\Extension\ImageThumbnailExtension;
  30. class AssetController extends FrontendController
  31. {
  32.     /**
  33.      * Updates fragment using title
  34.      * @param AssetEvent $event
  35.      */
  36.     public function onAssetPostAdd(AssetEvent $event)
  37.     {
  38.         $asset $event->getAsset();
  39.         if ($asset instanceof Asset\Text) {
  40.             $this->onCsvPostAdd($asset);
  41.         }
  42.         /*
  43.         elseif ($asset instanceof Asset\Image) {
  44.             $this->onImagePostAdd($asset);
  45.         }
  46.         */
  47.     }
  48.     /**
  49.      * @throws Exception
  50.      */
  51.     public function onAssetPreUpdate(AssetEvent $event): void
  52.     {
  53.         $asset $event->getAsset();
  54.         if ($asset instanceof Asset\Image || $asset instanceof Asset\Document) {
  55.             $this->onImagePreUpdate($asset);
  56.         }
  57.     }
  58.     private function onCsvPostAdd(Asset\Text $text)
  59.     {
  60.         return;
  61.     }
  62.     /*
  63.         private function onImagePostAdd(Asset\Image $image)
  64.         {
  65.             file_put_contents("../shared/webdav/onSales/items/{$image->getFilename()}", $image->getData());
  66.             file_put_contents("../shared/webdav/onSales/thumbnails400/{$image->getFilename()}", $image->getThumbnail("thumbnail400")->getStream());
  67.             file_put_contents("../shared/webdav/onSales/thumbnails1200/{$image->getFilename()}", $image->getThumbnail('thumbnail1200')->getStream());
  68.         }
  69.     */
  70.     /**
  71.      * @throws Exception
  72.      */
  73.     private function onImagePreUpdate(Asset $image): void
  74.     {
  75.         $assetName pathinfo($image->getKey(), PATHINFO_FILENAME);
  76.         if (str_contains($assetName'_')) {
  77.             $assetName substr($assetName0strpos($assetName'_'));
  78.         }
  79.         $parentFolder Asset\Service::createFolderByPath('Data/Products/' $assetName)->save();
  80.         // Controlla se esiste giĆ  un asset con lo stesso nome nel percorso di destinazione
  81.         $existingAsset Asset::getByPath($parentFolder->getFullPath() . '/' $image->getFilename());
  82.         if ($existingAsset && $existingAsset->getId() !== $image->getId()) {
  83.             // Elimina il file vecchio (duplicato)
  84.             $existingAsset->delete();
  85.         }
  86.         $image->setParentId($parentFolder->getId());
  87.     }
  88. }