2017-07-26 14:57:52 +03:00
< ? php
namespace um\admin\core ;
// Exit if accessed directly.
if ( ! defined ( 'ABSPATH' ) ) exit ;
2018-03-26 01:27:46 +03:00
if ( ! class_exists ( 'um\admin\core\Admin_Forms' ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* Class Admin_Forms
* @package um\admin\core
*/
class Admin_Forms {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @var bool
*/
var $form_data ;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* Admin_Forms constructor.
* @param bool $form_data
*/
function __construct ( $form_data = false ) {
if ( $form_data ) {
$this -> form_data = $form_data ;
}
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* Render form
*
*
* @param bool $echo
* @return string
*/
function render_form ( $echo = true ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty ( $this -> form_data [ 'fields' ] ) )
return '' ;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$class = 'form-table um-form-table ' . ( ! empty ( $this -> form_data [ 'class' ] ) ? $this -> form_data [ 'class' ] : '' );
$class_attr = ' class="' . $class . '" ' ;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
ob_start ();
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
foreach ( $this -> form_data [ 'fields' ] as $field_data ) {
if ( isset ( $field_data [ 'type' ] ) && 'hidden' == $field_data [ 'type' ] )
echo $this -> render_form_row ( $field_data );
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty ( $this -> form_data [ 'without_wrapper' ] ) ) { ?>
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
<table <?php echo $class_attr ?>>
<tbody>
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
<?php }
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
foreach ( $this->form_data['fields'] as $field_data ) {
if ( isset( $field_data['type'] ) && 'hidden' != $field_data['type'] )
echo $this->render_form_row( $field_data );
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $this->form_data['without_wrapper'] ) ) { ?>
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
</tbody>
</table>
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
<?php }
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( $echo ) {
ob_get_flush();
return '';
} else {
return ob_get_clean();
}
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param array $data
*
* @return string
*/
function render_form_row( $data ) {
2017-10-03 16:29:04 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $data['type'] ) )
return '';
2017-10-03 16:29:04 +03:00
2018-03-16 09:37:19 +02:00
if ( !empty( $data['value'] ) && $data['type'] != 'email_template' ) {
$data['value'] = wp_unslash( $data['value'] );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/*for multi_text*/
if ( ! is_array( $data['value'] ) && $data['type'] != 'wp_editor' ) {
$data['value'] = esc_attr( $data['value'] );
}
}
2017-07-31 16:56:16 +03:00
2018-03-16 09:37:19 +02:00
$conditional = ! empty( $data['conditional'] ) ? 'data-conditional="' . esc_attr( json_encode( $data['conditional'] ) ) . '"' : '';
$prefix_attr = ! empty( $this->form_data['prefix_id'] ) ? ' data-prefix="' . $this->form_data['prefix_id'] . '" ' : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$type_attr = ' data-field_type="' . $data['type'] . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = '';
if ( $data['type'] != 'hidden' ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $this->form_data['div_line'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( strpos( $this->form_data['class'], 'um-top-label' ) !== false ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '<div class="form-field um-forms-line" ' . $conditional . $prefix_attr . $type_attr . '>' . $this->render_field_label( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( method_exists( $this, 'render_' . $data['type'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= $this->render_field_by_hook( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['description'] ) )
$html .= '<p class="description">' . $data['description'] . '</p>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</div>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['without_label'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '<div class="form-field um-forms-line" ' . $conditional . $prefix_attr . $type_attr . '>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( method_exists( $this, 'render_' . $data['type'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= $this->render_field_by_hook( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['description'] ) )
$html .= '<p class="description">' . $data['description'] . '</p>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</div>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '<div class="form-field um-forms-line" ' . $conditional . $prefix_attr . $type_attr . '>' . $this->render_field_label( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( method_exists( $this, 'render_' . $data['type'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= $this->render_field_by_hook( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['description'] ) )
$html .= '<p class="description">' . $data['description'] . '</p>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</div>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
}
} else {
if ( strpos( $this->form_data['class'], 'um-top-label' ) !== false ) {
$html .= '<tr class="um-forms-line" ' . $conditional . $prefix_attr . $type_attr . '>
2017-07-26 14:57:52 +03:00
<td>' . $this->render_field_label( $data );
2018-03-16 09:37:19 +02:00
if ( method_exists( $this, 'render_' . $data['type'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= $this->render_field_by_hook( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['description'] ) )
$html .= '<div class="um-admin-clear"></div><p class="description">' . $data['description'] . '</p>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</td></tr>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['without_label'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '<tr class="um-forms-line" ' . $conditional . $prefix_attr . $type_attr . '>
2017-07-26 14:57:52 +03:00
<td colspan="2">';
2018-03-16 09:37:19 +02:00
if ( method_exists( $this, 'render_' . $data['type'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= $this->render_field_by_hook( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['description'] ) )
$html .= '<div class="um-admin-clear"></div><p class="description">' . $data['description'] . '</p>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</td></tr>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '<tr class="um-forms-line" ' . $conditional . $prefix_attr . $type_attr . '>
2017-07-26 14:57:52 +03:00
<th>' . $this->render_field_label( $data ) . '</th>
<td>';
2018-03-16 09:37:19 +02:00
if ( method_exists( $this, 'render_' . $data['type'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= $this->render_field_by_hook( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $data['description'] ) )
$html .= '<div class="um-admin-clear"></div><p class="description">' . $data['description'] . '</p>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</td></tr>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
}
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
if ( method_exists( $this, 'render_' . $data['type'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
} else {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= $this->render_field_by_hook( $data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
}
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-02 09:55:49 +02:00
2018-03-16 09:37:19 +02:00
/**
* @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"}]
* @change_log
* ["Since: 2.0"]
* @usage add_filter( 'um_render_field_type_{$type}', 'function_name', 10, 3 );
* @example
* <?php
* add_filter( 'um_render_field_type_{$type}', 'my_render_field_type', 10, 3 );
* function my_render_field_type( $html, $data, $form_data ) {
* // your code here
* return $html;
* }
* ?>
*/
return apply_filters( 'um_render_field_type_' . $data['type'], '', $data, $this->form_data );
}
2018-03-02 09:55:49 +02:00
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $data
*
* @return bool|string
*/
function render_field_label( $data ) {
if ( empty( $data['label'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$label = $data['label'];
$tooltip = ! empty( $data['tooltip'] ) ? UM()->tooltip( $data['tooltip'], false, false ) : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return "<label $for_attr>$label $tooltip</label>";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_hidden( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . $id . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class_attr = ' class="um-forms-field ' . $class . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
$value_attr = ' value="' . $value . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<input type=\"hidden\" $id_attr $class_attr $name_attr $data_attr $value_attr />";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_text( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
$value_attr = ' value="' . $value . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<input type=\"text\" $id_attr $class_attr $name_attr $data_attr $value_attr $placeholder_attr />";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_color( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . $id . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
$value_attr = ' value="' . $value . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<input type=\"text\" $id_attr $class_attr $name_attr $data_attr $value_attr $placeholder_attr />";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_icon( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . $id . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
$value_attr = ' value="' . $value . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = '<a href="#" class="button" data-modal="UM_fonticons" data-modal-size="normal" data-dynamic-content="um_admin_fonticon_selector" data-arg1="" data-arg2="" data-back="">' . __( 'Choose Icon', 'ultimate-member' ) . '</a>
2017-07-26 14:57:52 +03:00
<span class="um-admin-icon-value">';
2018-03-16 09:37:19 +02:00
if ( ! empty( $value ) ) {
$html .= '<i class="' . $value . '"></i>';
} else {
$html .= __( 'No Icon', 'ultimate-member' );
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</span><input type="hidden" ' . $name_attr . ' ' . $id_attr . ' ' . $value_attr . ' />';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( get_post_meta( get_the_ID(), '_um_icon', true ) ) {
$html .= '<span class="um-admin-icon-clear show"><i class="um-icon-android-cancel"></i></span>';
} else {
$html .= '<span class="um-admin-icon-clear"><i class="um-icon-android-cancel"></i></span>';
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</span>';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_datepicker( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . $id . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
$value_attr = ' value="' . $value . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<input type=\"date\" $id_attr $class_attr $name_attr $data_attr $value_attr $placeholder_attr />";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_inline_texts( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id1'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id'. $i]
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$placeholder_attr = ! empty( $field_data['placeholder'] ) ? ' placeholder="' . $field_data['placeholder'] . '"' : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'. $i];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data, $i );
2017-12-12 11:13:02 +02:00
2018-03-16 09:37:19 +02:00
$value_attr = ' value="' . $value . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$fields[$i] = "<input type=\"text\" $id_attr $class_attr $name_attr $data_attr $value_attr $placeholder_attr style=\"display:inline;\"/>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$i++;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = vsprintf( $field_data['mask'], $fields );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_textarea( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . $id . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$rows = ! empty( $field_data['args']['textarea_rows'] ) ? ' rows="' . $field_data['args']['textarea_rows'] . '" ' : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
2017-12-11 09:53:38 +02:00
2018-03-16 09:37:19 +02:00
$html = "<textarea $id_attr $class_attr $name_attr $data_attr $rows>$value</textarea>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_wp_editor( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
ob_start();
wp_editor( $value,
$id,
array(
'textarea_name' => $name,
'textarea_rows' => 20,
'editor_height' => 425,
'wpautop' => false,
'media_buttons' => false,
'editor_class' => $class
)
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = ob_get_clean();
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_checkbox( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<input type=\"hidden\" $id_attr_hidden $name_attr value=\"0\" />
2017-07-26 14:57:52 +03:00
<input type=\"checkbox\" $id_attr $class_attr $name_attr $data_attr " . checked( $value, true, false ) . " value=\"1\" />";
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_select( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$multiple = ! empty( $field_data['multi'] ) ? 'multiple' : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . $id . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$options = '';
foreach ( $field_data['options'] as $key=>$option ) {
if ( ! empty( $field_data['multi'] ) ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! is_array( $value ) || empty( $value ) )
$value = array();
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$options .= '<option value="' . $key . '" ' . selected( in_array( $key, $value ), true, false ) . '>' . $option . '</option>';
} else {
$options .= '<option value="' . $key . '" ' . selected( (string)$key == $value, true, false ) . '>' . $option . '</option>';
}
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$hidden = '';
if ( ! empty( $multiple ) ) {
$hidden = "<input type=\"hidden\" $hidden_name_attr value=\"\" />";
}
$html = "$hidden<select $multiple $id_attr $name_attr $class_attr $data_attr>$options</select>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_multi_selects( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id'],
'id_attr' => $id
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name = "{$name}[]";
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$values = $this->get_field_value( $field_data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$options = '';
foreach ( $field_data['options'] as $key=>$option ) {
$options .= '<option value="' . $key . '">' . $option . '</option>';
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<select class=\"um-hidden-multi-selects\" $data_attr>$options</select>";
$html .= "<ul class=\"um-multi-selects-list\" $data_attr>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $values ) ) {
foreach ( $values as $k=>$value ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id_attr = ' id="' . $id . '-' . $k . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$options = '';
foreach ( $field_data['options'] as $key=>$option ) {
$options .= '<option value="' . $key . '" ' . selected( $key == $value, true, false ) . '>' . $option . '</option>';
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= "<li class=\"um-multi-selects-option-line\"><span class=\"um-field-wrapper\">
2017-07-26 14:57:52 +03:00
<select $id_attr $name_attr $class_attr $data_attr>$options</select></span>
<span class=\"um-field-control\"><a href=\"javascript:void(0);\" class=\"um-select-delete\">" . __( 'Remove', 'ultimate-member' ) . "</a></span></li>";
2018-03-16 09:37:19 +02:00
}
} 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 .= '<option value="' . $key . '">' . $option . '</option>';
}
$html .= "<li class=\"um-multi-selects-option-line\"><span class=\"um-field-wrapper\">
2017-07-26 14:57:52 +03:00
<select $id_attr $name_attr $class_attr $data_attr>$options</select></span>
<span class=\"um-field-control\"><a href=\"javascript:void(0);\" class=\"um-select-delete\">" . __( 'Remove', 'ultimate-member' ) . "</a></span></li>";
2018-03-16 09:37:19 +02:00
$i++;
}
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= "</ul><a href=\"javascript:void(0);\" class=\"button button-primary um-multi-selects-add-option\" data-name=\"$name\">{$field_data['add_text']}</a>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_multi_checkbox( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$values = $this->get_field_value( $field_data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$i = 0;
$html = '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 .= '<span class="um-form-fields-section" style="width:' . floor( 100 / $columns ) . '% !important;">';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
foreach ( $section_fields_per_page as $k => $title ) {
$id_attr = ' id="' . $id . '_' . $k . '" ';
$for_attr = ' for="' . $id . '_' . $k . '" ';
$name_attr = ' name="' . $name . '[' . $k . ']" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= "<label $for_attr>
2017-07-26 14:57:52 +03:00
<input type=\"checkbox\" " . checked( in_array( $k, $values ), true, false ) . "$id_attr $name_attr value=\"1\" $class_attr>
<span>$title</span>
</label>";
2018-03-16 09:37:19 +02:00
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '</span>';
$i++;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_multi_text( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$size = ! empty( $field_data['size'] ) ? 'um-' . $field_data['size'] . '-field' : 'um-long-field';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class_attr = ' class="um-forms-field ' . $class . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id'],
'id_attr' => $id
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name = "{$name}[]";
$name_attr = ' name="' . $name . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$values = $this->get_field_value( $field_data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<input type=\"text\" class=\"um-hidden-multi-text\" $data_attr />";
$html .= "<ul class=\"um-multi-text-list\" $data_attr>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $values ) ) {
foreach ( $values as $k=>$value ) {
$value = esc_attr($value);
$id_attr = ' id="' . $id . '-' . $k . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= "<li class=\"um-multi-text-option-line {$size}\"><span class=\"um-field-wrapper\">
2017-07-26 14:57:52 +03:00
<input type=\"text\" $id_attr $name_attr $class_attr $data_attr value=\"$value\" /></span>
<span class=\"um-field-control\"><a href=\"javascript:void(0);\" class=\"um-text-delete\">" . __( 'Remove', 'ultimate-member' ) . "</a></span></li>";
2018-03-16 09:37:19 +02:00
}
} 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 . '" ';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= "<li class=\"um-multi-text-option-line {$size}\"><span class=\"um-field-wrapper\">
2017-07-26 14:57:52 +03:00
<input type=\"text\" $id_attr $name_attr $class_attr $data_attr value=\"\" /></span>
<span class=\"um-field-control\"><a href=\"javascript:void(0);\" class=\"um-text-delete\">" . __( 'Remove', 'ultimate-member' ) . "</a></span></li>";
2018-03-16 09:37:19 +02:00
$i++;
}
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= "</ul><a href=\"javascript:void(0);\" class=\"button button-primary um-multi-text-add-option\" data-name=\"$name\">{$field_data['add_text']}</a>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_media( $field_data ) {
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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 . '"';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id'],
);
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $field_data['default']['url'] ) )
$data['default'] = esc_attr( $field_data['default']['url'] );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
2017-12-11 09:53:38 +02:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$upload_frame_title = ! empty( $field_data['upload_frame_title'] ) ? $field_data['upload_frame_title'] : __( 'Select media', 'ultimate-member' );
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$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'] : '';
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html = "<div class=\"um-media-upload\">" .
"<input type=\"hidden\" class=\"um-media-upload-data-id\" name=\"{$name}[id]\" id=\"{$id}_id\" value=\"$image_id\">" .
"<input type=\"hidden\" class=\"um-media-upload-data-width\" name=\"{$name}[width]\" id=\"{$id}_width\" value=\"$image_width\">" .
"<input type=\"hidden\" class=\"um-media-upload-data-height\" name=\"{$name}[height]\" id=\"{$id}_height\" value=\"$image_height\">" .
"<input type=\"hidden\" class=\"um-media-upload-data-thumbnail\" name=\"{$name}[thumbnail]\" id=\"{$id}_thumbnail\" value=\"$image_thumbnail\">" .
"<input type=\"hidden\" $class_attr name=\"{$name}[url]\" id=\"{$id}_url\" value=\"$image_url\" $data_attr>";
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! isset( $field_data['preview'] ) || $field_data['preview'] !== false ) {
$html .= '<img src="' . $image_url . '" alt="" class="icon_preview"><div style="clear:both;"></div>';
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
if ( ! empty( $field_data['url'] ) ) {
$html .= '<input type="text" class="um-media-upload-url" readonly value="' . $image_url . '" /><div style="clear:both;"></div>';
}
2017-07-26 14:57:52 +03:00
2018-03-16 09:37:19 +02:00
$html .= '<input type="button" class="um-set-image button button-primary" value="' . __( 'Select', 'ultimate-member' ) . '" data-upload_frame="' . $upload_frame_title . '" />
2017-07-26 14:57:52 +03:00
<input type="button" class="um-clear-image button" value="' . __( 'Clear', 'ultimate-member' ) . '" /></div>';
2018-03-16 09:37:19 +02:00
return $html;
}
2017-07-26 14:57:52 +03:00
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_email_template( $field_data ) {
if ( empty( $field_data['id'] ) )
return false;
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class .= ! empty( $field_data['size'] ) ? $field_data['size'] : 'um-long-field';
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
ob_start(); ?>
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
<div class="email_template_wrapper <?php echo $field_data['in_theme'] ? 'in_theme' : '' ?>" data-key="<?php echo $field_data['id'] ?>" style="position: relative;">
<!-- <input type="button" class="reset_email_template button" value="--><?php //_e( 'Reset Template to Default', 'ultimate-member' ) ?><!--" />-->
<!--<div class="copy_button_overlay">
2017-08-29 15:01:29 +03:00
<span><?php /*_e( 'Currently UM use default Email Template, you can edit this template after then you copy in to theme', 'ultimate-member' ) */?></span>
<input type="button" class="copy_email_template button" value="<?php /*_e( 'Copy Template to Theme', 'ultimate-member' ) */?>" />
</div>-->
2018-03-16 09:37:19 +02:00
<?php wp_editor( $value,
$id,
array(
'textarea_name' => $name,
'textarea_rows' => 20,
'editor_height' => 425,
'wpautop' => false,
'media_buttons' => false,
'editor_class' => $class
)
); ?>
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
</div>
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
<?php $html = ob_get_clean();
2017-08-29 15:01:29 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-08-29 15:01:29 +03:00
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return bool|string
*/
function render_ajax_button( $field_data ) {
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
if ( empty( $field_data['id'] ) )
return false;
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
$id = ( ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] : '' ) . '_' . $field_data['id'];
$id_attr = ' id="' . $id . '" ';
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
$class = ! empty( $field_data['class'] ) ? $field_data['class'] : '';
$class_attr = ' class="um-forms-field button ' . $class . '" ';
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
$data = array(
'field_id' => $field_data['id']
);
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
$data_attr = '';
foreach ( $data as $key => $value ) {
$data_attr .= " data-{$key}=\"{$value}\" ";
}
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
$name = $field_data['id'];
$name = ! empty( $this->form_data['prefix_id'] ) ? $this->form_data['prefix_id'] . '[' . $name . ']' : $name;
$name_attr = ' name="' . $name . '" ';
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
$value = $this->get_field_value( $field_data );
$value_attr = ' value="' . $value . '" ';
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
$html = "<input type=\"button\" $id_attr $class_attr $name_attr $data_attr $value_attr /><div class='clear'></div><div class='um_setting_ajax_button_response'></div>";
2017-09-14 17:12:08 +03:00
2018-03-16 09:37:19 +02:00
return $html;
}
2017-09-14 17:12:08 +03:00
2017-12-11 09:53:38 +02:00
2018-03-16 09:37:19 +02:00
/**
* @param $field_data
*
* @return mixed
*/
function render_info_text( $field_data ) {
return $field_data['value'];
}
2017-12-18 15:16:14 +02:00
2018-03-16 09:37:19 +02:00
/**
* Get field value
*
* @param array $field_data
* @param string $i
* @return string|array
*/
function get_field_value( $field_data, $i = '' ) {
$default = ( $field_data['type'] == 'multi_checkbox' ) ? array() : '';
$default = isset( $field_data['default' . $i] ) ? $field_data['default' . $i] : $default;
2017-12-11 09:53:38 +02:00
2018-03-16 09:37:19 +02:00
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;
}
2017-12-19 12:38:00 +02:00
2018-03-16 09:37:19 +02:00
$value = is_string( $value ) ? stripslashes( $value ) : $value;
2017-12-19 12:38:00 +02:00
2018-03-16 09:37:19 +02:00
return $value;
}
}
2017-07-26 14:57:52 +03:00
}