From f4d12512202e52f545256ed3d6b665f9879df92a Mon Sep 17 00:00:00 2001 From: nikitozzzzzzz Date: Mon, 19 Feb 2018 00:22:34 +0200 Subject: [PATCH] - small fixes for language url function; --- includes/class-init.php | 1 - includes/core/class-external-integrations.php | 82 +++++++++++++++++-- includes/core/um-filters-language.php | 66 --------------- includes/um-deprecated-functions.php | 15 +--- 4 files changed, 78 insertions(+), 86 deletions(-) delete mode 100644 includes/core/um-filters-language.php diff --git a/includes/class-init.php b/includes/class-init.php index ad3d68ce..ecd6a035 100644 --- a/includes/class-init.php +++ b/includes/class-init.php @@ -1115,7 +1115,6 @@ if ( ! class_exists( 'UM' ) ) { require_once 'core/um-actions-save-profile.php'; require_once 'core/um-actions-misc.php'; - require_once 'core/um-filters-language.php'; require_once 'core/um-filters-login.php'; require_once 'core/um-filters-fields.php'; require_once 'core/um-filters-files.php'; diff --git a/includes/core/class-external-integrations.php b/includes/core/class-external-integrations.php index f56f3e17..94382182 100644 --- a/includes/core/class-external-integrations.php +++ b/includes/core/class-external-integrations.php @@ -14,13 +14,16 @@ if ( ! class_exists( 'External_Integrations' ) ) { //WPML translations add_filter( 'um_get_core_page_filter', array( &$this, 'get_core_page_url' ), 10, 3 ); add_filter( 'um_admin_settings_email_section_fields', array( &$this, 'um_admin_settings_email_section_fields' ), 10, 2 ); - add_filter( 'um_email_send_subject', array( &$this , 'um_email_send_subject' ), 10, 2 ); - add_filter( 'um_locate_email_template', array( &$this , 'locate_email_template' ), 10, 2 ); - add_filter( 'um_change_email_template_file', array( &$this , 'change_email_template_file' ), 10, 1 ); - add_filter( 'um_email_templates_columns', array( &$this , 'add_email_templates_wpml_column' ), 10, 1 ); + add_filter( 'um_email_send_subject', array( &$this, 'um_email_send_subject' ), 10, 2 ); + add_filter( 'um_locate_email_template', array( &$this, 'locate_email_template' ), 10, 2 ); + add_filter( 'um_change_email_template_file', array( &$this, 'change_email_template_file' ), 10, 1 ); + add_filter( 'um_email_templates_columns', array( &$this, 'add_email_templates_wpml_column' ), 10, 1 ); - add_action( 'um_access_fix_external_post_content', array( &$this , 'bbpress_no_access_message_fix' ), 10 ); + add_action( 'um_access_fix_external_post_content', array( &$this, 'bbpress_no_access_message_fix' ), 10 ); + + add_filter( 'um_localize_permalink_filter', array( &$this, 'um_localize_permalink_filter' ), 10, 2 ); + add_filter( 'icl_ls_languages', array( &$this, 'um_core_page_wpml_permalink' ), 10, 1 ); } @@ -32,6 +35,75 @@ if ( ! class_exists( 'External_Integrations' ) ) { } + /** + * @param $profile_url + * @param $page_id + * + * @return bool|false|string + */ + function um_localize_permalink_filter( $profile_url, $page_id ) { + + if ( ! $this->is_wpml_active() ) + return $profile_url; + + if ( function_exists( 'icl_get_current_language' ) && icl_get_current_language() != icl_get_default_language() ) { + if ( get_the_ID() > 0 && get_post_meta( get_the_ID(), '_um_wpml_user', true ) == 1 ) { + $profile_url = get_permalink( get_the_ID() ); + } + } + + // WPML compatibility + if ( function_exists( 'icl_object_id' ) ) { + $language_code = ICL_LANGUAGE_CODE; + $lang_post_id = icl_object_id( $page_id , 'page', true, $language_code ); + + if ( $lang_post_id != 0 ) { + $profile_url = get_permalink( $lang_post_id ); + } else { + // No page found, it's most likely the homepage + global $sitepress; + $profile_url = $sitepress->language_url( $language_code ); + } + } + + return $profile_url; + } + + + /** + * @param $array + * + * @return mixed + */ + function um_core_page_wpml_permalink( $array ) { + + if ( ! $this->is_wpml_active() ) + return $array; + + global $sitepress; + if( ! um_is_core_page("user") ) return $array; + if( ! defined("ICL_LANGUAGE_CODE") ) return $array; + if( ! function_exists('icl_object_id') ) return $array; + + // Permalink base + $permalink_base = UM()->options()->get( 'permalink_base' ); + + // Get user slug + $profile_slug = strtolower( get_user_meta( um_profile_id(), "um_user_profile_url_slug_{$permalink_base}", true ) ); + $current_language = ICL_LANGUAGE_CODE; + foreach ( $array as $lang_code => $arr ) { + $sitepress->switch_lang( $lang_code ); + $user_page = um_get_core_page( "user" ); + + $array[ $lang_code ]['url'] = "{$user_page}{$profile_slug}/"; + } + + $sitepress->switch_lang( $current_language ); + + return $array; + } + + /** * Check if WPML is active * diff --git a/includes/core/um-filters-language.php b/includes/core/um-filters-language.php deleted file mode 100644 index eb0f41bb..00000000 --- a/includes/core/um-filters-language.php +++ /dev/null @@ -1,66 +0,0 @@ - 0 && get_post_meta( get_the_ID(), '_um_wpml_user', true ) == 1 ) { - $profile_url = get_permalink( get_the_ID() ); - } - } - - // WPML compatibility - if ( function_exists('icl_object_id') ) { - $language_code = ICL_LANGUAGE_CODE; - $lang_post_id = icl_object_id( $page_id , 'page', true, $language_code ); - - if($lang_post_id != 0) { - $profile_url = get_permalink( $lang_post_id ); - }else { - // No page found, it's most likely the homepage - global $sitepress; - $profile_url = $sitepress->language_url( $language_code ); - } - - } - - return $profile_url; - -} - -add_filter('um_core_page_id_filter','um_core_page_id_filter'); -function um_core_page_id_filter( $page_id ){ - - return $page_id; -} - -/** - * Adds correct profile url to WPML language switcher - */ -add_filter( 'icl_ls_languages','um_core_page_wpml_permalink', 10, 1 ); -function um_core_page_wpml_permalink( $array ){ - global $sitepress; - if( ! um_is_core_page("user") ) return $array; - if( ! defined("ICL_LANGUAGE_CODE") ) return $array; - if( ! function_exists('icl_object_id') ) return $array; - - // Permalink base - $permalink_base = UM()->options()->get( 'permalink_base' ); - - // Get user slug - $profile_slug = strtolower( get_user_meta( um_profile_id(), "um_user_profile_url_slug_{$permalink_base}", true ) ); - $current_language = ICL_LANGUAGE_CODE; - foreach ( $array as $lang_code => $arr ) { - $sitepress->switch_lang( $lang_code ); - $user_page = um_get_core_page("user"); - - $array[ $lang_code ]['url'] = "{$user_page}{$profile_slug}/"; - } - - $sitepress->switch_lang( $current_language ); - - return $array; -} \ No newline at end of file diff --git a/includes/um-deprecated-functions.php b/includes/um-deprecated-functions.php index 57a07426..99176ce0 100644 --- a/includes/um-deprecated-functions.php +++ b/includes/um-deprecated-functions.php @@ -349,18 +349,5 @@ function um_core_is_local() { */ function um_get_url_for_language( $post_id, $language ) { //um_deprecated_function( 'um_get_url_for_language', '2.0', 'UM()->external_integrations()->get_url_for_language' ); - if ( ! UM()->external_integrations()->is_wpml_active() ) - return ''; - - $lang_post_id = icl_object_id( $post_id, 'page', true, $language ); - - if ( $lang_post_id != 0 ) { - $url = get_permalink( $lang_post_id ); - } else { - // No page found, it's most likely the homepage - global $sitepress; - $url = $sitepress->language_url( $language ); - } - - return $url; + return UM()->external_integrations()->get_url_for_language( $post_id, $language ); } \ No newline at end of file