/** * 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; }
/** * Returns an existing history item, finding it by URL and user, * or creates and returns a new one. * * @param UserInterface $user * @param string $url * * @return NavigationItemInterface */ protected function findOrCreate(UserInterface $user, $url) { $historyItem = $this->repository->findOneBy(['user' => $user, 'url' => $url]); if (null === $historyItem) { $historyItem = $this->itemFactory->createItem(NavigationHistoryItem::NAVIGATION_HISTORY_ITEM_TYPE, ['user' => $user, 'url' => $url]); } return $historyItem; }
/** * Modify menu by adding, removing or editing items. * * @param \Knp\Menu\ItemInterface $menu * @param array $options * @param string|null $alias */ public function build(ItemInterface $menu, array $options = [], $alias = null) { $user = $this->tokenStorage->getToken()->getUser(); $menu->setExtra('type', $alias); if (is_object($user)) { /** @var $entity NavigationItemInterface */ $entity = $this->factory->createItem($alias, []); /** @var $repo NavigationRepositoryInterface */ $repo = $this->em->getRepository(get_class($entity)); $items = $repo->getNavigationItems($user->getId(), $alias, $options); foreach ($items as $item) { $menu->addChild($alias . '_item_' . $item['id'], ['extras' => $item, 'uri' => $item['url'], 'label' => $item['title']]); } } }
/** * Modify menu by adding, removing or editing items. * * @param \Knp\Menu\ItemInterface $menu * @param array $options * @param string|null $alias */ public function build(ItemInterface $menu, array $options = array(), $alias = null) { $user = $this->securityContext->getToken() ? $this->securityContext->getToken()->getUser() : null; $menu->setExtra('type', $alias); if (is_object($user)) { $currentOrganization = $this->securityContext->getToken()->getOrganizationContext(); /** @var $entity NavigationItemInterface */ $entity = $this->factory->createItem($alias, array()); /** @var $repo NavigationRepositoryInterface */ $repo = $this->em->getRepository(ClassUtils::getClass($entity)); $items = $repo->getNavigationItems($user->getId(), $currentOrganization, $alias, $options); foreach ($items as $item) { $menu->addChild($alias . '_item_' . $item['id'], array('extras' => $item, 'uri' => $item['url'], 'label' => $item['title'])); } } }
public function loadUsersTags() { $params = array('account' => array("url" => "/account", "title_rendered" => "Accounts - Customers", "title" => "{\"template\":\"Accounts - Customers\",\"short_template\":\"Accounts\",\"params\":[]}", "position" => 0, "type" => "pinbar", "display_type" => "list", "maximized" => false, "remove" => false), 'contact' => array("url" => "/contact", "title_rendered" => "Contacts - Customers", "title" => "{\"template\":\"Contacts - Customers\",\"short_template\":\"Contacts\",\"params\":[]}", "position" => 1, "type" => "pinbar", "display_type" => "list", "maximized" => false, "remove" => false), 'leads' => array("url" => "/lead", "title_rendered" => "Leads - Sales", "title" => "{\"template\":\"Leads - Sales\",\"short_template\":\"Leads\",\"params\":[]}", "position" => 2, "type" => "pinbar", "display_type" => "list", "maximized" => false, "remove" => false), 'opportunities' => array("url" => "/opportunity", "title_rendered" => "Opportunities - Sales", "title" => "{\"template\":\"Opportunities - Sales\",\"short_template\":\"Opportunities\",\"params\":[]}", "position" => 3, "type" => "pinbar", "display_type" => "list", "maximized" => false, "remove" => false)); $organization = $this->getReference('default_organization'); foreach ($this->users as $user) { $securityContext = $this->container->get('security.context'); $token = new UsernamePasswordOrganizationToken($user, $user->getUsername(), 'main', $this->organization); $securityContext->setToken($token); foreach ($params as $param) { $param['user'] = $user; $pinTab = $this->navigationFactory->createItem($param['type'], $param); $pinTab->getItem()->setOrganization($organization); $this->persist($this->em, $pinTab); } } $this->flush($this->em); }