get_field_default_value($posted_values, $data_name, $meta); $wpcomment_cond_data = wpcomment_get_conditional_data_attributes($meta); // Text|Email|Date|Number $wpcomment_field_attributes = $this->get_attributes($meta, $type); // Set inputs attr into meta $meta['attributes'] = $wpcomment_field_attributes; $field_wrapper_class = $this->field_main_wrapper_classes($meta); // Collapse Fields Section if( $type == 'collapse' ) { $collapse_type = isset($meta['collapse_type']) ? $meta['collapse_type'] : ''; if( $section_started ) { echo '
'; if ($allow_nextprev == 'yes') { echo '
'; echo ''; echo ''; echo '
'; } echo ''; } if ($collapse_type == 'end') { echo '
'; } if ($collapse_type != 'end' ) { echo '

'.$title.'

'; echo '
'; } $section_started = true; $wpcomment_collapse_counter++; } // skip collapse div if ($type == 'collapse') continue; $field_wrapper_div = '
'; $field_html .= apply_filters('wpcomment_field_wrapper_div', $field_wrapper_div, $meta); /** * creating action space to render more addons * * Legacy Hook: wpcomment_rendering_inputs * * Template based load addons Hook: wpcomment_rendering_inputs_{$type} * * Updated by Najeeb on May 24, 2021 * Now the CORE inputs will be rendered via function rather hooks **/ ob_start(); $core_inputs = $this->get_core_inputs(); if( in_array($type, $core_inputs) ) { $this->render_input_template($meta, $default_value); } do_action("wpcomment_rendering_inputs_{$type}", $meta, $default_value); $field_html .= ob_get_clean(); $field_html .= '
'; if( count(self::$fields) == $wpcomment_field_counter && $section_started ) { $field_html .= '
'; } // Filter: nmforms_input_htmls // @TODO need to change with relevant name echo apply_filters("nmforms_input_html", $field_html, $meta, $default_value); } } function render_input_template($meta, $default_value){ $type = isset($meta['type']) ? $meta['type'] : ''; $template_path = "frontend/inputs/{$type}.php"; $template_vars = array( 'field_meta' => $meta, 'default_value' => $default_value ); $template_vars = apply_filters('wpcomment_input_templates_vars', $template_vars, $this); wpcomment_load_input_templates( $template_path, $template_vars ); } /** * Field Main Wrapper Classes * * @hook wpcomment_field_main_wrapper_class */ function field_main_wrapper_classes($meta) { $width = $this->field_wrapper_width($meta); $dataname = isset($meta['data_name']) ? sanitize_key($meta['data_name']): ''; $classes = array(); $classes[] = 'wpcomment-field-wrapper'; $classes[] = 'wpcomment-col'; $classes[] = 'col-md-'. $width; $classes[] = $dataname; $classes[] = "wpcomment-wrapper_outer-{$dataname}"; $wrapper_classes = implode(' ',$classes); $wrapper_classes = apply_filters('wpcomment_field_main_wrapper_class', $wrapper_classes, $classes, $meta); return $wrapper_classes; } /** * Field Colunm Width * * @hook wpcomment_{$field_type}_input_meta_width */ function field_wrapper_width($input_meta) { $field_column = isset($input_meta['width'] ) ? $input_meta['width']: 12; // Check width has old settings if( strpos( $field_column, '%' ) !== false ) { $field_column = 12; } elseif( intval($field_column) > 12 ) { $field_column = 12; } return apply_filters("wpcomment_input_meta_width", $field_column, $input_meta); } /** * Rendering form extra contents */ function form_contents(){ ob_start(); wpcomment_load_input_templates( 'frontend/component/form-data.php', apply_filters('wpcomment_form_extra_contents', $this) ); echo ob_get_clean(); } /** * Check If PPOM Fields Empty */ function has_wpcomment_fields(){ $return = false; if( self::$fields ) { $return = true; } return apply_filters('has_wpcomment_fields', $return); } /** * Get default input/posted values * * @return defual_value */ function get_field_default_value($posted_values, $data_name, $meta){ $default_value = isset($meta['default_value'] ) ? $meta['default_value']: ''; $type = isset($meta['type']) ? $meta['type'] : ''; // current values from $_GET/$_POST if( isset($posted_values[$data_name]) ) { switch ($type) { case 'image': $image_data = $posted_values[$data_name]; unset($default_value); foreach($image_data as $data){ $default_value[] = json_decode( stripslashes($data), true); } break; default: $default_value = $posted_values[$data_name]; break; } } else if( isset($_GET[$data_name]) ) { // When Cart Edit addon used $default_value = sanitize_text_field($_GET[$data_name]); }else if( isset($_POST['wp-comment-fields']['fields'][$data_name]) && apply_filters('wpcomment_retain_after_add_to_cart', true) ) { $default_value = sanitize_text_field($_POST['wp-comment-fields']['fields'][$data_name]); } else { // Default values in settings switch ($type) { case 'textarea': if( is_numeric($default_value) ) { $content_post = get_post( intval($default_value) ); $content = !empty($content_post) ? $content_post->post_content : ''; $content = apply_filters('the_content', $content); $default_value = str_replace(']]>', ']]>', $content); } break; case 'checkbox': $default_value = isset($meta['checked']) ? explode("\r\n", $meta['checked']) : ''; break; case 'select': case 'radio': case 'timezone': case 'palettes': case 'image': case 'cropper': $default_value = isset($meta['selected']) ? $meta['selected'] : ''; break; } } // Stripslashes: default values $default_value = ! is_array($default_value) ? stripslashes($default_value) : $default_value; return apply_filters("wpcomment_field_default_value", $default_value, $meta); } /** * Get PPOM inputs */ function get_core_inputs(){ $coreinputs = array( 'text', 'textarea', 'select', 'radio', 'checkbox', 'email', 'date', 'number', 'hidden', 'daterange', 'color', 'file', 'image', 'timezone', 'section', 'palettes', 'divider' ); return apply_filters('wpcomment_core_input_types', $coreinputs); } // Since 15.1: checking if all meta has unique datanames public function has_unique_datanames() { if( ! self::$fields ) return false; $has_unique = true; $datanames_array = array(); // wpcomment_pa(self::$fields); foreach( self::$fields as $field ) { $type = isset($field['type']) ? $field['type'] : ''; // ignore collapased fields if( $type == 'collapse' ) continue; if( !isset($field['data_name']) ) { $has_unique = false; break; } if( in_array($field['data_name'], $datanames_array) ) { $has_unique = false; break; } $datanames_array[] = $field['data_name']; } return apply_filters('wpcomment_has_unique_fields', $has_unique, $this); } // While rendering fields return attributes for fields function get_attributes($field_meta, $type) { $wpcomment_attribtues = array(); $wpcomment_attribtues['data-errormsg'] = isset($field_meta['error_message']) ? wpcomment_wpml_translate($field_meta['error_message'], 'PPOM') : null; switch( $type ) { case 'text': $wpcomment_attribtues['maxlength'] = isset($field_meta['maxlength']) ? $field_meta['maxlength'] : null; $wpcomment_attribtues['minlength'] = isset($field_meta['minlength']) ? $field_meta['minlength'] : null; break; case 'textarea': $wpcomment_attribtues['maxlength'] = isset($field_meta['max_length']) ? $field_meta['max_length'] : null; break; case 'number': $wpcomment_attribtues['min'] = isset($field_meta['min']) ? $field_meta['min'] : null; $wpcomment_attribtues['max'] = isset($field_meta['max']) ? $field_meta['max'] : null; $wpcomment_attribtues['step'] = isset($field_meta['step']) ? $field_meta['step'] : null; break; } return apply_filters('wpcomment_field_attributes', $wpcomment_attribtues, $field_meta, $type); } }