mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-11 18:56:10 +09:00
Merge pull request #1087 from ultimatemember/development/2.5.1
2.5.1 release
This commit is contained in:
@@ -86,9 +86,10 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
}
|
||||
|
||||
foreach ( $social as $k => $arr ) {
|
||||
if ( um_profile( $k ) ) { ?>
|
||||
if ( um_profile( $k ) ) {
|
||||
$match = is_array( $arr['match'] ) ? $arr['match'][0] : $arr['match']; ?>
|
||||
|
||||
<a href="<?php echo esc_url( um_filtered_social_link( $k, $arr['match'] ) ); ?>"
|
||||
<a href="<?php echo esc_url( um_filtered_social_link( $k, $match ) ); ?>"
|
||||
style="background: <?php echo esc_attr( $arr['color'] ); ?>;" target="_blank" class="um-tip-n"
|
||||
title="<?php echo esc_attr( $arr['title'] ); ?>"><i class="<?php echo esc_attr( $arr['icon'] ); ?>"></i></a>
|
||||
|
||||
@@ -146,17 +147,19 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
if ( array_key_exists( 'custom_dropdown_options_source', $args ) ) {
|
||||
if ( function_exists( wp_unslash( $args['custom_dropdown_options_source'] ) ) ) {
|
||||
$allowed_callbacks = UM()->options()->get( 'allowed_choice_callbacks' );
|
||||
if ( ! empty( $allowed_callbacks ) ) {
|
||||
$allowed_callbacks = array_map( 'rtrim', explode( "\n", $allowed_callbacks ) );
|
||||
$allowed_callbacks[] = $args['custom_dropdown_options_source'];
|
||||
} else {
|
||||
$allowed_callbacks = array( $args['custom_dropdown_options_source'] );
|
||||
}
|
||||
$allowed_callbacks = array_unique( $allowed_callbacks );
|
||||
$allowed_callbacks = implode( "\r\n", $allowed_callbacks );
|
||||
if ( ! in_array( $args['custom_dropdown_options_source'], UM()->fields()->dropdown_options_source_blacklist(), true ) ) {
|
||||
$allowed_callbacks = UM()->options()->get( 'allowed_choice_callbacks' );
|
||||
if ( ! empty( $allowed_callbacks ) ) {
|
||||
$allowed_callbacks = array_map( 'rtrim', explode( "\n", $allowed_callbacks ) );
|
||||
$allowed_callbacks[] = $args['custom_dropdown_options_source'];
|
||||
} else {
|
||||
$allowed_callbacks = array( $args['custom_dropdown_options_source'] );
|
||||
}
|
||||
$allowed_callbacks = array_unique( $allowed_callbacks );
|
||||
$allowed_callbacks = implode( "\r\n", $allowed_callbacks );
|
||||
|
||||
UM()->options()->update( 'allowed_choice_callbacks', $allowed_callbacks );
|
||||
UM()->options()->update( 'allowed_choice_callbacks', $allowed_callbacks );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,19 +204,21 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
if ( array_key_exists( 'custom_dropdown_options_source', $args ) ) {
|
||||
if ( function_exists( wp_unslash( $args['custom_dropdown_options_source'] ) ) ) {
|
||||
$allowed_callbacks = UM()->options()->get( 'allowed_choice_callbacks' );
|
||||
if ( ! empty( $allowed_callbacks ) ) {
|
||||
$allowed_callbacks = array_map( 'rtrim', explode( "\n", $allowed_callbacks ) );
|
||||
$allowed_callbacks[] = $args['custom_dropdown_options_source'];
|
||||
} else {
|
||||
$allowed_callbacks = array( $args['custom_dropdown_options_source'] );
|
||||
if ( ! in_array( $args['custom_dropdown_options_source'], UM()->fields()->dropdown_options_source_blacklist(), true ) ) {
|
||||
$allowed_callbacks = UM()->options()->get( 'allowed_choice_callbacks' );
|
||||
if ( ! empty( $allowed_callbacks ) ) {
|
||||
$allowed_callbacks = array_map( 'rtrim', explode( "\n", $allowed_callbacks ) );
|
||||
$allowed_callbacks[] = $args['custom_dropdown_options_source'];
|
||||
} else {
|
||||
$allowed_callbacks = array( $args['custom_dropdown_options_source'] );
|
||||
}
|
||||
$allowed_callbacks = array_unique( $allowed_callbacks );
|
||||
$allowed_callbacks = implode( "\r\n", $allowed_callbacks );
|
||||
|
||||
UM()->options()->update( 'allowed_choice_callbacks', $allowed_callbacks );
|
||||
|
||||
$args['custom_dropdown_options_source'] = wp_unslash( $args['custom_dropdown_options_source'] );
|
||||
}
|
||||
$allowed_callbacks = array_unique( $allowed_callbacks );
|
||||
$allowed_callbacks = implode( "\r\n", $allowed_callbacks );
|
||||
|
||||
UM()->options()->update( 'allowed_choice_callbacks', $allowed_callbacks );
|
||||
|
||||
$args['custom_dropdown_options_source'] = wp_unslash( $args['custom_dropdown_options_source'] );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1291,6 +1296,18 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Getting the blacklist of the functions that cannot be used as callback.
|
||||
* All internal PHP functions are insecure for using inside callback functions.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function dropdown_options_source_blacklist() {
|
||||
$list = get_defined_functions();
|
||||
$blacklist = ! empty( $list['internal'] ) ? $list['internal'] : array();
|
||||
$blacklist = apply_filters( 'um_dropdown_options_source_blacklist', $blacklist );
|
||||
return $blacklist;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets selected option value from a callback function
|
||||
@@ -1305,6 +1322,10 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
if ( in_array( $type, array( 'select', 'multiselect' ) ) && ! empty( $data['custom_dropdown_options_source'] ) ) {
|
||||
|
||||
if ( in_array( $data['custom_dropdown_options_source'], $this->dropdown_options_source_blacklist(), true ) ) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
$has_custom_source = apply_filters( "um_has_dropdown_options_source__{$data['metakey']}", false );
|
||||
|
||||
if ( $has_custom_source ) {
|
||||
@@ -1372,6 +1393,10 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
if ( in_array( $type, array( 'select', 'multiselect' ) ) && ! empty( $data['custom_dropdown_options_source'] ) ) {
|
||||
|
||||
if ( in_array( $data['custom_dropdown_options_source'], $this->dropdown_options_source_blacklist(), true ) ) {
|
||||
return $arr_options;
|
||||
}
|
||||
|
||||
if ( function_exists( $data['custom_dropdown_options_source'] ) ) {
|
||||
if ( isset( $data['parent_dropdown_relationship'] ) ) {
|
||||
$arr_options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
|
||||
@@ -3037,7 +3062,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
if ( ! empty( $data['custom_dropdown_options_source'] ) && $has_parent_option && function_exists( $data['custom_dropdown_options_source'] ) &&
|
||||
um_user( $data['parent_dropdown_relationship'] )
|
||||
) {
|
||||
$options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
|
||||
if ( ! in_array( $data['custom_dropdown_options_source'], $this->dropdown_options_source_blacklist(), true ) ) {
|
||||
$options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
|
||||
}
|
||||
|
||||
$disabled_by_parent_option = '';
|
||||
if ( um_user( $form_key ) ) {
|
||||
@@ -3053,10 +3080,11 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
|
||||
// Child dropdown
|
||||
if ( $has_parent_option ) {
|
||||
|
||||
if ( ! empty( $data['custom_dropdown_options_source'] ) && $has_parent_option &&
|
||||
function_exists( $data['custom_dropdown_options_source'] ) && isset( UM()->form()->post_form[ $form_key ] ) ) {
|
||||
$options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
|
||||
if ( ! in_array( $data['custom_dropdown_options_source'], $this->dropdown_options_source_blacklist(), true ) ) {
|
||||
$options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user