form_data = $form_data; } /** * Render form * * * @param bool $echo * @return string */ function render_form( $echo = true ) { if ( empty( $this->form_data['fields'] ) ) return ''; $class = 'form-table um-form-table ' . ( ! empty( $this->form_data['class'] ) ? $this->form_data['class'] : '' ); $class_attr = ' class="' . $class . '" '; ob_start(); foreach ( $this->form_data['fields'] as $field_data ) { if ( isset( $field_data['type'] ) && 'hidden' == $field_data['type'] ) echo $this->render_form_row( $field_data ); } if ( empty( $this->form_data['without_wrapper'] ) ) { ?> > form_data['fields'] as $field_data ) { if ( isset( $field_data['type'] ) && 'hidden' != $field_data['type'] ) echo $this->render_form_row( $field_data ); } if ( empty( $this->form_data['without_wrapper'] ) ) { ?>
form_data['prefix_id'] ) ? ' data-prefix="' . $this->form_data['prefix_id'] . '" ' : ''; $html = ''; if ( $data['type'] != 'hidden' ) { if ( ! empty( $this->form_data['div_line'] ) ) { if ( strpos( $this->form_data['class'], 'um-top-label' ) !== false ) { $html .= '
' . $this->render_field_label( $data ); if ( method_exists( $this, 'render_' . $data['type'] ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { $html .= apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data ); } if ( ! empty( $data['description'] ) ) $html .= '

' . $data['description'] . '

'; $html .= '
'; } else { if ( ! empty( $data['without_label'] ) ) { $html .= '
'; if ( method_exists( $this, 'render_' . $data['type'] ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { $html .= apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data ); } if ( ! empty( $data['description'] ) ) $html .= '

' . $data['description'] . '

'; $html .= '
'; } else { $html .= '
' . $this->render_field_label( $data ); if ( method_exists( $this, 'render_' . $data['type'] ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { $html .= apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data ); } if ( ! empty( $data['description'] ) ) $html .= '

' . $data['description'] . '

'; $html .= '
'; } } } else { if ( strpos( $this->form_data['class'], 'um-top-label' ) !== false ) { $html .= ' ' . $this->render_field_label( $data ); if ( method_exists( $this, 'render_' . $data['type'] ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { $html .= apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data ); } if ( ! empty( $data['description'] ) ) $html .= '

' . $data['description'] . '

'; $html .= ''; } else { if ( ! empty( $data['without_label'] ) ) { $html .= ' '; if ( method_exists( $this, 'render_' . $data['type'] ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { $html .= apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data ); } if ( ! empty( $data['description'] ) ) $html .= '

' . $data['description'] . '

'; $html .= ''; } else { $html .= ' ' . $this->render_field_label( $data ) . ' '; if ( method_exists( $this, 'render_' . $data['type'] ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { $html .= apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data ); } if ( ! empty( $data['description'] ) ) $html .= '

' . $data['description'] . '

'; $html .= ''; } } } } else { if ( method_exists( $this, 'render_' . $data['type'] ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { $html .= apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data ); } } return $html; } function render_field_label( $data ) { if ( empty( $data['label'] ) ) return false; $id = ! empty( $data['id1'] ) ? $data['id1'] : $data['id']; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $id; $for_attr = ' for="' . $id . '" '; $label = $data['label']; $tooltip = ! empty( $data['tooltip'] ) ? UM()->tooltip( $data['tooltip'], false, false ) : ''; return ""; } function render_hidden( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $value_attr = ' value="' . $value . '" '; $html = ""; return $html; } function render_text( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : ''; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $value_attr = ' value="' . $value . '" '; $html = ""; return $html; } function render_color( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? ' um-' . $field_data['size'] . '-field ' : ' um-long-field '; $class .= ' um-admin-colorpicker '; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : ''; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $value_attr = ' value="' . $value . '" '; $html = ""; return $html; } function render_icon( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $value_attr = ' value="' . $value . '" '; $html = '' . __( 'Choose Icon', 'ultimate-member' ) . ' '; if ( ! empty( $value ) ) { $html .= ''; } else { $html .= __( 'No Icon', 'ultimate-member' ); } $html .= ''; if ( get_post_meta( get_the_ID(), '_um_icon', true ) ) { $html .= ''; } else { $html .= ''; } $html .= ''; return $html; } function render_datepicker( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : ''; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $value_attr = ' value="' . $value . '" '; $html = ""; return $html; } function render_inline_texts( $field_data ) { if ( empty( $field_data['id1'] ) ) return false; $i = 1; $fields = array(); while( ! empty( $field_data['id' . $i] ) ) { $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'. $i]; $id_attr = ' id="' . $id . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'. $i] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : ''; $name = $field_data['id'. $i]; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'. $i] ) ? $field_data['default'. $i] : ''; $value = isset( $field_data['value'. $i] ) ? $field_data['value'. $i] : $default; $value_attr = ' value="' . $value . '" '; $fields[$i] = ""; $i++; } $html = vsprintf( $field_data['mask'], $fields ); return $html; } function render_textarea( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $rows = ! empty( $field_data['args']['textarea_rows'] ) ? ' rows="' . $field_data['args']['textarea_rows'] . '" ' : ''; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $html = ""; return $html; } function render_wp_editor( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; ob_start(); wp_editor( $value, $id, array( 'textarea_name' => $name, 'textarea_rows' => 20, 'editor_height' => 425, 'wpautop' => false, 'media_buttons' => false, 'editor_class' => $class ) ); $html = ob_get_clean(); return $html; } function render_checkbox( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $id_attr_hidden = ' id="' . $id . '_hidden" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = ( '' !== $field_data['value'] ) ? $field_data['value'] : $default; /*$value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $value = ! empty( $field_data['value'] ) ? $field_data['value'] : 0; */ $html = " "; return $html; } function render_select( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $multiple = ! empty( $field_data['multi'] ) ? 'multiple' : ''; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . $id . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name = $name . ( ! empty( $field_data['multi'] ) ? '[]' : '' ); $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = isset( $field_data['value'] ) ? $field_data['value'] : $default; $options = ''; foreach ( $field_data['options'] as $key=>$option ) { if ( ! empty( $field_data['multi'] ) ) { if ( ! is_array( $value ) || empty( $value ) ) $value = array(); $options .= ''; } else { $options .= ''; } } $html = ""; return $html; } function render_multi_selects( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'], 'id_attr' => $id ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name = "{$name}[]"; $name_attr = ' name="' . $name . '" '; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $values = isset( $field_data['value'] ) ? $field_data['value'] : $default; $options = ''; foreach ( $field_data['options'] as $key=>$option ) { $options .= ''; } $html = ""; $html .= "{$field_data['add_text']}"; return $html; } function render_multi_checkbox( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $class_attr = ' class="um-forms-field ' . $class . '" '; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $values = ( '' !== $field_data['value'] ) ? $field_data['value'] : $default; $i = 0; $html = ''; $columns = ( ! empty( $field_data['columns'] ) && is_numeric( $field_data['columns'] ) ) ? $field_data['columns'] : 1; while ( $i < $columns ) { $per_page = ceil( count( $field_data['options'] ) / $columns ); $section_fields_per_page = array_slice( $field_data['options'], $i*$per_page, $per_page ); $html .= ''; foreach ( $section_fields_per_page as $k => $title ) { $id_attr = ' id="' . $id . '_' . $k . '" '; $for_attr = ' for="' . $id . '_' . $k . '" '; $name_attr = ' name="' . $name . '[' . $k . ']" '; $html .= ""; } $html .= ''; $i++; } return $html; } function render_multi_text( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $size = ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field'; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class_attr = ' class="um-forms-field ' . $class . '" '; $data = array( 'field_id' => $field_data['id'], 'id_attr' => $id ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name = "{$name}[]"; $name_attr = ' name="' . $name . '" '; //$values = ! empty( $field_data['value'] ) ? $field_data['value'] : ( ! empty( $field_data['default'] ) ? $field_data['default'] : '' ); $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $values = isset( $field_data['value'] ) ? $field_data['value'] : $default; $html = ""; $html .= "{$field_data['add_text']}"; return $html; } function render_media( $field_data ) { if ( empty( $field_data['id'] ) ) return false; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $class_attr = ' class="um-forms-field um-media-upload-data-url ' . $class . '"'; $data = array( 'field_id' => $field_data['id'], ); if ( ! empty( $field_data['default']['url'] ) ) $data['default'] = esc_attr( $field_data['default']['url'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= " data-{$key}=\"{$value}\" "; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $default = isset( $field_data['default'] ) ? $field_data['default'] : ''; $value = ! empty( $field_data['value'] ) ? $field_data['value'] : $default; $upload_frame_title = ! empty( $field_data['upload_frame_title'] ) ? $field_data['upload_frame_title'] : __( 'Select media', 'ultimate-member' ); $image_id = ! empty( $value['id'] ) ? $value['id'] : ''; $image_width = ! empty( $value['width'] ) ? $value['width'] : ''; $image_height = ! empty( $value['height'] ) ? $value['height'] : ''; $image_thumbnail = ! empty( $value['thumbnail'] ) ? $value['thumbnail'] : ''; $image_url = ! empty( $value['url'] ) ? $value['url'] : ''; $html = "
" . "" . "" . "" . "" . ""; if ( ! isset( $field_data['preview'] ) || $field_data['preview'] !== false ) { $html .= '
'; } if ( ! empty( $field_data['url'] ) ) { $html .= '
'; } $html .= '
'; return $html; } } }