/** * 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; }
/** * 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; }