protected function getObjectsForAction(Request $request) { $doctrine = $this->getDoctrine()->getManager(); $sessionRepo = $doctrine->getRepository('QuestionKeyBundle:VisitorSession'); $sessionRanTreeRepo = $doctrine->getRepository('QuestionKeyBundle:VisitorSessionRanTreeVersion'); $treeRepo = $doctrine->getRepository('QuestionKeyBundle:Tree'); $treeVersionRepo = $doctrine->getRepository('QuestionKeyBundle:TreeVersion'); $nodeRepo = $doctrine->getRepository('QuestionKeyBundle:Node'); $nodeOptionRepo = $doctrine->getRepository('QuestionKeyBundle:NodeOption'); $isIPInIPConfig = new IsIPInIPConfig($this->container->hasParameter('internal_ips') ? $this->container->getParameter('internal_ips') : ''); // Session! if ($request->query->get("session_id")) { $this->session = $sessionRepo->findOneByPublicId($request->query->get("session_id")); } if (!$this->session) { $this->session = new VisitorSession(); $this->session->setIsInternalIP($isIPInIPConfig->checkIP($request->getClientIp())); $doctrine->persist($this->session); $doctrine->flush(); // TODO check for collisions of public ID } // Tree! if ($request->query->get("ran_tree_version_id")) { $this->sessionRanTreeVersion = $sessionRanTreeRepo->findOneByPublicId($request->query->get("ran_tree_version_id")); // include session to } else { if ($request->query->get("tree_id")) { $this->tree = $treeRepo->findOneByPublicId($request->query->get("tree_id")); if ($this->tree) { if ($request->query->get("tree_version_id")) { $this->treeVersion = $treeVersionRepo->findOneBy(array('publicId' => $request->query->get("tree_version_id"), 'tree' => $this->tree)); // TODO was this version ever published? } else { $this->treeVersion = $treeVersionRepo->findPublishedVersionForTree($this->tree); } } } } if ($this->sessionRanTreeVersion && !$this->treeVersion) { $this->treeVersion = $this->sessionRanTreeVersion->getTreeVersion(); $this->tree = $this->treeVersion->getTree(); } else { if ($this->treeVersion && !$this->sessionRanTreeVersion) { $this->sessionRanTreeVersion = new VisitorSessionRanTreeVersion(); $this->sessionRanTreeVersion->setTreeVersion($this->treeVersion); $this->sessionRanTreeVersion->setVisitorSession($this->session); $this->sessionRanTreeVersion->setIsInternalIP($isIPInIPConfig->checkIP($request->getClientIp())); $doctrine->persist($this->sessionRanTreeVersion); $doctrine->flush(); // TODO check for collisions of public ID } } // Node! if ($this->treeVersion && $this->sessionRanTreeVersion && $request->query->get("node_id")) { $this->node = $request->query->get("node_id") ? $nodeRepo->findOneBy(array('treeVersion' => $this->treeVersion, 'publicId' => $request->query->get("node_id"))) : null; if ($this->node) { $this->nodeOption = $request->query->get("node_option_id") ? $nodeOptionRepo->findOneBy(array('treeVersion' => $this->treeVersion, 'publicId' => $request->query->get("node_option_id"))) : null; $sessionOnNode = new VisitorSessionOnNode(); $sessionOnNode->setNode($this->node); $sessionOnNode->setNodeOption($this->nodeOption); $sessionOnNode->setSessionRanTreeVersion($this->sessionRanTreeVersion); $sessionOnNode->setGoneBackTo(filter_var($request->query->get("gone_back_to"), FILTER_VALIDATE_BOOLEAN)); $doctrine->persist($sessionOnNode); $doctrine->flush(); } } // Out! $out = array('session' => array('id' => $this->session->getPublicId()), 'session_ran_tree' => null); if ($this->sessionRanTreeVersion) { $out['session_ran_tree_version'] = array('id' => $this->sessionRanTreeVersion->getPublicId()); } return $out; }
/** * @dataProvider dataForTestFalse */ function testFalse($config, $ip) { $isIPInIPConfig = new IsIPInIPConfig($config); $this->assertFalse($isIPInIPConfig->checkIP($ip)); }