コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 /**
  * 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);
 }
コード例 #4
0
 /**
  * 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;
 }
コード例 #5
0
ファイル: TitleExtension.php プロジェクト: Maksold/platform
 /**
  * Returns json serialized data
  *
  * @return string
  */
 public function renderSerialized()
 {
     return $this->titleService->setData($this->getTitleData())->getSerialized();
 }