public function buildConstraint(&$options, FcFieldConstraint $fc_constraint)
 {
     $params = $fc_constraint->getParams();
     $this->match = (bool) $params['match'];
     $this->pattern = $this->buildPattern($params['sets']);
     parent::buildConstraint($options, $fc_constraint);
 }
 public function buildConstraint(&$options, FcFieldConstraint $fc_constraint)
 {
     $params = $fc_constraint->getParams();
     try {
         $value = new \DateTime($params['value']);
         $limit = clone $value;
     } catch (\Exception $e) {
         return;
     }
     $options['constraints'][] = new DateComparison(array('groups' => $this->getGroups($fc_constraint), 'value' => $value, 'message' => $fc_constraint->getMessage(), 'type' => $this->constraints[$params['type']], 'format' => $options['format']));
     switch ($params['type']) {
         case 'greater':
             $limit->modify('+1 day');
         case 'greater_or_equal':
             $attr = 'data-min-date';
             break;
         case 'less':
             $limit->modify('-1 day');
         case 'less_or_equal':
             $attr = 'data-max-date';
             break;
         default:
             return;
     }
     if (!isset($options['attr'])) {
         $options['attr'] = array();
     }
     $options['attr'][$attr] = $limit->format($options['format']);
 }
 public function buildConstraint(&$options, FcFieldConstraint $fc_constraint)
 {
     $callback = function ($object, ExecutionContextInterface $context) use($fc_constraint) {
         $is_valid = false;
         $params = $fc_constraint->getParams();
         $data = $context->getRoot()->getData();
         foreach ($params['fields'] as $field) {
             if (isset($data[$field]) && !empty($data[$field])) {
                 $is_valid = true;
                 break;
             }
         }
         if (!$is_valid) {
             $context->buildViolation($fc_constraint->getMessage())->addViolation();
         }
     };
     $options['constraints'][] = new Callback(array('groups' => $this->getGroups($fc_constraint), 'callback' => $callback));
 }
 public function buildConstraint(&$options, FcFieldConstraint $fc_constraint)
 {
     $params = $fc_constraint->getParams();
     $options['constraints'][] = new Email(array('groups' => $this->getGroups($fc_constraint), 'message' => $fc_constraint->getMessage(), 'strict' => (bool) $params['strict'], 'checkMX' => (bool) $params['strict'], 'checkHost' => (bool) $params['strict']));
 }
 public function getGroups(FcFieldConstraint $fc_constraint)
 {
     return array($fc_constraint->getConstraint() . '_' . $fc_constraint->getFieldId());
 }
 public function buildConstraint(&$options, FcFieldConstraint $fc_constraint)
 {
     $params = $fc_constraint->getParams();
     $options['constraints'][] = new $this->constraints[$params['type']](array('groups' => $this->getGroups($fc_constraint), 'value' => $params['value'], 'message' => $fc_constraint->getMessage()));
 }
 protected function buildFieldConstraint(&$options, FcFieldConstraint $fc_constraint, ConstraintChain $constraint_chain)
 {
     $constraint = $constraint_chain->getConstraint($fc_constraint->getConstraint());
     $constraint->buildConstraint($options, $fc_constraint);
 }
 /**
  * Creates and saves a constraint
  *
  * @param Request $request
  * @param $field_id
  * @param $constraint
  * @return JsonResponse
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  * @throws \Symfony\Component\Security\Core\Exception\AccessDeniedException
  */
 public function doCreateConstraintAction(Request $request, $field_id, $constraint)
 {
     try {
         if (!$request->isXmlHttpRequest()) {
             throw $this->createAccessDeniedException();
         }
         $fc_field = FcFieldQuery::create()->findPk($field_id);
         if (!$fc_field instanceof FcField) {
             throw $this->createNotFoundException();
         }
         $form_action = $this->admin->generateUrl('do_create_constraint', array('id' => $fc_field->getFormId(), 'field_id' => $fc_field->getId(), 'constraint' => $constraint));
         $field_constraint = new FcFieldConstraint();
         $field_constraint->setConstraint($constraint);
         $field_constraint->setFcField($fc_field);
         $form = $this->createForm(new ConstraintCommonType($form_action, $this->container->get('fc.constraint.chain')->getParamsBuilder($constraint, $this->admin->getSubject())), $field_constraint);
         $form->handleRequest($request);
         if ($form->isValid()) {
             $field_constraint->save();
             return new JsonResponse(array('success' => true));
         }
     } catch (\Exception $e) {
         return new JsonResponse(array('success' => false, 'view' => 'Error ' . $e->getCode() . ': ' . $e->getMessage()));
     }
     return new JsonResponse(array('success' => false, 'view' => $this->renderView('FenrizbesFormConstructorBundle:SonataAdmin/FcForm:form.html.twig', array('form' => $form->createView()))));
 }