/** * 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; }
/** * Extract titles for translation * * @param string $directory * @param MessageCatalogue $catalogue * * @return MessageCatalogue */ public function extract($directory, MessageCatalogue $catalogue) { $routes = $this->getRoutesByBundleDir($directory); $titles = $this->titleService->getStoredTitlesRepository()->getTitles($routes); foreach ($titles as $titleRecord) { $catalogue->set($titleRecord['shortTitle'], $this->prefix . $titleRecord['shortTitle']); } return $catalogue; }
/** * Find title for current route in database * * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { $request = $event->getRequest(); if (HttpKernel::MASTER_REQUEST != $event->getRequestType() || $request->getRequestFormat() != 'html' || $request->getMethod() != 'GET' && !$request->headers->get(ResponseHashnavListener::HASH_NAVIGATION_HEADER) || $request->isXmlHttpRequest() && !$request->headers->get(ResponseHashnavListener::HASH_NAVIGATION_HEADER)) { // don't do anything return; } $route = $request->get('_route'); $this->service->loadByRoute($route); }
/** * Process onResponse event, updates user history information * * @param FilterResponseEvent $event * * @return bool|null */ public function onResponse(FilterResponseEvent $event) { if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) { // Do not do anything return null; } /** @var EntityManager $em */ $em = $this->registry->getManagerForClass($this->historyItemFQCN); $request = $event->getRequest(); $response = $event->getResponse(); $token = $this->securityContext->getToken(); $user = $organization = null; if ($token instanceof TokenInterface) { $user = $token->getUser(); } // check if a current request can be added to a history if (!$this->canAddToHistory($response, $request, $user)) { return false; } if ($token instanceof OrganizationContextTokenInterface) { $organization = $token->getOrganizationContext(); } $postArray = ['url' => $request->getRequestUri(), 'user' => $user, 'organization' => $organization]; /** @var $historyItem NavigationHistoryItem */ $historyItem = $em->getRepository($this->historyItemFQCN)->findOneBy($postArray); if (!$historyItem) { $routeParameters = $request->get('_route_params'); unset($routeParameters['id']); $entityId = filter_var($request->get('id'), FILTER_VALIDATE_INT); if (false !== $entityId) { $entityId = (int) $entityId; } else { $entityId = null; } $postArray['route'] = $request->get('_route'); $postArray['routeParameters'] = $routeParameters; $postArray['entityId'] = $entityId; /** @var $historyItem \Oro\Bundle\NavigationBundle\Entity\NavigationItemInterface */ $historyItem = $this->navItemFactory->createItem($this->navigationHistoryItemType, $postArray); } $historyItem->setTitle($this->titleService->getSerialized()); // force update $historyItem->doUpdate(); // disable Doctrine events for history item processing $eventManager = $em->getEventManager(); if ($eventManager instanceof OroEventManager) { $eventManager->disableListeners('^Oro'); } $em->persist($historyItem); $em->flush($historyItem); if ($eventManager instanceof OroEventManager) { $eventManager->clearDisabledListeners(); } return true; }
/** * Returns json serialized data * * @return string */ public function renderSerialized() { return $this->titleService->setData($this->getTitleData())->getSerialized(); }