コード例 #1
0
 /**
  * @param $path
  * @param $alias
  * @param bool|false $isAbsolute
  * @return array
  * @throws \Exception
  */
 public function getThumbnailInfo($path, $alias, $isAbsolute = false)
 {
     $filter = isset($this->settings['filters'][$alias]) ? $this->settings['filters'][$alias] : null;
     if (!$filter) {
         throw new \Exception(sprintf('Unknown thumbnail filter "%s"', $alias));
     }
     if (!$path) {
         $default = null;
         if (isset($filter['default'])) {
             $defaultAlias = explode('.', $filter['default']);
             $default = $this->settings['defaults'];
             foreach ($defaultAlias as $defaultAliasName) {
                 $default = $default[$defaultAliasName];
             }
         }
         $src = $default;
     } else {
         $src = sprintf('/%s/%s', $this->settings['url_prefix'], $alias) . $path;
     }
     if ($isAbsolute || $this->settings['absolute']) {
         $host = $this->request->getMasterRequest()->getSchemeAndHttpHost();
         $port = $this->request->getMasterRequest()->getPort();
         if ($port != 80) {
             $host .= ':' . $port;
         }
         $src = $host . $src;
     }
     $width = $filter['width'];
     $height = $filter['height'];
     return ['src' => $src, 'width' => $width, 'height' => $height];
 }
コード例 #2
0
 /**
  * If you have failed to login too many times, a log of this will be present
  * in your session and the databse (incase session is dropped the record remains).
  *
  * @access public
  * @return int
  */
 public function vote()
 {
     $request = $this->requestStack->getMasterRequest();
     if (($this->forceAccountRecovery['enabled'] || $this->blockPages['enabled']) && $request) {
         $route = $request->get('_route');
         $ipAddress = $request->getClientIp();
         $this->blockPages['routes'][] = $this->routeLogin['name'];
         if ($this->blockPages['enabled'] && in_array($route, $this->blockPages['routes'])) {
             // Get number of failed login attempts.
             $attempts = $this->loginFailureTracker->getAttempts($ipAddress, $this->blockPages['duration_in_minutes']);
             if (count($attempts) >= $this->blockPages['after_attempts']) {
                 // You have too many failed login attempts, login access is temporarily blocked.
                 return self::ACCESS_DENIED_BLOCK;
             }
         }
         $this->forceAccountRecovery['routes'][] = $this->routeLogin['name'];
         if ($this->forceAccountRecovery['enabled'] && in_array($route, $this->forceAccountRecovery['routes'])) {
             // Get number of failed login attempts.
             $attempts = $this->loginFailureTracker->getAttempts($ipAddress, $this->forceAccountRecovery['duration_in_minutes']);
             if (count($attempts) >= $this->forceAccountRecovery['after_attempts']) {
                 // You have too many failed login attempts, login access is temporarily blocked, go recover your account.
                 return self::ACCESS_DENIED_DEFER;
             }
         }
     }
     return self::ACCESS_ALLOWED;
 }
コード例 #3
0
 public function createAndHandle($name, $type, IEntity $entity)
 {
     $request = $this->request_stack->getMasterRequest();
     $form = $this->form_factory->createNamed($name, $type, $entity, ['method' => 'POST']);
     $form->handleRequest($request);
     return $form;
 }
コード例 #4
0
 /**
  * {@inheritdoc}
  */
 public function getCurrentRequest()
 {
     if (null === $this->request) {
         $this->request = $this->requestStack->getMasterRequest();
     }
     return $this->request;
 }
コード例 #5
0
ファイル: SorterRenderer.php プロジェクト: php-lug/lug
 /**
  * {@inheritdoc}
  */
 public function render(GridViewInterface $grid, ColumnInterface $column, $sorting)
 {
     $definition = $grid->getDefinition();
     $name = $column->getName();
     if (!$definition->hasSort($name)) {
         return;
     }
     $sort = $sorting === SorterInterface::ASC ? $name : '-' . $name;
     $routeParameters = [];
     if (($request = $this->requestStack->getMasterRequest()) !== null) {
         $routeParameters = array_merge($request->attributes->get('_route_params', []), $request->query->all());
     }
     if (!isset($routeParameters['grid']['reset']) && isset($routeParameters['grid']['sorting']) && $routeParameters['grid']['sorting'] === $sort) {
         return;
     }
     if ($definition->hasOption('persistent') && $definition->getOption('persistent')) {
         $filters = $this->filterManager->get($definition);
         if (isset($filters['sorting']) && $filters['sorting'] === $sort) {
             return;
         }
     }
     $routeParameters['grid']['sorting'] = $sort;
     unset($routeParameters['grid']['reset']);
     return $this->urlGenerator->generate($definition->getOption('grid_route'), $routeParameters);
 }
コード例 #6
0
ファイル: ObtainCreditCardAction.php プロジェクト: payum/core
 /**
  * {@inheritDoc}
  *
  * @param ObtainCreditCard $request
  */
 public function execute($request)
 {
     RequestNotSupportedException::assertSupports($this, $request);
     $httpRequest = null;
     if ($this->httpRequest instanceof Request) {
         $httpRequest = $this->httpRequest;
     } else {
         if ($this->httpRequestStack instanceof RequestStack) {
             $httpRequest = $this->httpRequestStack->getMasterRequest();
         }
     }
     if (false == $httpRequest) {
         throw new LogicException('The action can be run only when http request is set.');
     }
     $form = $this->createCreditCardForm();
     $form->handleRequest($httpRequest);
     if ($form->isSubmitted()) {
         /** @var CreditCardInterface $card */
         $card = $form->getData();
         $card->secure();
         if ($form->isValid()) {
             $request->set($card);
             return;
         }
     }
     $renderTemplate = new RenderTemplate($this->templateName, array('model' => $request->getModel(), 'firstModel' => $request->getFirstModel(), 'form' => $form->createView(), 'actionUrl' => $request->getToken() ? $request->getToken()->getTargetUrl() : null));
     $this->gateway->execute($renderTemplate);
     throw new HttpResponse(new Response($renderTemplate->getResult(), 200, array('Cache-Control' => 'no-store, no-cache, max-age=0, post-check=0, pre-check=0', 'X-Status-Code' => 200, 'Pragma' => 'no-cache')));
 }
コード例 #7
0
 public function initializeTree(TreeInitializedEvent $event)
 {
     if ($masterRequest = $this->requestStack->getMasterRequest()) {
         if ($node = $event->getTree()->find($masterRequest->attributes->all())) {
             $node->setActive();
         }
     }
 }
コード例 #8
0
 /**
  * @return Request
  */
 private function getMasterRequest()
 {
     $masterRequest = $this->requestStack->getMasterRequest();
     if (null === $masterRequest) {
         throw new \UnexpectedValueException('There are not any requests on request stack');
     }
     return $masterRequest;
 }
コード例 #9
0
 /**
  * Get user's locale
  *
  * @return string
  */
 protected function getLocale()
 {
     $request = $this->requestStack->getMasterRequest();
     if (null === $request) {
         return 'en';
     }
     return $request->getLocale();
 }
コード例 #10
0
 /**
  * {@inheritdoc}
  */
 protected function mergeDefaultParameters(array $parameters)
 {
     $parameters = parent::mergeDefaultParameters($parameters);
     $language = $this->requestStack->getMasterRequest()->headers->get('Accept-Language');
     $parameters['headers'] = isset($parameters['headers']) ? $parameters['headers'] : [];
     $parameters['headers'] = array_merge($parameters['headers'], ['Accept-Language' => $language]);
     return $parameters;
 }
コード例 #11
0
 /**
  * @return Request
  */
 public function getRequest()
 {
     if (null === $this->request) {
         return $this->requestStack->getMasterRequest();
     } else {
         return $this->request;
     }
 }
コード例 #12
0
 /**
  * @return Request
  */
 private function getMasterRequest()
 {
     $masterRequest = $this->requestStack->getMasterRequest();
     if (null === $masterRequest) {
         throw new ChannelNotFoundException();
     }
     return $masterRequest;
 }
コード例 #13
0
ファイル: MenuEventListener.php プロジェクト: npakai/enhavo
 public function addCurrent(ItemInterface $menu)
 {
     $currentRoute = $this->stack->getMasterRequest()->get('_route');
     $route = $this->menu[$menu->getName()]['route'];
     if ($currentRoute == $route) {
         $menu->setCurrent(true);
     }
 }
コード例 #14
0
 /**
  * {@inheritdoc}
  */
 public function getCurrentScopeId()
 {
     if (null === $this->requestStack->getMasterRequest()) {
         return null;
     }
     $sessionBag = $this->requestStack->getMasterRequest()->getSession();
     $scope = $sessionBag->get($this->getSessionBagNamespace());
     return isset($scope['id']) ? $scope['id'] : null;
 }
コード例 #15
0
ファイル: StructureManager.php プロジェクト: octava/cms
 /**
  * @return null|Structure
  */
 public function getCurrentItem()
 {
     $request = $this->requestStack->getMasterRequest();
     if (empty($this->currentItem) && $request && $request->attributes->has(Structure::ROUTING_ID_NAME)) {
         $structureId = $request->attributes->get(Structure::ROUTING_ID_NAME);
         $this->currentItem = $this->entityManger->getRepository('OctavaStructureBundle:Structure')->getById($structureId);
     }
     return $this->currentItem;
 }
コード例 #16
0
 /**
  * Clumsily render the Drupal 7 toolbar inside a Twig page.
  */
 public function renderToolbar()
 {
     if ($this->requestStack->getCurrentRequest() === $this->requestStack->getMasterRequest()) {
         $toolbar = array('#pre_render' => array('toolbar_pre_render', 'shortcut_toolbar_pre_render'), '#access' => user_access('access toolbar'), 'toolbar_drawer' => array());
         $toolbar = array_merge($toolbar, toolbar_view());
         $content = render($toolbar);
         return $content;
     }
 }
コード例 #17
0
 /**
  * @param Response $response
  *
  * @return string
  */
 public function hash(Response $response)
 {
     $suffix = '';
     // add cookies to ETag
     if ($this->request_stack->getMasterRequest()) {
         $suffix = self::ETAG_SEPARATOR . http_build_query($this->request_stack->getMasterRequest()->cookies->all());
     }
     return hash($this->algorithm, $response->getLastModified()->format(\DateTime::ISO8601) . $suffix);
 }
コード例 #18
0
 /**
  * Marks users successfully authenticated to the firewall as online.
  *
  * @param OnFirewallAuthenticationEvent $event
  */
 public function onFirewallLogin(OnFirewallAuthenticationEvent $event)
 {
     /** @var \AppBundle\Model\User\User $user */
     $user = $event->getToken()->getUser();
     $this->userIdProvider->addUserId($user->getId());
     $user->setLastAction(new DateTime(sprintf('@%s', $this->requestStack->getMasterRequest()->server->get('REQUEST_TIME'))));
     $this->entityManager->persist($user);
     $this->entityManager->flush($user);
 }
コード例 #19
0
ファイル: Builder.php プロジェクト: octava/cms
 /**
  * Builds sidebar menu.
  *
  * @return ItemInterface
  */
 public function createSidebarMenu()
 {
     $menu = $this->factory->createItem('root', ['extras' => ['request' => $this->requestStack->getMasterRequest()]]);
     $tree = $this->adminMenuManager->getTree();
     $this->generateMenu($menu, $tree);
     $event = new ConfigureMenuEvent($this->factory, $menu);
     $this->eventDispatcher->dispatch(ConfigureMenuEvent::SIDEBAR, $event);
     return $event->getMenu();
 }
コード例 #20
0
ファイル: EditMode.php プロジェクト: jarves/jarves
 /**
  * @param int|null $nodeId
  *
  * @return bool
  */
 public function isEditMode($nodeId = null)
 {
     $request = $this->requestStack->getMasterRequest();
     $hasRequest = !!$request;
     if ($nodeId) {
         return $hasRequest && 1 === (int) $request->get('_jarves_editor') && $this->acl->isUpdatable('jarves/node', ['id' => $nodeId]);
     }
     return $hasRequest && 1 === (int) $request->get('_jarves_editor') && $this->pageStack->getCurrentPage() && $this->acl->isUpdatable('jarves/node', ['id' => $this->pageStack->getCurrentPage()->getId()]);
 }
コード例 #21
0
 /**
  * @return string
  */
 public function getView()
 {
     $view = self::DEFAULT_VIEW;
     $request = $this->requestStack->getMasterRequest();
     if (null !== $request && $request->attributes->has('view')) {
         $view = $request->attributes->get('view');
     }
     return $view;
 }
コード例 #22
0
ファイル: ChannelContext.php プロジェクト: Mangetsu/Sylius
 /**
  * {@inheritdoc}
  */
 public function getChannel()
 {
     $this->scheduleRefreshIfHostnameHaveChanged($this->requestStack->getMasterRequest());
     if (false === $this->isFresh) {
         $this->channel = $this->channelResolver->resolve($this->latestHostname);
         $this->isFresh = true;
     }
     return $this->channel;
 }
コード例 #23
0
 /**
  * @param GenericEvent $event
  */
 public function onPostUpdate(GenericEvent $event)
 {
     $user = $event->getSubject();
     if ($user === $event->getArgument('current_user')) {
         $request = $this->requestStack->getMasterRequest();
         $request->getSession()->set('_locale', $user->getUiLocale()->getCode());
         $this->translator->setLocale($user->getUiLocale()->getCode());
     }
 }
コード例 #24
0
 /**
  * {@inheritdoc}
  */
 public function getAccount()
 {
     if (!isset($this->account)) {
         // Use the master request to prevent subrequests authenticating to a
         // different user.
         $this->setAccount($this->authenticationManager->authenticate($this->requestStack->getMasterRequest()));
     }
     return $this->account;
 }
コード例 #25
0
 public function testGetMasterRequest()
 {
     $requestStack = new RequestStack();
     $this->assertNull($requestStack->getMasterRequest());
     $masterRequest = Request::create('/foo');
     $subRequest = Request::create('/bar');
     $requestStack->push($masterRequest);
     $requestStack->push($subRequest);
     $this->assertSame($masterRequest, $requestStack->getMasterRequest());
 }
コード例 #26
0
 /**
  * Configure response.
  *
  * Set $lifetime as < 0 for not set max-age
  *
  * @param Response $response
  * @param \DateTime $last_modified
  * @param int $lifetime
  *
  * @return Response
  */
 public function configure(Response $response, \DateTime $last_modified, $lifetime)
 {
     $request = $this->request_stack->getMasterRequest();
     if (!$request instanceof Request) {
         return $response;
     }
     // order is important
     $this->setPrivateCache($response, $request)->setLastModified($response, $last_modified)->setLifetime($response, $lifetime)->setEtag($response);
     return $response;
 }
コード例 #27
0
 /**
  * Returns info about IP
  *
  * @param null $ip
  * @return mixed
  */
 public function getIpInfo($ip = null)
 {
     if (is_null($ip)) {
         $ip = $this->request_stack->getMasterRequest()->getClientIp();
     }
     if (!isset($this->cache[$ip])) {
         $this->cache[$ip] = $this->findRange($ip);
     }
     return $this->cache[$ip];
 }
コード例 #28
0
 /**
  * @return Request|null
  */
 private function getRequest()
 {
     if ($this->requestStack instanceof RequestStack) {
         return $this->requestStack->getMasterRequest();
     } elseif ($this->request instanceof Request) {
         return $this->request;
     } else {
         return null;
     }
 }
コード例 #29
0
 /**
  * Constructor
  *
  * @param \Twig_Environment   $twig
  * @param FragmentHandler     $fragmentHandler
  * @param ContentManager      $contentManager
  * @param ContainerInterface  $container
  */
 public function __construct(\Twig_Environment $twig, FragmentHandler $fragmentHandler, ContainerInterface $container, RequestStack $requestStack)
 {
     $this->twig = $twig;
     $this->fragmentHandler = $fragmentHandler;
     $this->container = $container;
     $this->requestStack = $requestStack;
     if ($requestStack->getMasterRequest() !== null && $requestStack->getMasterRequest()->get('blockMode') === 'manage') {
         $this->blockMode = 'manage';
     }
 }
コード例 #30
0
ファイル: LoginManager.php プロジェクト: hmlb/user-bundle
 public final function loginUser($firewallName, User $user, Response $response = null)
 {
     $this->userChecker->checkPostAuth($user);
     $token = $this->createToken($firewallName, $user);
     $request = $this->requestStack->getCurrentRequest();
     if ($request == $this->requestStack->getMasterRequest()) {
         $this->sessionStrategy->onAuthentication($request, $token);
     }
     //TODO: implement rememberme
     $this->tokenStorage->setToken($token);
 }