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 .= '';
} else {
if ( ! empty( $data['without_label'] ) ) {
$html .= '';
} else {
$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 .= '';
if ( ! empty( $value ) ) {
$value_array = explode( ',', $value );
uksort( $field_data['items'], function( $a, $b ) use ( $value_array ) {
$arr_flip = array_flip( $value_array );
if ( ! isset( $arr_flip[ $b ] ) ) {
return 1;
}
if ( ! isset( $arr_flip[ $a ] ) ) {
return -1;
}
if ( $arr_flip[ $a ] == $arr_flip[ $b ] ) {
return 0;
}
return ( $arr_flip[ $a ] < $arr_flip[ $b ] ) ? -1 : 1;
} );
}
foreach ( $field_data['items'] as $tab_id => $tab_name ) {
$content = apply_filters( 'um_render_sortable_items_item_html', $tab_name, $tab_id, $field_data );
$html .= '- ' . $content . '
';
}
$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 .= '';
}
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 .= "";
if ( $sorting && is_array( $values ) ) {
ksort( $values );
}
if ( ! empty( $values ) && is_array( $values ) ) {
foreach ( $values as $k => $value ) {
if ( ! in_array( $value, array_keys( $field_data['options'] ) ) ) {
continue ;
}
$id_attr = ' id="' . esc_attr( $id . '-' . $k ) . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '';
}
$html .= '- ';
if ( $sorting ) {
$html .= '';
}
$html .= "
" . __( 'Remove', 'ultimate-member' ) . "
";
}
} elseif ( ! empty( $field_data['show_default_number'] ) && is_numeric( $field_data['show_default_number'] ) && $field_data['show_default_number'] > 0 ) {
$i = 0;
while ( $i < $field_data['show_default_number'] ) {
$id_attr = ' id="' . $id . '-' . $i . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '';
}
$html .= '- ';
if ( $sorting ) {
$html .= '';
}
$html .= "
" . __( 'Remove', 'ultimate-member' ) . "
";
$i++;
}
}
$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 = '';
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 .= "";
if ( ! empty( $filters ) && is_array( $filters ) ) {
foreach ( $filters as $k => $value ) {
if ( ! in_array( $value, array_keys( $field_data['options'] ) ) ) {
continue ;
}
$id_attr = ' id="' . esc_attr( $id . '-' . $k ) . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '';
}
$html .= "-
" . __( 'Remove', 'ultimate-member' ) . "" . UM()->member_directory()->show_filter( $value, array( 'form_id' => $post->ID ), $values[ $value ], true ) . "
";
}
} elseif ( ! empty( $field_data['show_default_number'] ) && is_numeric( $field_data['show_default_number'] ) && $field_data['show_default_number'] > 0 ) {
$i = 0;
while ( $i < $field_data['show_default_number'] ) {
$id_attr = ' id="' . $id . '-' . $i . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '';
}
$html .= "-
" . __( 'Remove', 'ultimate-member' ) . "
";
$i++;
}
}
$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 .= "";
if ( $sorting && is_array( $values ) ) {
ksort( $values );
}
if ( ! empty( $values ) && is_array( $values ) ) {
foreach ( $values as $k => $value ) {
$other_key = '';
$other_label = '';
$other_type = '';
$other_order = '';
if ( is_array( $value ) ) {
$keys = array_keys( $value );
$other_key = $keys[0];
if ( ! empty( $value['label'] ) ) {
$other_label = $value['label'];
} else {
$labels = array_values( $value );
$other_label = $labels[0];
}
if ( ! empty( $value['type'] ) ) {
$other_type = $value['type'];
}
if ( ! empty( $value['order'] ) ) {
$other_order = $value['order'];
}
} else {
if ( ! array_key_exists( $value, $field_data['options'] ) ) {
continue;
}
}
$id_attr = ' id="' . esc_attr( $id . '-' . $k ) . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
if ( is_array( $value ) ) {
$selected = selected( 'other' === $key, true, false );
} else {
$selected = selected( $key == $value, true, false );
}
$options .= '';
}
$html .= '- ';
if ( $sorting ) {
$html .= '';
}
$data_types_html = '';
foreach ( UM()->member_directory()->sort_data_types as $type_key => $type_label ) {
$data_types_html .= '';
}
$html .= '
' . __( 'Remove', 'ultimate-member' ) . '
';
}
} elseif ( ! empty( $field_data['show_default_number'] ) && is_numeric( $field_data['show_default_number'] ) && $field_data['show_default_number'] > 0 ) {
$i = 0;
while ( $i < $field_data['show_default_number'] ) {
$id_attr = ' id="' . $id . '-' . $i . '" ';
$options = '';
foreach ( $field_data['options'] as $key => $option ) {
$options .= '';
}
$html .= '- ';
if ( $sorting ) {
$html .= '';
}
$html .= "
" . __( 'Remove', 'ultimate-member' ) . "
";
$i++;
}
}
$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();
?>