/** * * {@inheritdoc} * */ public function getParameters(View $view, FormFactoryInterface $formFactoty, Request $request) { $searchQuery = ['index' => $view->getContentType()->getEnvironment()->getAlias(), 'type' => $view->getContentType()->getName(), 'search_type' => 'count', 'body' => $view->getOptions()['aggsQuery']]; $retDoc = $this->client->search($searchQuery); foreach (explode('.', $view->getOptions()['pathToBuckets']) as $attribute) { $retDoc = $retDoc[$attribute]; } return ['keywords' => $retDoc, 'view' => $view, 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment()]; }
/** * * {@inheritdoc} * */ public function getParameters(View $view, FormFactoryInterface $formFactoty, Request $request) { try { $renderQuery = $this->twig->createTemplate($view->getOptions()['body'])->render(['view' => $view, 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment()]); } catch (\Exception $e) { $renderQuery = "{}"; } $searchQuery = ['index' => $view->getContentType()->getEnvironment()->getAlias(), 'type' => $view->getContentType()->getName(), 'body' => $renderQuery, 'size' => $view->getOptions()['size']]; $result = $this->client->search($searchQuery); try { $render = $this->twig->createTemplate($view->getOptions()['template'])->render(['view' => $view, 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment(), 'result' => $result]); } catch (\Exception $e) { $render = "Something went wrong with the template of the view " . $view->getName() . " for the content type " . $view->getContentType()->getName() . " (" . $e->getMessage() . ")"; } return ['render' => $render, 'view' => $view, 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment()]; }
/** * @Route("/views/calendar/search/{view}.json", name="views.calendar.search", defaults={"_format": "json"})) * @Method({"GET"}) */ public function searchAction(View $view, Request $request) { $search = new Search(); $form = $this->createForm(SearchFormType::class, $search, ['method' => 'GET', 'light' => true]); $form->handleRequest($request); $search = $form->getData(); $body = $this->getSearchService()->generateSearchBody($search); /**@var \DateTime $from */ /**@var \DateTime $to */ $from = new \DateTime($request->query->get('from')); $to = new \DateTime($request->query->get('to')); $field = $view->getContentType()->getFieldType()->__get('ems_' . $view->getOptions()['dateRangeField']); if (empty($body['query']['bool']['must'])) { $body['query']['bool']['must'] = []; } if ($field->getMappingOptions()['nested']) { $body['query']['bool']['must'][] = ['nested' => ['path' => $field->getName(), 'query' => ['range' => [$field->getName() . '.' . $field->getMappingOptions()['fromDateMachineName'] => ['lte' => $to->format('c')]]]]]; $body['query']['bool']['must'][] = ['nested' => ['path' => $field->getName(), 'query' => ['range' => [$field->getName() . '.' . $field->getMappingOptions()['toDateMachineName'] => ['gte' => $from->format('c')]]]]]; } else { $body['query']['bool']['must'][] = ['range' => [$field->getMappingOptions()['fromDateMachineName'] => ['lte' => $to->format('c')]]]; $body['query']['bool']['must'][] = ['range' => [$field->getMappingOptions()['toDateMachineName'] => ['gte' => $from->format('c')]]]; } $searchQuery = ['index' => $view->getContentType()->getEnvironment()->getAlias(), 'type' => $view->getContentType()->getName(), "from" => 0, "size" => 1000, "body" => $body]; $data = $this->getElasticsearch()->search($searchQuery); return $this->render('view/custom/calendar_search.json.twig', ['success' => true, 'data' => $data, 'field' => $view->getContentType()->getFieldType()->__get('ems_' . $view->getOptions()['dateRangeField']), 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment()]); }
function __construct(View $view, Session $session) { $this->session = $session; $this->criterion = []; $contentType = $view->getContentType(); $rootFieldType = $contentType->getFieldType(); if (!empty($view->getOptions()['categoryFieldPath']) && ($categoryField = $rootFieldType->getChildByPath($view->getOptions()['categoryFieldPath']))) { $dataField = new DataField(); $dataField->setFieldType($categoryField); $this->setCategory($dataField); } $criteriaField = $rootFieldType; if ($view->getOptions()['criteriaMode'] == 'internal') { $criteriaField = $rootFieldType->__get('ems_' . $view->getOptions()['criteriaField']); } else { if ($view->getOptions()['criteriaMode'] == 'another') { } else { throw new \Exception('Should never happen'); } } $fieldPaths = preg_split("/\\r\\n|\\r|\\n/", $view->getOptions()['criteriaFieldPaths']); foreach ($fieldPaths as $path) { $child = $criteriaField->getChildByPath($path); if ($child) { $dataField = new DataField(); $dataField->setFieldType($child); $this->criterion[$child->getName()] = $dataField; } else { $this->session->getFlashBag()->add('warning', 'Field path not found ' . $path); } } }
/** * * {@inheritdoc} * */ public function getParameters(View $view, FormFactoryInterface $formFactoty, Request $request) { $search = new Search(); $form = $formFactoty->create(SearchFormType::class, $search, ['method' => 'GET', 'light' => true]); return ['view' => $view, 'field' => $view->getContentType()->getFieldType()->__get('ems_' . $view->getOptions()['dateRangeField']), 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment(), 'form' => $form->createView()]; }
/** * * @Route("/views/criteria/removeCriterion/{view}", name="views.criteria.remove")) * @Method({"POST"}) */ public function removeCriteriaAction(View $view, Request $request) { $filters = $request->request->get('filters'); $target = $request->request->get('target'); $criteriaField = $request->request->get('criteriaField'); $category = $request->request->get('category'); //TODO securtity test if ($view->getOptions()['criteriaMode'] == 'internal') { /**@var DataService $dataService*/ $this->dataService = $this->get('ems.service.data'); $structuredTarget = explode(":", $target); $type = $structuredTarget[0]; $ouuid = $structuredTarget[1]; /**@var Session $session */ $session = $this->get('session'); /**@var Revision $revision*/ $revision = $this->dataService->getNewestRevision($type, $ouuid); if ($revision->getDraft()) { $this->addFlash('warning', 'Impossible to update ' . $revision . ' has there is a draft in progress'); return $this->render('ajax/notification.json.twig', ['success' => false]); } try { if ($revision = $this->removeCriteria($filters, $revision, $criteriaField)) { $this->dataService->finalizeDraft($revision); } } catch (LockedException $e) { $this->addFlash('warning', 'Impossible to update ' . $revision . ' has the revision is locked by ' . $revision->getLockBy()); return $this->render('ajax/notification.json.twig', ['success' => false]); } } else { $rawData = $filters; $targetFieldName = null; if ($view->getContentType()->getCategoryField() && $category) { $rawData[$view->getContentType()->getCategoryField()] = $category; } if (isset($view->getOptions()['targetField'])) { $pathTargetField = $view->getOptions()['targetField']; $pathTargetField = explode('.', $pathTargetField); $targetFieldName = array_pop($pathTargetField); $rawData[$targetFieldName] = $target; } $revision = $this->removeCriteriaRevision($view, $rawData, $targetFieldName); if ($revision) { $this->getDataService()->finalizeDraft($revision); } } return $this->render('ajax/notification.json.twig', ['success' => true]); }
/** * * {@inheritdoc} * */ public function getParameters(View $view, FormFactoryInterface $formFactoty, Request $request) { $criteriaUpdateConfig = new CriteriaUpdateConfig($view, $request->getSession()); $form = $formFactoty->create(CriteriaFilterType::class, $criteriaUpdateConfig, ['view' => $view, 'method' => 'GET', 'action' => $this->router->generate('views.criteria.table', ['view' => $view->getId()])]); $form->handleRequest($request); $categoryField = false; if ($view->getContentType()->getCategoryField()) { $categoryField = $view->getContentType()->getFieldType()->__get('ems_' . $view->getContentType()->getCategoryField()); } return ['criteriaField' => $view->getOptions()['criteriaField'], 'categoryField' => $categoryField, 'view' => $view, 'contentType' => $view->getContentType(), 'environment' => $view->getContentType()->getEnvironment(), 'criterionList' => $view->getContentType()->getFieldType()->__get('ems_' . $view->getOptions()['criteriaField']), 'form' => $form->createView()]; }