/** * Returns all available presentations * * @return array<string> */ public function getPresentationClass($presentation, $fieldName, $configs = null) { $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' => 'main', 'presentation' => $presentation, 'fieldName' => $fieldName, 'configs' => $configs)); OW::getEventManager()->trigger($event); $class = $event->getData(); if (empty($class)) { switch ($presentation) { case self::QUESTION_PRESENTATION_TEXT: $class = new TextField($fieldName); break; case self::QUESTION_PRESENTATION_SELECT: $class = new Selectbox($fieldName); break; case self::QUESTION_PRESENTATION_TEXTAREA: $class = new Textarea($fieldName); break; case self::QUESTION_PRESENTATION_CHECKBOX: $class = new CheckboxField($fieldName); break; case self::QUESTION_PRESENTATION_RADIO: $class = new RadioField($fieldName); break; case self::QUESTION_PRESENTATION_MULTICHECKBOX: $class = new CheckboxGroup($fieldName); break; case self::QUESTION_PRESENTATION_BIRTHDATE: case self::QUESTION_PRESENTATION_AGE: case self::QUESTION_PRESENTATION_DATE: $class = new DateField($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($configs) && mb_strlen(trim($configs)) > 0) { $configsList = json_decode($configs, true); foreach ($configsList as $name => $value) { $minMax = explode("-", $value); if ($name = 'range' && isset($minMax[0]) && isset($minMax[1])) { $class->setMinValue($minMax[0]); $class->setMaxValue($minMax[1]); } } } $class->addValidator(new RangeValidator()); break; case self::QUESTION_PRESENTATION_URL: $class = new TextField($fieldName); $class->addValidator(new UrlValidator()); break; case self::QUESTION_PRESENTATION_PASSWORD: $class = new PasswordField($fieldName); break; } } if (!empty($label)) { $class->setLabel($label); } return $class; }