Пример #1
0
 public function onSave(GenericEvent $event)
 {
     if (get_class($event->getSubject()) == $this->workflowClass) {
         //if it is a 'save' of the workflow entity check the workflow-status of the belonging types and save the formNodes to the real nodes
         $workflow = $event->getSubject();
         //get the repository for the changed workflow
         $repositories = $this->getEntityRepository($workflow);
         if ($repositories != null) {
             //get all ressources without workflow-status
             $resources = array();
             foreach ($repositories as $repository) {
                 $currentResourcesEmpty = $repository->getEmptyWorkflowStatus();
                 //replace old workflowstatus with current workflowstatus
                 $this->removeOldWorkflowStatus($repository, $workflow);
                 $resources = array_merge($currentResourcesEmpty, $resources);
             }
             //check if there are some entries with workflow-status null
             if ($resources != null) {
                 //set a workflow-status if the current workflow is active
                 if ($workflow->getActive()) {
                     $this->setWorkflowStatus($workflow, $resources);
                 }
             }
         }
         $this->writeNodes($workflow, $repositories);
         $this->em->flush();
     }
 }
Пример #2
0
 public function onDelete(GenericEvent $event)
 {
     $metadata = $this->metadataFactory->create($event->getSubject());
     //check if the current subject was indexed
     if ($metadata) {
         //get the right IndexEngine
         $engine = $this->container->getParameter('enhavo_search.search.index_engine');
         $indexEngine = $this->container->get($engine);
         //do the unindexing
         $indexEngine->unindex($event->getSubject());
     }
 }
Пример #3
0
 public function onDelete(GenericEvent $event)
 {
     if (get_class($event->getSubject()) == $this->workflowClass) {
         //get the current workflow
         $workflowRepository = $this->em->getRepository('EnhavoWorkflowBundle:Workflow');
         $workflow = $workflowRepository->find($event->getSubject()->getId());
         //remove transitions from current workflow
         $this->removeTransitions($workflow);
         //remove nodes and workflowstatus from current workflow
         $this->removeNodesAndWorkflowStatus($workflow);
         $this->em->flush();
     }
 }
 /**
  * Check if channels are linked to this tree
  *
  * @param GenericEvent $event
  *
  * @throws ConflictHttpException
  */
 public function checkChannels(GenericEvent $event)
 {
     $tree = $event->getSubject();
     if (count($tree->getChannels()) > 0) {
         throw new ConflictHttpException($this->translator->trans('flash.tree.not removable'));
     }
 }
Пример #5
0
 public function onUpdate(GenericEvent $event)
 {
     $entity = $event->getSubject();
     if ($entity instanceof Routeable && $entity->getRoute() != null) {
         $this->updateRoute($entity->getRoute());
     }
 }
 function it_resolves_order_states(StateResolverInterface $stateResolver, GenericEvent $event, OrderInterface $order)
 {
     $event->getSubject()->willReturn($order);
     $stateResolver->resolveShippingState($order)->shouldBeCalled();
     $stateResolver->resolvePaymentState($order)->shouldBeCalled();
     $this->resolveOrderStates($event);
 }
Пример #7
0
 function it_send_password_reset_pin_mail($sender, GenericEvent $event, UserInterface $user)
 {
     $event->getSubject()->willReturn($user);
     $user->getEmail()->willReturn('*****@*****.**');
     $sender->send('reset_password_pin', ['*****@*****.**'], Argument::any())->shouldBeCalled();
     $this->sendResetPasswordPinEmail($event);
 }
Пример #8
0
 function it_proccess_order_channel_successfully(GenericEvent $event, OrderInterface $order, ChannelContextInterface $channelContext, ChannelInterface $channel)
 {
     $event->getSubject()->shouldBeCalled()->willReturn($order);
     $channelContext->getChannel()->shouldBeCalled()->willReturn($channel);
     $order->setChannel($channel)->shouldBeCalled();
     $this->processOrderChannel($event);
 }
 function it_sets_customer_on_a_resource($customerContext, GenericEvent $event, CustomerAwareInterface $resource, CustomerInterface $customer)
 {
     $event->getSubject()->willReturn($resource);
     $customerContext->getCustomer()->willReturn($customer);
     $resource->setCustomer($customer)->shouldBeCalled();
     $this->setCustomer($event);
 }
 /**
  * @param GenericEvent $event
  */
 public function updateChannel(GenericEvent $event)
 {
     $channel = $event->getSubject();
     if (!$channel instanceof ChannelInterface) {
         return;
     }
     $oldLocales = $this->repository->getDeletedLocalesForChannel($channel);
     $newLocales = $channel->getLocales();
     $updatedLocales = [];
     foreach ($oldLocales as $locale) {
         $locale->removeChannel($channel);
         $updatedLocales[] = $locale;
         if (null !== $this->completeness) {
             $this->completeness->scheduleForChannelAndLocale($channel, $locale);
         }
     }
     foreach ($newLocales as $locale) {
         if (!$locale->hasChannel($channel)) {
             $locale->addChannel($channel);
             $updatedLocales[] = $locale;
         }
     }
     if (!empty($updatedLocales)) {
         $this->saver->saveAll($updatedLocales);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function onCheckoutComplete(GenericEvent $event)
 {
     /** @var OrderInterface $order */
     $order = $event->getSubject();
     Assert::isInstanceOf($order, OrderInterface::class);
     $this->session->set('sylius_order_id', $order->getId());
 }
Пример #12
0
 public function login(GenericEvent $event)
 {
     $user = $event->getSubject();
     if ($user instanceof UserInterface) {
         $this->userCartMerger->merge($user);
     }
 }
Пример #13
0
 public function onContent(Event $event)
 {
     $page = $event->getSubject();
     foreach ($page->getDocument()->getElementsByTagName('img') as $image) {
         $url = parse_url($image->getAttribute('src'));
         if (isset($url['host'])) {
             continue;
         }
         if (isset($url['query'])) {
             parse_str($url['query'], $query);
         }
         $src = $this->urlGenerator->generate('image', ['path' => $url['path']]);
         if ('a' !== $image->parentNode->nodeName && (!isset($query['link']) || 'no' !== $query['link'])) {
             $a = $image->parentNode->insertBefore($page->getDocument()->createElement('a'), $image);
             $a->appendChild($image);
             $a->setAttribute('href', $src . (isset($query['link']) && 'direct' === $query['link'] ? '' : '?details'));
         }
         if (isset($query['link'])) {
             unset($query['link']);
         }
         if (!empty($query)) {
             $src .= '?' . http_build_query($query);
         }
         $image->setAttribute('src', $src);
         unset($query);
     }
 }
 function it_does_not_update_password_if_customer_does_not_have_user(PasswordUpdaterInterface $passwordUpdater, GenericEvent $event, CustomerInterface $customer)
 {
     $event->getSubject()->willReturn($customer);
     $customer->getUser()->willReturn(null);
     $passwordUpdater->updatePassword(null)->shouldNotBeCalled();
     $this->customerUpdateEvent($event);
 }
 function it_does_not_set_locale_on_post_update_when_event_subject_is_different_from_current_user($translator, GenericEvent $event, UserInterface $user, RequestStack $requestStack, Request $request, LocaleInterface $locale)
 {
     $event->getSubject()->willReturn($user);
     $event->getArgument('current_user')->willReturn(null);
     $translator->setLocale('fr_FR')->shouldNotBeCalled();
     $this->onPostUpdate($event);
 }
Пример #16
0
 function it_calls_taxation_processor_on_order(TaxationProcessorInterface $taxationProcessor, GenericEvent $event, OrderInterface $order)
 {
     $event->getSubject()->willReturn($order);
     $taxationProcessor->applyTaxes($order)->shouldBeCalled();
     $order->calculateTotal()->shouldBeCalled();
     $this->applyTaxes($event);
 }
Пример #17
0
 /**
  * Mark document's related job as 'started'.
  *
  * @param GenericEvent $event
  */
 public function onTextmasterDocumentIncomplete(GenericEvent $event)
 {
     /** @var DocumentInterface $document */
     $document = $event->getSubject();
     $job = $this->jobManager->getFromDocument($document);
     $this->jobManager->start($job);
 }
Пример #18
0
 public function onBuilderPreTask(GenericEvent $event)
 {
     if (true === $this->showProgress) {
         return;
     }
     $task = $event->getSubject();
     $io = $this->io;
     $self = $this;
     $task->setOutput(function ($output) use($io, $self) {
         if ($io->isVerbose()) {
             $io->write(sprintf('%s', $output));
             $self->needsNewline = false;
         } else {
             $io->overwrite(sprintf('%s', $output), false);
             $self->needsNewline = true;
         }
     });
     if ($event->getArgument('index') > 0) {
         if (true === $this->needsNewline) {
             $this->io->write('');
             $this->needsNewline = false;
         }
         $this->io->write('');
     }
     $this->io->write(sprintf('- Executing task <info>%s</info>', get_class($task)));
     $this->io->increaseIndention(2);
 }
Пример #19
0
 function it_processes_promotion_on_orders(GenericEvent $event, OrderInterface $order, $promotionProcessor)
 {
     $event->getSubject()->willReturn($order);
     $promotionProcessor->process($order)->shouldBeCalled();
     $order->calculateTotal()->shouldBeCalled();
     $this->processOrderPromotion($event);
 }
Пример #20
0
 /**
  * @param GenericEvent $event
  */
 public function onApiCall(GenericEvent $event)
 {
     if (!$this->calls) {
         $this->calls = [];
     }
     $this->calls[] = $event->getSubject();
 }
Пример #21
0
 function it_does_not_proceed_order_channel_if_it_is_already_set(GenericEvent $event, OrderInterface $order, ChannelInterface $channel)
 {
     $event->getSubject()->willReturn($order);
     $order->getChannel()->willReturn($channel);
     $order->setChannel($channel)->shouldNotBeCalled();
     $this->processOrderChannel($event);
 }
Пример #22
0
 public function onMetaParse(Event $event)
 {
     $page = $event->getSubject();
     if (is_string($page->getMetas())) {
         $page->setMetas(Yaml::parse($page->getMetas()));
     }
 }
 function it_does_nothing_if_review_already_has_author($customerContext, ReviewerInterface $existingAuthor, GenericEvent $event, ReviewInterface $review)
 {
     $event->getSubject()->willReturn($review);
     $review->getAuthor()->willReturn($existingAuthor);
     $customerContext->getCustomer()->shouldNotBeCalled();
     $this->ensureReviewHasAuthor($event);
 }
Пример #24
0
 public function onMeta(Event $event)
 {
     $page = $event->getSubject();
     if (null !== ($redirect = $page->getMeta('redirect'))) {
         throw new PageRedirectedException($page->getName(), $redirect);
     }
 }
Пример #25
0
 function it_generates_order_number(NumberListener $listener, GenericEvent $event, OrderInterface $order)
 {
     $event->getSubject()->willReturn($order);
     $order->getNumber()->willReturn(null);
     $listener->enableEntity($order)->shouldBeCalled();
     $this->generateOrderNumber($event);
 }
Пример #26
0
 public function preSave(GenericEvent $event)
 {
     $subject = $event->getSubject();
     if ($subject instanceof Slugable) {
         $slug = $subject->getSlug();
         if (is_array($slug)) {
             foreach ($slug as $locale => $value) {
                 if (empty($value)) {
                     $slug[$locale] = $this->slugify($this->getContext($subject, $locale));
                 }
             }
             $subject->setSlug($slug);
         }
     }
     if ($subject instanceof Routeable) {
         /** @var Route $route */
         $route = $subject->getRoute();
         if ($route instanceof Route) {
             $staticPrefixes = $route->getStaticPrefix();
             if (is_array($staticPrefixes)) {
                 foreach ($staticPrefixes as $locale => $value) {
                     if (empty($value)) {
                         $staticPrefixes[$locale] = sprintf('/%s/%s', $locale, $this->slugify($this->getContext($subject, $locale)));
                     }
                 }
                 $route->setStaticPrefix($staticPrefixes);
             }
         }
     }
 }
Пример #27
0
 /**
  * Use generator to add a proper number to order.
  *
  * @param GenericEvent $event
  */
 public function generateOrderNumber(GenericEvent $event)
 {
     $order = $event->getSubject();
     if (null !== $order->getNumber()) {
         return;
     }
     $this->listener->enableEntity($order);
 }
Пример #28
0
 /**
  * @param GenericEvent $event
  */
 public function sendVerificationEmail(GenericEvent $event)
 {
     $customer = $event->getSubject();
     Assert::isInstanceOf($customer, CustomerInterface::class);
     $user = $customer->getUser();
     Assert::notNull($user);
     $this->handleUserVerificationToken($user);
 }
Пример #29
0
 /**
  * @param GenericEvent $event
  *
  * @return OrderInterface
  *
  * @throws UnexpectedTypeException
  */
 protected function getOrder(GenericEvent $event)
 {
     $order = $event->getSubject();
     if (!$order instanceof OrderInterface) {
         throw new UnexpectedTypeException($order, OrderInterface::class);
     }
     return $order;
 }
Пример #30
0
 /**
  * @param GenericEvent $event
  */
 public function uploadTaxonImage(GenericEvent $event)
 {
     $subject = $event->getSubject();
     Assert::isInstanceOf($subject, TaxonInterface::class);
     if ($subject->hasFile()) {
         $this->uploader->upload($subject);
     }
 }