bundles/ExportBundle/EventListener/TboneListener.php line 44

Open in your IDE?
  1. <?php 
  2. namespace ExportBundle\EventListener;
  3. use ExportBundle\Util\XML\TboneBuilder;
  4. use GuzzleHttp\Client;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Event\Model\ElementEventInterface;
  7. use Pimcore\Model\DataObject\Product;
  8. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  9. class TboneListener {
  10.     /**
  11.      * Symfony parameters
  12.      *
  13.      * @var ParameterBagInterface
  14.      */
  15.     private $params;
  16.     public function __construct(ParameterBagInterface $params) {
  17.         $this->params $params;
  18.     }
  19.     private function ServiceEnabled() {
  20.         if ($this->params->get('tbone')['save_event'] ?? false) {
  21.             return true;
  22.         }
  23.         return false;
  24.     }
  25.     private function isTboneObject($dataObject) {
  26.         if (isset($this->params->get('tbone')['object_id'])) {
  27.             foreach ($dataObject->getListingRelation() as $listingRelation) {
  28.                 if ($listingRelation->getId() == $this->params->get('tbone')['object_id']) {
  29.                     return true;
  30.                 }
  31.             }
  32.         }
  33.         return false;
  34.     }
  35.     
  36.     public function onObjectSave(ElementEventInterface $e) {
  37.         if ($this->ServiceEnabled()) {
  38.             if($e instanceof DataObjectEvent) {
  39.                 
  40.                 if (!$e->hasArgument('isAutoSave')) {
  41.                     $dataObject $e->getObject();
  42.                     if ($dataObject instanceof Product) {
  43.                         $exportObject false;
  44.                         switch ($dataObject->getProductLevel()) {
  45.                             case 'CHILD'
  46.                                 $dataObject $dataObject->getParent();
  47.                             case 'STYLE'
  48.                                 $exportObject $this->isTboneObject($dataObject);
  49.                                 $dataObject $dataObject->getParent();
  50.                                 break;
  51.                             default: 
  52.                                 $exportObject $this->isTboneObject($dataObject);
  53.                         }
  54.                         if ($exportObject == true) {
  55.                             $builder = new TboneBuilder($this->params->get('tbone')['object_id']);
  56.                             $xml $builder->CreateXML([$dataObject]);
  57.                             $this->SendFile($xml);
  58.                         }
  59.                     }
  60.                 }
  61.             }
  62.         }
  63.     }
  64.     private function SendFile($data) {
  65.         $client = new Client([
  66.             'base_uri'=>$this->params->get('tbone')['api']['uri']
  67.         ]);
  68.         
  69.         $response $client->request(
  70.             'POST',
  71.             $this->params->get('tbone')['merchant_id'] . "/sync/in/TBCAT_" date("YmdHis") . ".xml",
  72.             [
  73.                 'auth' => [
  74.                     $this->params->get('tbone')['api']['user'], 
  75.                     $this->params->get('tbone')['api']['password']
  76.                 ],
  77.                 'body'=>$data
  78.             ]
  79.         );
  80.     }
  81. }