From 4c6a2c3b45b34062a34be5ecb79593a8e4631a19 Mon Sep 17 00:00:00 2001 From: ashubawork Date: Tue, 13 Jun 2023 09:32:03 +0300 Subject: [PATCH] - add a spotify field --- includes/core/class-builtin.php | 17 +++++++++++++++++ includes/core/class-fields.php | 2 ++ includes/core/class-form.php | 1 + includes/core/um-actions-form.php | 6 ++++++ includes/core/um-filters-fields.php | 25 +++++++++++++++++++++++++ 5 files changed, 51 insertions(+) diff --git a/includes/core/class-builtin.php b/includes/core/class-builtin.php index ea0b80fd..eb34c0aa 100644 --- a/includes/core/class-builtin.php +++ b/includes/core/class-builtin.php @@ -635,6 +635,22 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { ) ), + 'spotify' => array( + 'name' => 'Spotify URL', + 'col1' => array('_title','_metakey','_help','_visibility'), + 'col2' => array('_label','_placeholder','_public','_roles','_validate','_custom_validate'), + 'col3' => array('_required','_editable','_icon'), + 'validate' => array( + '_title' => array( + 'mode' => 'required', + 'error' => __('You must provide a title','ultimate-member') + ), + '_metakey' => array( + 'mode' => 'unique', + ), + ) + ), + /*'group' => array( 'name' => 'Field Group', 'col1' => array('_title','_max_entries'), @@ -1497,6 +1513,7 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { $array['unique_username_or_email'] = __('Unique Username/E-mail','ultimate-member'); $array['url'] = __('Website URL','ultimate-member'); $array['youtube_url'] = __('YouTube Profile','ultimate-member'); + $array['spotify_url'] = __('Spotify URL','ultimate-member'); $array['telegram_url'] = __('Telegram URL','ultimate-member'); $array['discord'] = __('Discord ID','ultimate-member'); $array['tiktok_url'] = __('TikTok URL','ultimate-member'); diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index 62f56a42..34a3677a 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -1652,6 +1652,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) { case 'youtube_video': case 'vimeo_video': case 'soundcloud_track': + case 'spotify': $array['disabled'] = ''; $array['input'] = 'text'; break; @@ -2381,6 +2382,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) { case 'googlemap': case 'youtube_video': case 'vimeo_video': + case 'spotify': case 'soundcloud_track': $output .= '
get_atts( $key, $classes, $conditional, $data ) . '>'; diff --git a/includes/core/class-form.php b/includes/core/class-form.php index c6de207f..bbe6d10f 100644 --- a/includes/core/class-form.php +++ b/includes/core/class-form.php @@ -743,6 +743,7 @@ if ( ! class_exists( 'um\core\Form' ) ) { case 'youtube_video': case 'vimeo_video': case 'soundcloud_track': + case 'spotify': $form[ $k ] = sanitize_text_field( $form[ $k ] ); break; case 'multiselect': diff --git a/includes/core/um-actions-form.php b/includes/core/um-actions-form.php index cbf67cec..3c4eae9f 100644 --- a/includes/core/um-actions-form.php +++ b/includes/core/um-actions-form.php @@ -715,6 +715,12 @@ function um_submit_form_errors_hook_( $args ) { } break; + case 'spotify_url': + if ( ! UM()->validation()->is_url( $args[ $key ], 'open.spotify.com' ) ) { + UM()->form()->add_error( $key, sprintf( __( 'Please enter a valid %s URL', 'ultimate-member' ), $array['label'] ) ); + } + break; + case 'telegram_url': if ( ! UM()->validation()->is_url( $args[ $key ], 't.me' ) ) { UM()->form()->add_error( $key, sprintf( __( 'Please enter a valid %s username or profile URL', 'ultimate-member' ), $array['label'] ) ); diff --git a/includes/core/um-filters-fields.php b/includes/core/um-filters-fields.php index 22609c8d..3899eb4c 100644 --- a/includes/core/um-filters-fields.php +++ b/includes/core/um-filters-fields.php @@ -77,6 +77,30 @@ function um_profile_field_filter_hook__youtube_video( $value, $data ) { add_filter( 'um_profile_field_filter_hook__youtube_video', 'um_profile_field_filter_hook__youtube_video', 99, 2 ); +/** + * Outputs a spotify iframe + * + * @param $value + * @param $data + * + * @return bool|string + */ +function um_profile_field_filter_hook__spotify( $value, $data ) { + if ( preg_match( '/https:\/\/open.spotify.com\/.*/', $value ) ) { + $url = str_replace( 'open.spotify.com/', 'open.spotify.com/embed/', $value ); + + $value = '
+ +
'; + } else { + return __( 'Invalid Spotify URL', 'ultimate-member' ); + } + + return $value; +} +add_filter( 'um_profile_field_filter_hook__spotify', 'um_profile_field_filter_hook__spotify', 99, 2 ); + + /** * Outputs a vimeo video * @@ -428,6 +452,7 @@ function um_profile_field_filter_hook__( $value, $data, $type = '' ) { ) { if ( $data['validate'] == 'soundcloud_url' ) $value = 'https://soundcloud.com/' . $value; if ( $data['validate'] == 'youtube_url' ) $value = 'https://youtube.com/user/' . $value; +// if ( $data['validate'] == 'spotify_url' ) $value = 'https://open.spotify.com/' . $value; if ( $data['validate'] == 'telegram_url' ) $value = 'https://t.me/' . $value; if ( $data['validate'] == 'facebook_url' ) $value = 'https://facebook.com/' . $value; if ( $data['validate'] == 'twitter_url' ) $value = 'https://twitter.com/' . $value;