src/EventListener/ObjectListener.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Model\DataObject\Address;
  4. use App\Model\DataObject\Place;
  5. use Pimcore\Event\Model\ElementEventInterface;
  6. use Pimcore\Event\Model\DataObjectEvent;
  7. //use Pimcore\Model\DataObject\Books;
  8. use Pimcore\Log\Simple;
  9. use Pimcore\Model\DataObject;
  10. use App\Twig\Extension\Apik;
  11. class ObjectListener
  12. {
  13.     private static $processing = [];
  14.     public function sanitizeTitle($title) {
  15.         return trim($title);
  16.     }
  17.     public function onPreUpdate(ElementEventInterface $e)
  18.     {
  19.         if ($e instanceof DataObjectEvent) {
  20.             $obj $e->getObject();
  21.             if($obj instanceof DataObject\SpecialEvent) {
  22.                 $slug Apik::toUrl($obj->getTitle());
  23.                 $obj->setSlug(Apik::toUrl($obj->getTitle()));
  24.                 $languages \Pimcore\Tool::getValidLanguages();
  25.                 $abseUrl \Pimcore\Tool::getHostUrl();
  26.                 foreach($languages as $lang) {
  27.                     $obj->setLinkUrl($abseUrl.'/'.$lang.'/special-event/'.$slug$lang);
  28.                 }
  29.             }else if($obj instanceof DataObject\Studio){
  30.                 /*$languages = \Pimcore\Tool::getValidLanguages();
  31.                 foreach($languages as $lang) {
  32.                     $obj->setSlug(Apik::toUrl($obj->getTitle($lang)), $lang);
  33.                 }
  34.                 */
  35.                 $obj->setSlug(Apik::toUrl($obj->getTitle()));
  36.             }
  37.             if($obj instanceof Place) {
  38.                 $obj->geocode();
  39.             }
  40.         }
  41.     }
  42.     public function onPostUpdate(ElementEventInterface $e){
  43.         if($e instanceof DataObjectEvent){
  44.             $obj $e->getObject();
  45.             if($obj instanceof DataObject\SpecialEventInscription){
  46.                 if (!is_null($obj->getIsCanceled())) {
  47.                     $objId $obj->getId();
  48.                     if (isset(self::$processing[$objId]) && self::$processing[$objId]) {
  49.                         return;
  50.                     }
  51.                     self::$processing[$objId] = true;
  52.                     try {
  53.                         if ($obj->getIsCanceled()) {
  54.                             $email $obj->getEmail();
  55.                             $studio $obj->getStudio();
  56.                             $event $obj->getSpecialEvent();
  57.                             $slotList DataObject\SpecialEventSlot::getList();
  58.                             $slotList->setCondition('user = ? AND studio__id = ? AND specialEvent__id = ?',[$email,$studio->getId(),$event->getId()]);
  59.                             $slots $slotList->load();
  60.                             // Si au moins un créneau est trouvé, mettre à jour le premier créneau trouvé
  61.                             if (count($slots) > 0) {
  62.                                 $slot $slots[0];
  63.                                 $slot->setIsReserved(false);
  64.                                 $slot->setUser('');
  65.                                 $slot->save();
  66.                             }
  67.                         }
  68.                     } catch (\Exception $ex) {
  69.                         Simple::log('apk_error_objectListener'$ex->getMessage());
  70.                     } finally {
  71.                         self::$processing[$objId] = false;
  72.                     }
  73.                 }
  74.             }
  75.         }
  76.     }
  77. }