/** * Checking request and response and decide whether we need a redirect * * @param FilterResponseEvent $event */ public function onResponse(FilterResponseEvent $event) { $request = $event->getRequest(); $response = $event->getResponse(); if ($request->get(self::HASH_NAVIGATION_HEADER) || $request->headers->get(self::HASH_NAVIGATION_HEADER)) { $location = ''; $isFullRedirect = false; if ($response->isRedirect()) { $location = $response->headers->get('location'); if ($request->attributes->get('_fullRedirect') || !is_object($this->security->getToken())) { $isFullRedirect = true; } } if ($response->isNotFound() || $response->getStatusCode() == 503 && !$this->isDebug) { $location = $request->getUri(); $isFullRedirect = true; } if ($location) { $response = $this->templating->renderResponse('OroNavigationBundle:HashNav:redirect.html.twig', array('full_redirect' => $isFullRedirect, 'location' => $location)); } // disable cache for ajax navigation pages and change content type to json $response->headers->set('Content-Type', 'application/json'); $response->headers->addCacheControlDirective('no-cache', true); $response->headers->addCacheControlDirective('max-age', 0); $response->headers->addCacheControlDirective('must-revalidate', true); $response->headers->addCacheControlDirective('no-store', true); $event->setResponse($response); } }
public function onCoreResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) { if (null !== $session = $request->getSession()) { // keep current flashes for one more request $session->setFlashes($session->getFlashes()); } $response->setContent($this->templating->render('WebProfilerBundle:Profiler:toolbar_redirect.html.twig', array('location' => $response->headers->get('Location')))); $response->setStatusCode(200); $response->headers->remove('Location'); } if (!$response->headers->has('X-Debug-Token') || '3' === substr($response->getStatusCode(), 0, 1) || ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html')) || 'html' !== $request->getRequestFormat() ) { return; } $this->injectToolbar($response); }
public function doResponse(FilterResponseEvent $event) { $response = $event->getResponse(); $url = $event->getRequest()->getPathInfo(); $prefix = ConfigQuery::read("back_office_path"); $defaultEnabled = intval(ConfigQuery::read("back_office_path_default_enabled", "1")); $contentType = $response->headers->get('Content-Type'); // skip if the default thelia prefixe is enabled if ($defaultEnabled === 1) { return; } $isValid = strpos($url, '/' . BackOfficePath::DEFAULT_THELIA_PREFIX) === 0 && $prefix !== null && $prefix !== ""; if ($isValid) { if ($response instanceof RedirectResponse) { $targetUrl = $response->getTargetUrl(); if (strpos($targetUrl, '/' . BackOfficePath::DEFAULT_THELIA_PREFIX) !== false) { $newUrl = $this->replaceUrl($targetUrl, BackOfficePath::DEFAULT_THELIA_PREFIX, $prefix); $response->setTargetUrl($newUrl); } } else { $content = $this->replaceUrl($response->getContent(), BackOfficePath::DEFAULT_THELIA_PREFIX, $prefix); $response->setContent($content); } } }
public function saveBasket(Event\FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return false; } $order = $this->get('basket.order'); $cookieName = $this->get('cfg')->basket->cookieName; $token = $this->get('request')->cookies->get($cookieName); // Skip if the order is empty if (count($order->items) < 1) { // If the cookie was in the request, delete it and clear the cookie if ($token) { $this->deleteBasket(); $this->get('http.cookies')->add(new Cookie($cookieName, null, new \DateTime('-1 hour'))); } return false; } // See if a basket already exists. $basket = $this->_services['order.basket.loader']->getByToken($token); // Update with current order details. if ($basket) { $basketID = $basket->basket_id; $this->_services['order.basket.edit']->update($basketID, $order); } else { // Create a new basket $basketID = $this->_services['order.basket.create']->create($order); $basket = $this->_services['order.basket.loader']->getByID($basketID); } // Create the cookie $token = $this->_services['order.basket.token']->generate($basketID, $basket->created_at); $cookieName = $this->_services['cfg']->basket->cookieName; $expire = new \DateTime('+' . $this->_services['cfg']->basket->cookieLength); $cookie = new Cookie($cookieName, $token, $expire); $this->_services['http.cookies']->add($cookie); }
/** * Unwraps an enforced response. */ public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); if ($response instanceof EnforcedResponse && $event->getRequestType() === HttpKernelInterface::MASTER_REQUEST) { $event->setResponse($response->getResponse()); } }
/** * Filters the Response. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { $request = $event->getRequest(); $response = $event->getResponse(); if ('HEAD' === $request->getMethod()) { // cf. RFC2616 14.13 $length = $response->headers->get('Content-Length'); $response->setContent(''); if ($length) { $response->headers->set('Content-Length', $length); } } if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } if (null === $response->getCharset()) { $response->setCharset($this->charset); } if ($response->headers->has('Content-Type')) { return; } $format = $request->getRequestFormat(); if (null !== $format && ($mimeType = $request->getMimeType($format))) { $response->headers->set('Content-Type', $mimeType); } }
/** * Logs master response on event KernelEvents::RESPONSE. * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { if (!$event->isMasterRequest()) { return; } $this->logResponse($event->getResponse()); }
public function processCount(FilterResponseEvent $event) { if (!$event->isMasterRequest()) { return; } $connecte = new Connecte(); $ip = $this->container->get('request')->getClientIp(); $times = time(); $doctrine = $this->container->get('doctrine.orm.entity_manager'); $listIp = $this->doctrine->getRepository('SNSysNewsBundle:Connecte')->findAll(); if (!in_array($ip, $listIp)) { $connecte->setIp($ip); $connecte->setTimes($times); $doctrine->persist($connecte); $doctrine->flush(); } else { $times = time(); $connecte->setTimes($times); $doctrine->persist($connecte); $doctrine->flush(); } $time_5 = time() - 60 * 5; if ($times < $time_5) { $connecte = $this->doctrine->getRepository('SNSysNewsBundle:Connecte')->findOneByTimes($times); $doctrine->remove($connecte); $doctrine->flush(); } $nbvisit = $doctrine->getRepository('SNSysNewsBundle:Connecte')->getcountnumbervisit(); $rep = $this->counthtml->viewNbVisit($event->getResponse(), $nbvisit); $event->setResponse($rep); }
/** * Renders the ajax commands right before preparing the result. * * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event * The response event, which contains the possible AjaxResponse object. */ public function onResponse(FilterResponseEvent $event) { $response = $event->getResponse(); if ($response instanceof AjaxResponse) { $response->prepareResponse($event->getRequest()); } }
/** * Adds the Contao headers to the Symfony response. * * @param FilterResponseEvent $event The event object */ public function onKernelResponse(FilterResponseEvent $event) { if (!$this->contaoFramework->isInitialized()) { return; } $event->setResponse($this->mergeHttpHeaders($event->getResponse())); }
public function onKernelResponse(FilterResponseEvent $e) { if (!$this->isRestRoute($e->getRequest())) { return; } $e->getDispatcher()->dispatch('sdispatcher.rest_response', $e); }
public function onKernelResponse(FilterResponseEvent $event) { if ($this->url || !$event->isMasterRequest() || !\sfContext::hasInstance()) { return; } $response_headers = $event->getResponse()->headers; if ($response_headers->has('x-debug-token-link') && strpos(\sfContext::getInstance()->getResponse()->getContentType(), 'javascript') === false && !$event->getRequest()->isXmlHttpRequest()) { $this->url = $response_headers->get('x-debug-token-link'); $link = json_encode($response_headers->get('x-debug-token-link')); echo <<<JAVASCRIPT <script> (function() { var bar_node = document.getElementById('sfWebDebugDetails'), link_node, li_node; if(bar_node) { // We have a debug bar link_node = document.createElement('a'); link_node.href = {$link}; link_node.appendChild(document.createTextNode('Symfony 2')); li_node = document.createElement('li'); li_node.appendChild(link_node); bar_node.insertBefore(li_node,bar_node.firstChild); } }()) </script> JAVASCRIPT; } }
/** * Process onReslonse event, updates user history information * * @param FilterResponseEvent $event * @return bool|void */ public function onResponse(FilterResponseEvent $event) { if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) { // Do not do anything return; } $request = $event->getRequest(); $response = $event->getResponse(); // do not process requests other than in html format // with 200 OK status using GET method and not _internal and _wdt if (!$this->matchRequest($response, $request)) { return false; } $postArray = ['url' => $request->getRequestUri(), 'user' => $this->user]; /** @var $historyItem NavigationHistoryItem */ $historyItem = $this->em->getRepository('Oro\\Bundle\\NavigationBundle\\Entity\\NavigationHistoryItem')->findOneBy($postArray); if (!$historyItem) { /** @var $historyItem \Oro\Bundle\NavigationBundle\Entity\NavigationItemInterface */ $historyItem = $this->navItemFactory->createItem(NavigationHistoryItem::NAVIGATION_HISTORY_ITEM_TYPE, $postArray); } $historyItem->setTitle($this->titleService->getSerialized()); // force update $historyItem->doUpdate(); $this->em->persist($historyItem); $this->em->flush($historyItem); return true; }
/** * Trigger event for RESPONSE Kervenel vent * * @param FilterResponseEvent $event event */ public function onResponse(FilterResponseEvent $event) { $response = $event->getResponse(); $request = $event->getRequest(); if (!$event->isMasterRequest()) { return; } if ($request->isXmlHttpRequest()) { return; } if ($response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $http = $request->isSecure() ? 'https' : 'http'; if (empty($this->extensions)) { return; } if (count($this->extensions) == 0) { return; } $extensions = implode('|', $this->extensions); $content = $response->getContent(); $pattern = '/="[^"]*\\/(css|js|var|bundles)\\/(.*)\\.(' . $extensions . ')([^"]*)"/i'; $replace = '="' . $http . '://' . $this->domain . '/${1}/${2}.${3}${4}"'; $content = preg_replace($pattern, $replace, $content); $response->setContent($content); }
/** * Filters the Response. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType() || null === $this->esi) { return; } $this->esi->addSurrogateControl($event->getResponse()); }
public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); $request = $event->getRequest(); if ($response->headers->has('X-Debug-Token') && null !== $this->urlGenerator) { try { $response->headers->set('X-Debug-Token-Link', $this->urlGenerator->generate('_profiler', array('token' => $response->headers->get('X-Debug-Token')), UrlGeneratorInterface::ABSOLUTE_URL)); } catch (\Exception $e) { $response->headers->set('X-Debug-Error', get_class($e) . ': ' . $e->getMessage()); } } if (!$event->isMasterRequest()) { return; } // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) { $session = $request->getSession(); if (null !== $session && $session->isStarted() && $session->getFlashBag() instanceof AutoExpireFlashBag) { // keep current flashes for one more request if using AutoExpireFlashBag $session->getFlashBag()->setAll($session->getFlashBag()->peekAll()); } $response->setContent($this->twig->render('@WebProfiler/Profiler/toolbar_redirect.html.twig', array('location' => $response->headers->get('Location')))); $response->setStatusCode(200); $response->headers->remove('Location'); } if (self::DISABLED === $this->mode || !$response->headers->has('X-Debug-Token') || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $this->injectToolbar($response, $request); }
/** * Handles the onKernelResponse event. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { $master = $event->isMasterRequest(); if ($this->onlyMasterRequests && !$master) { return; } if ($this->onlyException && null === $this->exception) { return; } $request = $event->getRequest(); $exception = $this->exception; $this->exception = null; if (null !== $this->matcher && !$this->matcher->matches($request)) { return; } if (!$profile = $this->profiler->collect($request, $event->getResponse(), $exception)) { return; } $this->profiles[$request] = $profile; if (null !== $this->requestStack) { $this->parents[$request] = $this->requestStack->getParentRequest(); } elseif (!$master) { // to be removed when requestStack is required array_pop($this->requests); $this->parents[$request] = end($this->requests); } }
public function onQuickUploadResponse(FilterResponseEvent $event) { $request = $event->getRequest(); if ($request->get('responseType') === 'json') { return; } $response = $event->getResponse(); $funcNum = $request->get('CKEditorFuncNum'); $funcNum = preg_replace('/[^0-9]/', '', $funcNum); if ($response instanceof JsonResponse) { $responseData = $response->getData(); $fileUrl = isset($responseData['url']) ? $responseData['url'] : ''; $errorMessage = isset($responseData['error']['message']) ? $responseData['error']['message'] : ''; ob_start(); ?> <script type="text/javascript"> window.parent.CKEDITOR.tools.callFunction(<?php echo json_encode($funcNum); ?> , <?php echo json_encode($fileUrl); ?> , <?php echo json_encode($errorMessage); ?> ); </script> <?php $event->setResponse(Response::create(ob_get_clean())); } }
public function addLocaleCookie(FilterResponseEvent $event) { $cookies = $event->getRequest()->cookies; if (isset($this->locale) && (false === $cookies->has('locale') || $cookies->get('locale') !== $this->locale)) { $event->getResponse()->headers->setCookie(new Cookie('locale', $this->locale, 0, '/', null, false, false)); } }
/** * Modifies the response to apply HTTP expiration header fields. * * @param FilterResponseEvent $event The notified event */ public function onKernelResponse(FilterResponseEvent $event) { if (!($configuration = $event->getRequest()->attributes->get('_cache'))) { return; } $response = $event->getResponse(); if (!$response->isCacheable()) { return; } if (null !== $configuration->getSMaxAge()) { $response->setSharedMaxAge($configuration->getSMaxAge()); } if (null !== $configuration->getMaxAge()) { $response->setMaxAge($configuration->getMaxAge()); } if (null !== $configuration->getExpires()) { $date = \DateTime::createFromFormat('U', strtotime($configuration->getExpires()), new \DateTimeZone('UTC')); $response->setExpires($date); } if (null !== $configuration->getVary()) { $response->setVary($configuration->getVary()); } if ($configuration->isPublic()) { $response->setPublic(); } $event->setResponse($response); }
public function onRenderAdminProductCategoryEditBefore(FilterResponseEvent $event) { $app = $this->app; $request = $event->getRequest(); $response = $event->getResponse(); $id = $request->attributes->get('id'); $CategoryContent = null; if ($id) { $CategoryContent = $app['category_content.repository.category_content']->find($id); } if (is_null($CategoryContent)) { $CategoryContent = new \Plugin\CategoryContent\Entity\CategoryContent(); } // DomCrawlerにHTMLを食わせる $html = $response->getContent(); $crawler = new Crawler($html); $form = $app['form.factory']->createBuilder('admin_category')->getForm(); $form['content']->setData($CategoryContent->getContent()); $form->handleRequest($request); $twig = $app->renderView('CategoryContent/Resource/template/Admin/category.twig', array('form' => $form->createView())); $oldCrawler = $crawler->filter('form')->first(); // DomCrawlerからHTMLを吐き出す $html = $crawler->html(); $oldHtml = ''; $newHtml = ''; if (count($oldCrawler) > 0) { $oldHtml = $oldCrawler->html(); $newHtml = $oldHtml . $twig; } $html = str_replace($oldHtml, $newHtml, $html); $response->setContent($html); $event->setResponse($response); }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } // do not capture admin cms urls if (preg_match('/.*\\/admin\\/.*/', $request->getRequestUri())) { return; } try { $isGranted = $this->authorizationChecker->isGranted('ROLE_ADMIN'); } catch (AuthenticationCredentialsNotFoundException $e) { $isGranted = false; } if (self::DISABLED === $this->mode || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $this->injectToolbar($response, $request); }
/** * Filters the Response. * * @param FilterResponseEvent $event A FilterResponseEvent instance */ public function onKernelResponse(FilterResponseEvent $event) { if (!$event->isMasterRequest() || null === $this->surrogate) { return; } $this->surrogate->addSurrogateControl($event->getResponse()); }
public function onKernelResponse(FilterResponseEvent $event) { $controller = $event->getRequest()->attributes->get('_controller'); if (empty($controller)) { return; } if (strpos($controller, '::') !== false) { $controller = explode('::', $controller, 2); $class = new \ReflectionClass($controller[0]); $method = $class->getMethod($controller[1]); $annotation = $this->reader->getMethodAnnotation($method, 'PSX\\PSXBundle\\Configuration\\Outgoing'); $response = $event->getResponse(); $writer = $this->getWriter($event->getRequest()); if ($response instanceof DataResponse) { if ($annotation instanceof Outgoing) { $file = $this->rootDir . '/' . $annotation->getFile(); $data = $this->assimilator->assimilate(JsonSchema::fromFile($file), $response->getData()); $response->headers->set('Content-Type', $writer->getContentType()); $response->setContent($writer->write($data)); } else { $data = $this->normalizeData($response->getData()); $response->headers->set('Content-Type', $writer->getContentType()); $response->setContent($writer->write($data)); } } else { throw new RuntimeException('Can only transform responses of PSX\\PSXBundle\\DataResponse'); } } }
public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $response = $event->getResponse(); $request = $event->getRequest(); // do not capture redirects or modify XML HTTP Requests if ($request->isXmlHttpRequest()) { return; } if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) { $session = $request->getSession(); if ($session && $session->getFlashBag() instanceof AutoExpireFlashBag) { // keep current flashes for one more request if using AutoExpireFlashBag $session->getFlashBag()->setAll($session->getFlashBag()->peekAll()); } $response->setContent($this->templating->render('WebProfilerBundle:Profiler:toolbar_redirect.html.twig', array('location' => $response->headers->get('Location')))); $response->setStatusCode(200); $response->headers->remove('Location'); } if (self::DISABLED === $this->mode || !$response->headers->has('X-Debug-Token') || $response->isRedirection() || $response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->getRequestFormat()) { return; } $this->injectToolbar($response); }
/** * @param FilterResponseEvent $event */ public function onCoreResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $response = $event->getResponse(); $response->headers->add(array("X-RequestId" => $this->requestId)); } }
/** * @param FilterResponseEvent $event */ public function onCoreResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) { $this->profiler->stopProfiling(); if ($this->profiling) { $timers = $this->profiler->getTimers(); $requestTime = microtime(true) - $this->start; $timers['request'] = (int) ($requestTime * 1000); $counters = $this->profiler->getCounters(); $counters['request'] = 1; if ($this->statsd) { $sample = $this->sampling / 100; $route = $event->getRequest()->attributes->get('_route'); foreach ($timers as $key => $value) { $this->statsd->timing($key, $value, $sample); if ($route) { $this->statsd->timing("per_route.{$key}.{$route}", $value, $sample); } } foreach ($counters as $key => $value) { $this->statsd->updateStats($key, $value, $sample); if ($route) { $this->statsd->updateStats("per_route.{$key}.{$route}", $value, $sample); } } } if ($this->logger) { $this->logger->log($event->getRequest(), $timers, $counters); } } } }
/** * Logs master response on event KernelEvents::RESPONSE * * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { return; } $this->logResponse($event->getResponse()); }
/** * @param FilterResponseEvent $event */ public function onKernelResponse(FilterResponseEvent $event) { $allowedMethods = $this->loader->getAllowedMethods(); if (isset($allowedMethods[$event->getRequest()->get('_route')])) { $event->getResponse()->headers->set('Allow', implode(', ', $allowedMethods[$event->getRequest()->get('_route')])); } }
public function onRenderAdminProductEditBefore(FilterResponseEvent $event) { $app = $this->app; $request = $event->getRequest(); $response = $event->getResponse(); // メーカーマスタから有効なメーカー情報を取得 $repos = $app['eccube.plugin.mail_magazine.repository.mail_magazine']; $MailMagazines = $repos->findAll(); if (is_null($MailMagazines)) { $MailMagazines = new \Plugin\MailMagazine\Entity\MailMagazine(); } // 商品登録・編集画面のHTMLを取得し、DOM化 $crawler = new Crawler($response->getContent()); $form = $app['form.factory']->createBuilder('admin_product_mail_magazine')->getForm(); $form->get('mail_magazine')->setData($MailMagazines); $form->handleRequest($request); $parts = $app->renderView('MailMagazine/View/admin/product_mail_magazine.twig', array('form' => $form->createView())); // form1の最終項目に追加(レイアウトに依存(時間無いのでベタ)) $html = $crawler->html(); $form = $crawler->filter('#form1 .accordion')->last()->html(); $new_form = $form . $parts; $html = str_replace($form, $new_form, $html); $response->setContent($html); $event->setResponse($response); }