/**
  * Returns all available presentations
  *
  * @return array<string>
  */
 public function getSearchPresentationClass($presentation, $fieldName, $configs = array())
 {
     $event = new OW_Event('base.questions_field_get_label', array('presentation' => $presentation, 'fieldName' => $fieldName, 'configs' => $configs, 'type' => 'edit'));
     OW::getEventManager()->trigger($event);
     $label = $event->getData();
     $class = null;
     $event = new OW_Event('base.questions_field_init', array('type' => 'search', 'presentation' => $presentation, 'fieldName' => $fieldName, 'configs' => $configs));
     OW::getEventManager()->trigger($event);
     $class = $event->getData();
     if (empty($class)) {
         switch ($presentation) {
             case self::QUESTION_PRESENTATION_TEXT:
             case self::QUESTION_PRESENTATION_TEXTAREA:
                 $class = new TextField($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_CHECKBOX:
                 $class = new CheckboxField($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_RADIO:
             case self::QUESTION_PRESENTATION_SELECT:
             case self::QUESTION_PRESENTATION_MULTICHECKBOX:
                 $class = new CheckboxGroup($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_BIRTHDATE:
             case self::QUESTION_PRESENTATION_AGE:
                 $class = new AgeRange($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_RANGE:
                 $class = new Range($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_DATE:
                 $class = new DateRange($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_URL:
                 $class = new TextField($fieldName);
                 $class->addValidator(new UrlValidator());
                 break;
         }
         $value = $this->getQuestionConfig($configs, 'year_range');
         if (!empty($value['from']) && !empty($value['to'])) {
             $class->setMinYear($value['from']);
             $class->setMaxYear($value['to']);
         }
     }
     if (!empty($label)) {
         $class->setLabel($label);
     }
     return $class;
 }
예제 #2
0
 /**
  * Returns all available presentations
  *
  * @return array<string>
  */
 public function getSearchPresentationClass($presentation, $fieldName, $configs = array())
 {
     $event = new OW_Event('base.questions_field_get_label', array('presentation' => $presentation, 'fieldName' => $fieldName, 'configs' => $configs, 'type' => 'edit'));
     OW::getEventManager()->trigger($event);
     $label = $event->getData();
     $class = null;
     $event = new OW_Event('base.questions_field_init', array('type' => 'search', 'presentation' => $presentation, 'fieldName' => $fieldName, 'configs' => $configs));
     OW::getEventManager()->trigger($event);
     $class = $event->getData();
     if (empty($class)) {
         switch ($presentation) {
             case self::QUESTION_PRESENTATION_TEXT:
             case self::QUESTION_PRESENTATION_TEXTAREA:
                 $class = new TextField($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_CHECKBOX:
                 $class = new CheckboxField($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_RADIO:
             case self::QUESTION_PRESENTATION_SELECT:
             case self::QUESTION_PRESENTATION_MULTICHECKBOX:
                 $class = new CheckboxGroup($fieldName);
                 break;
             case self::QUESTION_PRESENTATION_BIRTHDATE:
             case self::QUESTION_PRESENTATION_AGE:
                 $class = new AgeRange($fieldName);
                 if (!empty($configs) && mb_strlen(trim($configs)) > 0) {
                     $configsList = json_decode($configs, true);
                     foreach ($configsList as $name => $value) {
                         if ($name = 'year_range' && isset($value['from']) && isset($value['to'])) {
                             $class->setMinYear($value['from']);
                             $class->setMaxYear($value['to']);
                         }
                     }
                 }
                 $class->addValidator(new DateValidator($class->getMinYear(), $class->getMaxYear()));
                 break;
             case self::QUESTION_PRESENTATION_RANGE:
                 $class = new Range($fieldName);
                 if (empty($this->birthdayConfig)) {
                     $birthday = $this->findQuestionByName("birthdate");
                     if (!empty($birthday)) {
                         $this->birthdayConfig = $birthday->custom;
                     }
                 }
                 $rangeValidator = new RangeValidator();
                 if (!empty($this->birthdayConfig) && mb_strlen(trim($this->birthdayConfig)) > 0) {
                     $configsList = json_decode($this->birthdayConfig, true);
                     foreach ($configsList as $name => $value) {
                         if ($name = 'year_range' && isset($value['from']) && isset($value['to'])) {
                             $class->setMinValue(date("Y") - $value['to']);
                             $class->setMaxValue(date("Y") - $value['from']);
                             $rangeValidator->setMinValue(date("Y") - $value['to']);
                             $rangeValidator->setMaxValue(date("Y") - $value['from']);
                         }
                     }
                 }
                 $class->addValidator($rangeValidator);
                 break;
             case self::QUESTION_PRESENTATION_DATE:
                 $class = new DateRange($fieldName);
                 if (!empty($configs) && mb_strlen(trim($configs)) > 0) {
                     $configsList = json_decode($configs, true);
                     foreach ($configsList as $name => $value) {
                         if ($name = 'year_range' && isset($value['from']) && isset($value['to'])) {
                             $class->setMinYear($value['from']);
                             $class->setMaxYear($value['to']);
                         }
                     }
                 }
                 $class->addValidator(new DateValidator($class->getMinYear(), $class->getMaxYear()));
                 break;
             case self::QUESTION_PRESENTATION_URL:
                 $class = new TextField($fieldName);
                 $class->addValidator(new UrlValidator());
                 break;
         }
         $value = $this->getQuestionConfig($configs, 'year_range');
         if (!empty($value['from']) && !empty($value['to'])) {
             $class->setMinYear($value['from']);
             $class->setMaxYear($value['to']);
         }
     }
     if (!empty($label)) {
         $class->setLabel($label);
     }
     return $class;
 }