fields ) ) { return $this->fields; } $this->register_field_types(); return $this->fields; } /** * Register the field types * * @return void */ private function register_field_types() { require_once __DIR__ . '/fields/class-abstract-fields.php'; require_once __DIR__ . '/fields/class-field-text.php'; require_once __DIR__ . '/fields/class-field-name.php'; require_once __DIR__ . '/fields/class-field-email.php'; require_once __DIR__ . '/fields/class-field-textarea.php'; require_once __DIR__ . '/fields/class-field-column.php'; require_once __DIR__ . '/fields/class-field-checkbox.php'; require_once __DIR__ . '/fields/class-field-radio.php'; require_once __DIR__ . '/fields/class-field-dropdown.php'; require_once __DIR__ . '/fields/class-field-multidropdown.php'; require_once __DIR__ . '/fields/class-field-url.php'; require_once __DIR__ . '/fields/class-field-sectionbreak.php'; require_once __DIR__ . '/fields/class-field-html.php'; require_once __DIR__ . '/fields/class-field-hidden.php'; require_once __DIR__ . '/fields/class-field-image.php'; require_once __DIR__ . '/fields/class-field-recaptcha.php'; require_once __DIR__ . '/fields/class-field-date.php'; $fields = [ 'text_field' => new WeForms_Form_Field_Text(), 'name_field' => new WeForms_Form_Field_Name(), 'date_field' => new WeForms_Form_Field_Date_Free(), 'email_address' => new WeForms_Form_Field_Email(), 'textarea_field' => new WeForms_Form_Field_Textarea(), 'radio_field' => new WeForms_Form_Field_Radio(), 'checkbox_field' => new WeForms_Form_Field_Checkbox(), 'column_field' => new WeForms_Form_Field_Column(), 'dropdown_field' => new WeForms_Form_Field_Dropdown(), 'multiple_select' => new WeForms_Form_Field_MultiDropdown(), 'website_url' => new WeForms_Form_Field_URL(), 'section_break' => new WeForms_Form_Field_SectionBreak(), 'custom_html' => new WeForms_Form_Field_HTML(), 'custom_hidden_field' => new WeForms_Form_Field_Hidden(), 'image_upload' => new WeForms_Form_Field_Image(), 'recaptcha' => new WeForms_Form_Field_reCaptcha(), ]; $this->fields = apply_filters( 'weforms_form_fields', $fields ); } /** * Get field groups * * @return array */ public function get_field_groups() { $groups = [ [ 'title' => __( 'Custom Fields', 'weforms' ), 'id' => 'custom-fields', 'fields' => apply_filters( 'weforms_field_groups_custom', [ 'name_field', 'text_field', 'textarea_field', 'dropdown_field', 'multiple_select', 'radio_field', 'checkbox_field', 'website_url', 'email_address', 'custom_hidden_field', 'image_upload', ] ), ], [ 'title' => __( 'Others', 'weforms' ), 'id' => 'others', 'fields' => apply_filters( 'weforms_field_groups_others', [ 'column_field', 'section_break', 'custom_html', 'recaptcha', ] ), ], ]; return apply_filters( 'weforms_field_groups', $groups ); } /** * Get fields JS setting for the form builder * * @return array */ public function get_js_settings() { $fields = $this->get_fields(); $js_array = []; if ( $fields ) { foreach ( $fields as $type => $object ) { $js_array[ $type ] = $object->get_js_settings(); } } return $js_array; } /** * Render the form fields * * @param int $form_id * @param array $fields * @param array $atts * * @return void */ public function render_fields( $fields, $form_id, $atts = [] ) { if ( !$fields ) { return; } $this->notification = new WeForms_Notification(); $this->notification->set_merge_tags(); $fields = apply_filters( 'weforms_render_fields', $fields, $form_id ); foreach ( $fields as $field ) { if ( !$field_object = $this->field_exists( $field['template'] ) ) { if ( defined( 'WP_DEBUG' && WP_DEBUG ) ) { echo '