- fix view_field()

This commit is contained in:
ashubawork
2023-06-22 15:48:39 +03:00
parent f6c2e17017
commit a4ec844737
+85 -114
View File
@@ -4355,52 +4355,35 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
* @return string|null * @return string|null
* @throws \Exception * @throws \Exception
*/ */
function view_field( $key, $data, $rule = false ) { public function view_field( $key, $data, $rule = false ) {
$output = ''; $output = '';
// get whole field data // get whole field data
if ( is_array( $data ) ) { if ( is_array( $data ) ) {
$data = $this->get_field( $key ); $data = $this->get_field( $key );
if ( is_array( $data ) ) {
/**
* @var $visibility
* @var $type
* @var $default
* @var $classes
* @var $conditional
* @var $content
* @var $divider_text
* @var $spacing
* @var $borderwidth
* @var $borderstyle
* @var $bordercolor
* @var $label
*/
extract( $data );
}
} }
//hide if empty type //hide if empty type
if ( ! isset( $data['type'] ) ) { if ( ! isset( $data['type'] ) ) {
return ''; return '';
} }
$type = $data['type'];
if ( isset( $data['in_group'] ) && $data['in_group'] != '' && $rule != 'group' ) { if ( isset( $data['in_group'] ) && '' !== $data['in_group'] && 'group' !== $rule ) {
return ''; return '';
} }
//invisible on profile page //invisible on profile page
if ( $visibility == 'edit' || $type == 'password' ) { if ( 'edit' === $data['visibility'] || 'password' === $type ) {
return ''; return '';
} }
//hide if empty //hide if empty
$fields_without_metakey = UM()->builtin()->get_fields_without_metakey(); $fields_without_metakey = UM()->builtin()->get_fields_without_metakey();
if ( ! in_array( $type, $fields_without_metakey ) ) { if ( ! in_array( $type, $fields_without_metakey, true ) ) {
$_field_value = $this->field_value( $key, $default, $data ); $_field_value = $this->field_value( $key, $data['classes'], $data );
if ( ! isset( $_field_value ) || $_field_value == '' ) { if ( ! isset( $_field_value ) || '' === $_field_value ) {
return ''; return '';
} }
} }
@@ -4410,7 +4393,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
} }
// disable these fields in profile view only // disable these fields in profile view only
if ( in_array( $key, array( 'user_password' ) ) && $this->set_mode == 'profile' ) { if ( in_array( $key, array( 'user_password' ), true ) && 'profile' === $this->set_mode ) {
return ''; return '';
} }
@@ -4418,23 +4401,21 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
return ''; return '';
} }
if ( isset( $data['classes'] ) ) { if ( isset( $data['classes'] ) ) {
$classes = explode( " ", $data['classes'] ); $classes = explode( ' ', $data['classes'] );
} }
switch ( $type ) { switch ( $type ) {
/* Default */ /* Default */
default: default:
$_field_value = $this->field_value( $key, $data['default'], $data );
$_field_value = $this->field_value( $key, $default, $data ); if ( ! in_array( $type, $fields_without_metakey, true ) && ( ! isset( $_field_value ) || '' === $_field_value ) ) {
if ( ! in_array( $type, $fields_without_metakey ) && ( ! isset( $_field_value ) || $_field_value == '' ) ) {
$output = ''; $output = '';
} else { } else {
$output .= '<div ' . $this->get_atts( $key, $classes, $conditional, $data ) . '>'; $output .= '<div ' . $this->get_atts( $key, $classes, $data['conditional'], $data ) . '>';
if ( isset( $data['label'] ) || ! empty( $data['icon'] ) ) { if ( isset( $data['label'] ) || ! empty( $data['icon'] ) ) {
@@ -4445,7 +4426,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$output .= $this->field_label( $data['label'], $key, $data ); $output .= $this->field_label( $data['label'], $key, $data );
} }
$res = $this->field_value( $key, $default, $data ); $res = $this->field_value( $key, $data['default'], $data );
if ( ! empty( $res ) ) { if ( ! empty( $res ) ) {
$res = stripslashes( $res ); $res = stripslashes( $res );
@@ -4462,53 +4443,48 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
$data['is_view_field'] = true; $data['is_view_field'] = true;
/** /**
* UM hook * Filters change field HTML on view mode
* *
* @type filter * @since 2.0
* @title um_view_field * @hook um_view_field
* @description Change field HTML on view mode *
* @input_vars * @param {string} $output Field HTML.
* [{"var":"$output","type":"string","desc":"Field HTML"}, * @param {string} $data Field Data.
* {"var":"$data","type":"string","desc":"Field Data"}, * @param {string} $type Field Type.
* {"var":"$type","type":"string","desc":"Field Type"}] *
* @change_log * @return {array} $output Field HTML.
* ["Since: 2.0"] *
* @usage add_filter( 'um_view_field', 'function_name', 10, 3 ); * @example <caption>Change field HTML on view mode.</caption>
* @example * function my_view_field( $output, $data, $type ) {
* <?php
* add_filter( 'um_view_field', 'my_view_field', 10, 3 );
* function my_form_edit_field( $output, $data, $type ) {
* // your code here * // your code here
* return $output; * return $output;
* } * }
* ?> * add_filter( 'um_view_field', 'my_view_field', 10, 3 );
*/ */
$res = apply_filters( 'um_view_field', $res, $data, $type ); $res = apply_filters( 'um_view_field', $res, $data, $type );
/** /**
* UM hook * Filters field HTML on view mode by field type
* *
* @type filter * @since 2.0
* @title um_view_field_value_{$type} * @hook um_view_field_value_{$type}
* @description Change field HTML on view mode by field type *
* @input_vars * @param {string} $output Field HTML.
* [{"var":"$output","type":"string","desc":"Field HTML"}, * @param {string} $data Field Data.
* {"var":"$data","type":"string","desc":"Field Data"}] *
* @change_log * @return {array} $output Field HTML.
* ["Since: 2.0"] *
* @usage add_filter( 'um_view_field_value_{$type}', 'function_name', 10, 2 ); * @example <caption>Change field HTML on view mode by field type.</caption>
* @example * function my_view_field( $output, $data ) {
* <?php
* add_filter( 'um_view_field_value_{$type}', 'my_view_field', 10, 2 );
* function my_form_edit_field( $output, $data ) {
* // your code here * // your code here
* return $output; * return $output;
* } * }
* ?> * add_filter( 'um_view_field_value_{$type}', 'my_view_field', 10, 2 );
*/ */
$res = apply_filters( "um_view_field_value_{$type}", $res, $data ); $res = apply_filters( "um_view_field_value_{$type}", $res, $data );
$id_attr = ''; $id_attr = '';
if ( ! in_array( $type, $fields_without_metakey ) ) { if ( ! in_array( $type, $fields_without_metakey, true ) ) {
$id_attr = ' id="' . esc_attr( $key . UM()->form()->form_suffix ) . '"'; $id_attr = ' id="' . esc_attr( $key . UM()->form()->form_suffix ) . '"';
} }
@@ -4525,58 +4501,58 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
break; break;
/* HTML */ /* HTML */
case 'block': case 'block':
$output .= '<div ' . $this->get_atts( $key, $classes, $conditional, $data ) . '>' . $content . '</div>'; $output .= '<div ' . $this->get_atts( $key, $classes, $data['conditional'], $data ) . '>' . $data['content'] . '</div>';
break; break;
/* Shortcode */ /* Shortcode */
case 'shortcode': case 'shortcode':
$content = str_replace( '{profile_id}', um_profile_id(), $data['content'] );
$content = str_replace( '{profile_id}', um_profile_id(), $content ); if ( version_compare( get_bloginfo( 'version' ), '5.4', '<' ) ) {
if ( version_compare( get_bloginfo('version'),'5.4', '<' ) ) {
$content = do_shortcode( $content ); $content = do_shortcode( $content );
} else { } else {
$content = apply_shortcodes( $content ); $content = apply_shortcodes( $content );
} }
$output .= '<div ' . $this->get_atts( $key, $classes, $conditional, $data ) . '>' . $content . '</div>'; $output .= '<div ' . $this->get_atts( $key, $classes, $data['conditional'], $data ) . '>' . $content . '</div>';
break; break;
/* Gap/Space */ /* Gap/Space */
case 'spacing': case 'spacing':
$output .= '<div ' . $this->get_atts( $key, $classes, $conditional, $data, array( 'height' => $spacing ) ) . '></div>'; $output .= '<div ' . $this->get_atts( $key, $classes, $data['conditional'], $data, array( 'height' => $data['spacing'] ) ) . '></div>';
break; break;
/* A line divider */ /* A line divider */
case 'divider': case 'divider':
$output .= '<div ' . $this->get_atts( $key, $classes, $conditional, $data, array( 'border-bottom' => $borderwidth . 'px ' . $borderstyle . ' ' . $bordercolor ) ) . '>'; $output .= '<div ' . $this->get_atts( $key, $classes, $data['conditional'], $data, array( 'border-bottom' => $data['borderwidth'] . 'px ' . $data['borderstyle'] . ' ' . $data['bordercolor'] ) ) . '>';
if ( $divider_text ) { if ( $data['divider_text'] ) {
$output .= '<div class="um-field-divider-text"><span>' . $divider_text . '</span></div>'; $output .= '<div class="um-field-divider-text"><span>' . $data['divider_text'] . '</span></div>';
} }
$output .= '</div>'; $output .= '</div>';
break; break;
/* Rating */ /* Rating */
case 'rating': case 'rating':
$output .= '<div ' . $this->get_atts( $key, $classes, $data['conditional'], $data ) . '>';
$output .= '<div ' . $this->get_atts( $key, $classes, $conditional, $data ) . '>';
if ( isset( $data['label'] ) || ! empty( $data['icon'] ) ) { if ( isset( $data['label'] ) || ! empty( $data['icon'] ) ) {
$output .= $this->field_label( $label, $key, $data ); $output .= $this->field_label( $data['label'], $key, $data );
} }
ob_start(); ?> ob_start();
?>
<div class="um-field-area"> <div class="um-field-area">
<div class="um-field-value"> <div class="um-field-value">
<div class="um-rating-readonly um-raty" id="<?php echo esc_attr( $key ) ?>" <div class="um-rating-readonly um-raty" id="<?php echo esc_attr( $key ); ?>"
data-key="<?php echo esc_attr( $key ) ?>" data-number="<?php echo esc_attr( $data['number'] ) ?>" data-key="<?php echo esc_attr( $key ); ?>" data-number="<?php echo esc_attr( $data['number'] ); ?>"
data-score="<?php echo $this->field_value( $key, $default, $data ) ?>"></div> data-score="<?php echo $this->field_value( $key, $data['default'], $data ); ?>"></div>
</div> </div>
</div> </div>
<?php $output .= ob_get_clean(); <?php
$output .= ob_get_clean();
$output .= '</div>'; $output .= '</div>';
break; break;
@@ -4586,47 +4562,42 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
// Custom filter for field output // Custom filter for field output
if ( isset( $this->set_mode ) ) { if ( isset( $this->set_mode ) ) {
/** /**
* UM hook * Filters field HTML by field $key
* *
* @type filter * @since 2.0
* @title um_{$key}_form_show_field * @hook um_{$key}_form_show_field
* @description Change field HTML by field $key *
* @input_vars * @param {string} $output Field HTML.
* [{"var":"$output","type":"string","desc":"Field HTML"}, * @param {string} $mode Field Mode.
* {"var":"$mode","type":"string","desc":"Form Mode"}] *
* @change_log * @return {array} $output Field HTML.
* ["Since: 2.0"] *
* @usage add_filter( 'um_{$key}_form_show_field', 'function_name', 10, 2 ); * @example <caption>Change field HTML by field $key.</caption>
* @example
* <?php
* add_filter( 'um_{$key}_form_show_field', 'my_form_show_field', 10, 2 );
* function my_form_show_field( $output, $mode ) { * function my_form_show_field( $output, $mode ) {
* // your code here * // your code here
* return $output; * return $output;
* } * }
* ?> * add_filter( 'um_{$key}_form_show_field', 'my_form_show_field', 10, 2 );
*/ */
$output = apply_filters( "um_{$key}_form_show_field", $output, $this->set_mode ); $output = apply_filters( "um_{$key}_form_show_field", $output, $this->set_mode );
/** /**
* UM hook * Filters field HTML by field $type
* *
* @type filter * @since 2.0
* @title um_{$type}_form_show_field * @hook um_{$type}_form_show_field
* @description Change field HTML by field $type *
* @input_vars * @param {string} $output Field HTML.
* [{"var":"$output","type":"string","desc":"Field HTML"}, * @param {string} $mode Field Mode.
* {"var":"$mode","type":"string","desc":"Form Mode"}] *
* @change_log * @return {array} $output Field HTML.
* ["Since: 2.0"] *
* @usage add_filter( 'um_{$type}_form_show_field', 'function_name', 10, 2 ); * @example <caption>Change field HTML by field $type.</caption>
* @example
* <?php
* add_filter( 'um_{$type}_form_show_field', 'my_form_show_field', 10, 2 );
* function my_form_show_field( $output, $mode ) { * function my_form_show_field( $output, $mode ) {
* // your code here * // your code here
* return $output; * return $output;
* } * }
* ?> * add_filter( 'um_{$type}_form_show_field', 'my_form_show_field', 10, 2 );
*/ */
$output = apply_filters( "um_{$type}_form_show_field", $output, $this->set_mode ); $output = apply_filters( "um_{$type}_form_show_field", $output, $this->set_mode );
} }