Example #1
0
 /**
  *
  * {@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()];
 }
Example #2
0
 /**
  *
  * {@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()];
 }
Example #3
0
 /**
  * @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);
         }
     }
 }
Example #5
0
 /**
  *
  * {@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()];
 }
Example #6
0
 /**
  *
  * @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]);
 }
Example #7
0
 /**
  *
  * {@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()];
 }