bundles/DrukattBundle/EventListener/ClientEquipmentAssetListener.php line 13

Open in your IDE?
  1. <?php
  2. namespace DrukattBundle\EventListener;
  3. use Pimcore\Event\Model\Asset\ResolveUploadTargetEvent;
  4. use Pimcore\Model\DataObject\Client;
  5. use Pimcore\Model\DataObject\ClientEquipment;
  6. use Pimcore\Model\DataObject\Concrete;
  7. class ClientEquipmentAssetListener
  8. {
  9.     public function onResolveUploadTarget (ResolveUploadTargetEvent $event) {
  10.         $context $event->getContext();
  11.         if ($context["containerType"] == "object") {
  12.             $objectId $context["objectId"];
  13.             $clientEquipment ClientEquipment::getById($objectId);
  14.             if ($clientEquipment) {
  15.                 $client $this->findParentClient($clientEquipment);
  16.                 if (!empty($client) && !empty($client->getUploadpath())) {
  17.                     //$fieldname = $context["fieldname"];
  18.                     $targetPath $client->getUploadpath()->getRealFullPath() . '/' $clientEquipment->getKey();
  19.                     $parent \Pimcore\Model\Asset\Service::createFolderByPath($targetPath);
  20.                     if ($parent) {
  21.                         $event->setParentId($parent->getId());
  22.                     }
  23.                 }
  24.             }
  25.         }
  26.     }
  27.     /**
  28.      * @return Client
  29.      */
  30.     private function findParentClient(Concrete $object) {
  31.         if (empty($object)) {
  32.             return null;
  33.         }  
  34.         if ($object instanceof Client) {
  35.             return $object;
  36.         }
  37.         return $this->findParentClient($object->getParent());
  38.     }
  39. }