form_data = $form_data; } } /** * Set Form Data * * @param $data * * @return $this */ function set_data( $data ) { $this->form_data = $data; return $this; } /** * Render form * * * @param bool $echo * @return string */ public 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'] ) ) { ?>
array( 'href' => array(), 'title' => array(), 'target' => array(), 'class' => array(), 'onclick' => array(), ), 'button' => array( 'class' => array(), ), 'i' => array( 'class' => array(), ), 'span' => array( 'class' => array(), ), 'br' => array(), 'em' => array(), 'strong' => array( 'style' => array() ), ); $data['value'] = wp_kses( $data['value'], $arr_kses ); } } $conditional = ! empty( $data['conditional'] ) ? 'data-conditional="' . esc_attr( json_encode( $data['conditional'] ) ) . '"' : ''; $prefix_attr = ! empty( $this->form_data['prefix_id'] ) ? ' data-prefix="' . esc_attr( $this->form_data['prefix_id'] ) . '" ' : ''; $type_attr = ' data-field_type="' . esc_attr( $data['type'] ) . '" '; $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 .= $this->render_field_by_hook( $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 .= $this->render_field_by_hook( $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 .= $this->render_field_by_hook( $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 .= $this->render_field_by_hook( $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 .= $this->render_field_by_hook( $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 .= $this->render_field_by_hook( $data ); } if ( ! empty( $data['description'] ) ) { $html .= '

' . $data['description'] . '

'; } $html .= ''; } } } } else { $html .= $this->render_hidden( $data ); } return $html; } /** * @param $data * * @return mixed|void */ function render_field_by_hook( $data ) { /** * UM hook * * @type filter * @title um_render_field_type_{$type} * @description Render admin form field by hook * @input_vars * [{"var":"$html","type":"string","desc":"Field's HTML"}, * {"var":"$data","type":"array","desc":"Field's data"}, * {"var":"$form_data","type":"array","desc":"Form data"}, * {"var":"$admin_form","type":"object","desc":"Admin_Forms class object"}] * @change_log * ["Since: 2.0"] * @usage add_filter( 'um_render_field_type_{$type}', 'function_name', 10, 4 ); * @example * */ return apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data, $this ); } /** * @param $data * * @return bool|string */ 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="' . esc_attr( $id ) . '" '; $label = $data['label']; if ( isset( $data['required'] ) && $data['required'] ) { $label = $label . '*'; } $tooltip = ! empty( $data['tooltip'] ) ? UM()->tooltip( $data['tooltip'], false, false ) : ''; return ""; } /** * @param $field_data * * @return bool|string */ function render_hidden( $field_data ) { if ( empty( $field_data['id'] ) ) { return ''; } $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . esc_attr( $id ) . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class_attr = ' class="um-forms-field ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . $value . '" '; $html = ""; return $html; } /** * Render text field * * @param $field_data * * @return bool|string */ 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="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); if ( ! empty( $field_data['attr'] ) && is_array( $field_data['attr'] ) ){ $data = array_merge( $data, $field_data['attr'] ); } $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . esc_attr( $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 . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . esc_attr( $value ) . '" '; $html = ""; return $html; } /** * Render text field * * @param $field_data * * @return bool|string */ function render_number( $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="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); if ( ! empty( $field_data['attr'] ) && is_array( $field_data['attr'] ) ){ $data = array_merge( $data, $field_data['attr'] ); } $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . esc_attr( $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 . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . esc_attr( $value ) . '" '; $html = ""; return $html; } /** * @param $field_data * * @return bool|string */ 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="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . esc_attr( $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 . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . $value . '" '; $html = ""; return $html; } /** * @param $field_data * * @return bool|string */ public function render_icon( $field_data ) { if ( empty( $field_data['id'] ) ) { return false; } $html = ''; $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . esc_attr( $id ) . '" '; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . esc_attr( $name ) . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . esc_attr( $value ) . '" '; UM()->setup()->set_icons_options(); $um_icons_list = get_option( 'um_icons_list' ); $first_activation_date = get_option( 'um_first_activation_date', false ); // @todo new version if ( empty( $first_activation_date ) || $first_activation_date >= 1716336000 || empty( $value ) || array_key_exists( $value, $um_icons_list ) ) { $html .= ''; } else { // Required modal scripts for proper functioning UM()->admin()->enqueue()->load_modal(); $html .= ''; $html .= '' . esc_html__( 'The selected icon is using an outdated version. Please select the icon above to use latest version.', 'ultimate-member' ) . ' '; $html .= ''; $html .= ''; $html .= ''; $html .= ''; // Required include the fonticons modal *.php file. UM()->metabox()->init_icon = true; } return $html; } /** * @param $field_data * * @return bool|string */ public function render_users_dropdown( $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="' . esc_attr( $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 um-user-select-field' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'], 'avatar' => ! empty( $field_data['avatar'] ) ? 1 : 0, ); if ( ! empty( $field_data['data'] ) && is_array( $field_data['data'] ) ) { $data = array_merge( $data, $field_data['data'] ); } $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $hidden_name_attr = ' name="' . $name . '" '; $name = $name . ( ! empty( $field_data['multi'] ) ? '[]' : '' ); $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $users = array(); if ( ! empty( $value ) ) { $users = get_users( array( 'include' => $value, 'fields' => array( 'ID', 'user_login' ), ) ); } $options = ''; if ( ! empty( $users ) ) { foreach ( $users as $user ) { if ( ! empty( $field_data['avatar'] ) ) { $url = get_avatar_url( $user->ID, 'size=20' ); $options .= ''; } else { $options .= ''; } } } $placeholder = ! empty( $field_data['placeholder'] ) ? $field_data['placeholder'] : __( 'Select Users', 'ultimate-member' ); $hidden = ''; if ( ! empty( $multiple ) ) { $hidden = ""; } else { $options = '' . $options; } $html = "$hidden"; return $html; } /** * @param $field_data * * @return bool|string */ function render_sortable_items( $field_data ) { if ( empty( $field_data['id'] ) ) { return false; } if ( empty( $field_data['items'] ) ) { return false; } $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . esc_attr( $id ) . '" '; $size = ! empty( $field_data['size'] ) ? ' um-' . $field_data['size'] . '-field ' : ' um-long-field'; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . $value . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $val ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $val ) . '" '; } $html = ''; $html .= ''; return $html; } /** * @param $field_data * * @return bool|string */ 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="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . esc_attr( $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 . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . $value . '" '; $html = ""; return $html; } /** * @param $field_data * * @return bool|string */ 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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data[ 'id'. $i ] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $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 . '" '; $value = $this->get_field_value( $field_data, $i ); $value_attr = ' value="' . $value . '" '; $fields[$i] = ""; $i++; } $html = vsprintf( $field_data['mask'], $fields ); return $html; } /** * @param $field_data * * @return bool|string */ 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="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $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 . '" '; $value = $this->get_field_value( $field_data ); $html = ""; return $html; } /** * @param $field_data * * @return bool|string */ 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 . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $value = $this->get_field_value( $field_data ); add_filter( 'wp_default_editor', array( &$this, 'set_default_editor_fix' ) ); 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(); remove_filter( 'wp_default_editor', array( &$this, 'set_default_editor_fix' ) ); return $html; } /** * Fix the displaying wp_editor on macOS * * @return string */ public function set_default_editor_fix() { return 'html'; } /** * @param $field_data * * @return bool|string */ public 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="' . esc_attr( $id ) . '" '; $id_attr_hidden = ' id="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'], ); if ( ! empty( $field_data['data'] ) ) { $data = array_merge( $data, $field_data['data'] ); } $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $checkbox_label = ! empty( $field_data['checkbox_label'] ) ? $field_data['checkbox_label'] : ''; $field_html = ""; if ( '' !== $checkbox_label ) { $field_html = ""; } $html = "{$field_html}"; return apply_filters( 'um_admin_render_checkbox_field_html', $html, $field_data ); } /** * @param $field_data * * @return bool|string */ public function render_same_page_update( $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="' . esc_attr( $id ) . '" '; $id_attr_hidden = ' id="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'], ); if ( ! empty( $field_data['data'] ) ) { $data = array_merge( $data, $field_data['data'] ); } $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } if ( ! empty( $field_data['upgrade_cb'] ) ) { $data_attr .= ' data-log-object="' . esc_attr( $field_data['upgrade_cb'] ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $checkbox_label = ! empty( $field_data['checkbox_label'] ) ? $field_data['checkbox_label'] : ''; $field_html = ""; if ( '' !== $checkbox_label ) { $field_html = ""; } $html = "{$field_html}"; if ( ! empty( $field_data['upgrade_cb'] ) ) { $html .= '
' . $field_data['upgrade_description'] . '
'; } return $html; } /** * @param $field_data * * @return bool|string */ 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="' . esc_attr( $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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $hidden_name_attr = ' name="' . $name . '" '; $name = $name . ( ! empty( $field_data['multi'] ) ? '[]' : '' ); $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $options = ''; if ( ! empty( $field_data['options'] ) ) { foreach ( $field_data['options'] as $key => $option ) { if ( ! empty( $field_data['multi'] ) ) { if ( ! is_array( $value ) || empty( $value ) ) { $value = array(); } $options .= ''; } else { $options .= ''; } } } $hidden = ''; if ( ! empty( $multiple ) ) { $hidden = ""; } $html = "$hidden"; return $html; } /** * @param $field_data * * @since 2.8.3 * * @return bool|string */ public function render_page_select( $field_data ) { if ( empty( $field_data['id'] ) ) { return false; } $multiple = ! empty( $field_data['multi'] ) ? 'multiple' : ''; $id = ( ! empty( $this->form_data['prefix_id'] ) ? sanitize_title( $this->form_data['prefix_id'] ) : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . esc_attr( $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 um-pages-select2 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'], ); if ( ! empty( $field_data['placeholder'] ) ) { $data['placeholder'] = $field_data['placeholder']; } $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $hidden_name_attr = ' name="' . $name . '" '; $name = $name . ( ! empty( $field_data['multi'] ) ? '[]' : '' ); $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $options = ''; if ( ! empty( $field_data['options'] ) ) { foreach ( $field_data['options'] as $key => $option ) { if ( ! empty( $field_data['multi'] ) ) { if ( ! is_array( $value ) || empty( $value ) ) { $value = array(); } $options .= ''; } else { $options .= ''; } } } $hidden = ''; if ( ! empty( $multiple ) ) { $hidden = ""; } $button = ''; $slug = str_replace( 'core_', '', $field_data['id'] ); if ( ! um_get_predefined_page_id( $slug ) || 'publish' !== get_post_status( um_get_predefined_page_id( $slug ) ) ) { $button = ' ' . esc_html__( 'Create Default', 'ultimate-member' ) . ''; } $html = "$hidden$button"; return $html; } /** * @param $field_data * * @return bool|string */ 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']; $sorting = ! empty( $field_data['sorting'] ) ? $field_data['sorting'] : false; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $class .= ! empty( $sorting ) ? 'um-sorting-enabled' : ''; $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 . '="' . esc_attr( $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 = $this->get_field_value( $field_data ); $options = ''; foreach ( $field_data['options'] as $key => $option ) { $options .= ''; } $html = ""; $html .= "{$field_data['add_text']}"; return $html; } /** * @param $field_data * * @return bool|string */ 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 ' . esc_attr( $class ) . '" '; $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $values = $this->get_field_value( $field_data ); if ( empty( $values ) ) { $values = array(); } $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, true ); $html .= ''; foreach ( $section_fields_per_page as $k => $title ) { $id_attr = ' id="' . esc_attr( $id . '_' . $k ) . '" '; $for_attr = ' for="' . esc_attr( $id . '_' . $k ) . '" '; if ( ! empty( $field_data['assoc'] ) ) { $name_attr = ' name="' . esc_attr( $name ) . '[]" '; $value_attr = ' value="' . esc_attr( $k ) . '" '; } else { $name_attr = ' name="' . esc_attr( $name ) . '[' . esc_attr( $k ) . ']" '; $value_attr = ' value="1" '; } $disabed_attr = ''; $data = array( 'field_id' => $field_data['id'] . '_' . $k, ); if ( ! empty( $field_data['data'] ) ) { $data = array_merge( $data, $field_data['data'] ); } $data_attr = ''; foreach ( $data as $key => $value ) { if ( 'checkbox_key' === $value ) { $value = $k; } $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } if ( isset( $field_data['options_disabled'] ) && in_array( $k, $field_data['options_disabled'], true ) ) { $disabed_attr = 'disabled="disabled"'; } $html .= ""; } $html .= ''; $i++; } return $html; } /** * @param $field_data * * @return bool|string */ 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 ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'], 'id_attr' => $id, 'item_class' => "um-multi-text-option-line {$size}", ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $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 = $this->get_field_value( $field_data ); $html = ""; $html .= "{$field_data['add_text']}"; return $html; } /** * @param $field_data * * @return bool|string */ 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'] . '_url', ); 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; $value = $this->get_field_value( $field_data ); $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'] : ''; $wrapper_classes = array(); if ( ! isset( $field_data['preview'] ) || false !== $field_data['preview'] ) { $wrapper_classes[] = 'um-media-preview-enabled'; } $wrapper_classes = implode( ' ', $wrapper_classes ); $wrapper_classes = ! empty( $wrapper_classes ) ? ' ' . $wrapper_classes : ''; $html = '
' . "" . "" . "" . "" . ""; if ( ! isset( $field_data['preview'] ) || $field_data['preview'] !== false ) { $html .= '
'; } if ( ! empty( $field_data['url'] ) ) { $html .= '
'; } $html .= '
'; return $html; } /** * @param $field_data * * @return bool|string */ function render_email_template( $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 . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $value = $this->get_field_value( $field_data ); ob_start(); ?>
$name, 'textarea_rows' => 20, 'editor_height' => 425, 'wpautop' => false, 'media_buttons' => false, 'editor_class' => $class ) ); ?> For default text for plain-text emails please see this doc
form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $id_attr = ' id="' . esc_attr( $id ) . '" '; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class_attr = ' class="um-forms-field button ' . esc_attr( $class ) . '" '; $data = array( 'field_id' => $field_data['id'] ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $value ) . '" '; } $name = $field_data['id']; $name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name; $name_attr = ' name="' . $name . '" '; $value = $this->get_field_value( $field_data ); $value_attr = ' value="' . $value . '" '; $html = "
"; return $html; } /** * @param $field_data * * @return mixed */ function render_info_text( $field_data ) { return $field_data['value']; } /** * @param $field_data * * @return string */ function render_md_default_filters( $field_data ) { if ( empty( $field_data['id'] ) ) { return false; } global $post; $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, 'member_directory' => $post->ID ); $data_attr = ''; foreach ( $data as $key => $value ) { $data_attr .= ' data-' . $key . '="' . esc_attr( $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 = $this->get_field_value( $field_data ); if ( is_array( $values ) ) { $filters = array_keys( $values ); } $options = ''; foreach ( $field_data['options'] as $key => $option ) { $options .= ''; } $html = ""; $html .= "{$field_data['add_text']}"; return $html; } /** * @param $field_data * * @return string */ function render_md_sorting_fields( $field_data ) { if ( empty( $field_data['id'] ) ) { return false; } $id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id']; $sorting = ! empty( $field_data['sorting'] ) ? $field_data['sorting'] : false; $class = ! empty( $field_data['class'] ) ? $field_data['class'] : ''; $class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field'; $class .= ! empty( $sorting ) ? 'um-sorting-enabled' : ''; $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 . '="' . esc_attr( $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 = $this->get_field_value( $field_data ); $options = ''; foreach ( $field_data['options'] as $key => $option ) { $options .= ''; } $html = ""; $html .= "{$field_data['add_text']}"; return $html; } /** * Get field value * * @param array $field_data * @param string $i * @return string|array */ function get_field_value( $field_data, $i = '' ) { $default = ''; if ( $field_data['type'] === 'multi_checkbox' ) { $default = array(); if ( isset( $field_data['default'] ) ) { $default = is_array( $field_data['default'] ) ? $field_data['default'] : array( $field_data['default'] ); } } if ( isset( $field_data[ 'default' . $i ] ) ) { $default = $field_data[ 'default' . $i ]; } if ( $field_data['type'] == 'checkbox' || $field_data['type'] == 'multi_checkbox' ) { $value = ( isset( $field_data[ 'value' . $i ] ) && '' !== $field_data[ 'value' . $i ] ) ? $field_data[ 'value' . $i ] : $default; } else { $value = isset( $field_data[ 'value' . $i ] ) ? $field_data[ 'value' . $i ] : $default; } $value = is_string( $value ) ? stripslashes( $value ) : $value; return $value; } public function render_external_link( $data ) { $defaults = array( 'url' => '', 'html' => '', ); $data = wp_parse_args( $data, $defaults ); if ( empty( $data['url'] ) || empty( $data['html'] ) ) { return ''; } ob_start(); ?>