/** * @param $perspective * @return \Symfony\Component\HttpFoundation\Response */ protected function renderJsonPerspective(Perspective $perspective) { $translator = $this->container->get('translator'); /** @var \Symfony\Bundle\TwigBundle\TwigEngine $templateEngine */ $templateEngine = $this->container->get('templating'); if ($perspective->getName() !== null) { $perspectiveTitle = $perspective->getName(); } else { $perspectiveTitle = $translator->trans('title_perspective'); } $relativePath = $perspective->getValue(); $projectRootDir = realpath($this->container->getParameter('kernel.root_dir') . '/..'); $jsonFilePath = $projectRootDir . '/' . $relativePath; $error = null; if (file_exists($jsonFilePath)) { $records = json_decode(file_get_contents($jsonFilePath), $asAssocArray = true); $jsonLastError = json_last_error(); if ($jsonLastError !== JSON_ERROR_NONE) { $error = $jsonLastError; } } else { $records = []; } $query = sprintf('SELECT * FROM weaving_perspective WHERE per_id = %d', $perspective->getId()); $response = $templateEngine->renderResponse('WeavingTheWebDashboardBundle:Perspective:showPerspective.html.twig', array('active_menu_item' => 'dashboard', 'anonymous_visit' => false, 'error' => $error, 'display_graph' => true, 'enabled_search' => true, 'default_query' => $query, 'records' => $records, 'title' => $perspectiveTitle)); $dateTime = new \DateTime(); $dateInterval = \DateInterval::createFromDateString('2 hours'); $expiresAt = $dateTime->add($dateInterval); $response->setExpires($expiresAt); return $response; }
public function makeImportableJsonPerspective() { $perspective = new Perspective(); $perspective->setType(Perspective::TYPE_JSON); $perspective->setStatus(Perspective::STATUS_IMPORTABLE); $perspective->setCreationDate(new \DateTime()); return $perspective; }
/** * @param \WeavingTheWeb\Bundle\DashboardBundle\Entity\Perspective $perspective * @return \Symfony\Component\Validator\ConstraintViolationListInterface */ protected function validatePerspectiveValue($perspective) { $queryConstraint = new Query(); return $this->validator->validateValue($perspective->getValue(), $queryConstraint, $queryConstraint::GROUP_PUBLIC_QUERIES); }