diff --git a/includes/class-init.php b/includes/class-init.php
index f95b6f49..59a563c3 100644
--- a/includes/class-init.php
+++ b/includes/class-init.php
@@ -175,7 +175,6 @@ if ( ! class_exists( 'UM' ) ) {
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'ultimate-member' ), '1.0' );
}
-
/**
* UM constructor.
*
@@ -185,7 +184,6 @@ if ( ! class_exists( 'UM' ) ) {
parent::__construct();
}
-
/**
* UM pseudo-constructor.
*
@@ -202,19 +200,17 @@ if ( ! class_exists( 'UM' ) ) {
}
$this->is_filtering = 0;
- $this->honeypot = 'um_request';
-
- // @todo investigate permanently delete https://make.wordpress.org/core/2024/10/21/i18n-improvements-6-7/#Enhanced-support-for-only-using-PHP-translation-files
- add_action( 'init', array( &$this, 'localize' ), 0 ); // textdomain loading
+ $this->honeypot = 'um_request';
// include UM classes
$this->includes();
// include hook files
add_action( 'plugins_loaded', array( &$this, 'init' ), 0 );
- //run hook for extensions init
+ // run hook for extensions init
add_action( 'plugins_loaded', array( &$this, 'extensions_init' ), -19 );
+ // Fallback to avoid fatal errors for users who still have UM extensions compatible with UM 1.3.x and install UM >= 2.0 version before these extensions update.
add_action( 'init', array( &$this, 'old_update_patch' ), 0 );
//run activation
@@ -222,7 +218,7 @@ if ( ! class_exists( 'UM' ) ) {
register_deactivation_hook( UM_PLUGIN, array( &$this, 'deactivation' ) );
- if ( is_multisite() && ! defined( 'DOING_AJAX' ) ) {
+ if ( ! defined( 'DOING_AJAX' ) && is_multisite() ) {
add_action( 'wp_loaded', array( $this, 'maybe_network_activation' ) );
}
@@ -242,39 +238,17 @@ if ( ! class_exists( 'UM' ) ) {
* Note: 'ultimate-member' is a default textdomain.
*
* @since 2.8.5 WordPress native functions are used to make this function clear.
+ * @deprecated 2.9.2 Ref. https://make.wordpress.org/core/2024/10/21/i18n-improvements-6-7/#Enhanced-support-for-only-using-PHP-translation-files
*/
-// public function localize() {
-// $default_domain = dirname( plugin_basename( UM_PLUGIN ) );
-// /**
-// * Filters the plugin's textdomain.
-// *
-// * @param {string} $domain Plugin's textdomain.
-// *
-// * @return {string} Maybe changed plugin's textdomain.
-// *
-// * @since 1.3.x
-// * @hook um_language_textdomain
-// *
-// * @example
Change UM language locale.
-// * function my_um_language_textdomain( $domain ) {
-// * $domain = 'ultimate-member-custom';
-// * return $domain;
-// * }
-// * add_filter( 'um_language_textdomain', 'my_um_language_textdomain' );
-// */
-// $domain = apply_filters( 'um_language_textdomain', $default_domain );
-//
-// // Unload textdomain if it has already loaded.
-// if ( is_textdomain_loaded( $domain ) ) {
-// unload_textdomain( $domain, true );
-// }
-// load_plugin_textdomain( $domain, false, $default_domain . '/languages' );
-// }
+ public function localize() {
+ _deprecated_function( __METHOD__, '2.9.2', '' );
+ }
/**
- * 1.3.x active extensions deactivate for properly running 2.0.x AJAX upgrades
+ * Fallback to avoid fatal errors for users who still have UM extensions compatible with UM 1.3.x and install UM >= 2.0 version before these extensions update.
+ * Doing 1.3.x active extensions deactivate for properly running 2.0.x AJAX upgrades.
*/
- function old_update_patch() {
+ public function old_update_patch() {
global $um_woocommerce, $um_bbpress, $um_followers, $um_friends, $um_mailchimp, $um_messaging, $um_mycred, $um_notices, $um_notifications, $um_online, $um_private_content, $um_profile_completeness, $um_recaptcha, $um_reviews, $um_activity, $um_social_login, $um_user_tags, $um_verified;
if ( is_object( $um_woocommerce ) ) {
diff --git a/includes/core/class-access.php b/includes/core/class-access.php
index 798a94f2..183c770d 100644
--- a/includes/core/class-access.php
+++ b/includes/core/class-access.php
@@ -55,12 +55,12 @@ if ( ! class_exists( 'um\core\Access' ) ) {
// change the title of the post
add_filter( 'the_title', array( &$this, 'filter_restricted_post_title' ), 10, 2 );
// change the content of the restricted post
- add_filter( 'the_content', array( &$this, 'filter_restricted_post_content' ), 999999, 1 );
+ add_filter( 'the_content', array( &$this, 'filter_restricted_post_content' ), 999999 );
// change the excerpt of the restricted post
add_filter( 'get_the_excerpt', array( &$this, 'filter_restricted_post_excerpt' ), 999999, 2 );
// comments queries
- add_action( 'pre_get_comments', array( &$this, 'exclude_posts_comments' ), 99, 1 );
+ add_action( 'pre_get_comments', array( &$this, 'exclude_posts_comments' ), 99 );
add_filter( 'wp_count_comments', array( &$this, 'custom_comments_count_handler' ), 99, 2 );
// comments RSS
add_filter( 'comment_feed_where', array( &$this, 'exclude_posts_comments_feed' ), 99, 2 );
@@ -97,19 +97,19 @@ if ( ! class_exists( 'um\core\Access' ) ) {
add_filter( 'has_post_thumbnail', array( &$this, 'filter_post_thumbnail' ), 99, 3 );
// Change recent posts widget query.
- add_filter( 'widget_posts_args', array( &$this, 'exclude_restricted_posts_widget' ), 99, 1 );
+ add_filter( 'widget_posts_args', array( &$this, 'exclude_restricted_posts_widget' ), 99 );
// Exclude pages displayed by wp_list_pages function.
- add_filter( 'wp_list_pages_excludes', array( &$this, 'exclude_restricted_pages' ), 10, 1 );
+ add_filter( 'wp_list_pages_excludes', array( &$this, 'exclude_restricted_pages' ) );
// Archives list change where based on restricted posts.
add_filter( 'getarchives_where', array( &$this, 'exclude_restricted_posts_archives_widget' ), 99, 2 );
// Callbacks for changing posts query.
- add_action( 'pre_get_posts', array( &$this, 'exclude_posts' ), 99, 1 );
+ add_action( 'pre_get_posts', array( &$this, 'exclude_posts' ), 99 );
add_filter( 'posts_where', array( &$this, 'exclude_posts_where' ), 10, 2 );
add_filter( 'wp_count_posts', array( &$this, 'custom_count_posts_handler' ), 99, 3 );
// Callbacks for changing terms query.
- add_action( 'pre_get_terms', array( &$this, 'exclude_hidden_terms_query' ), 99, 1 );
+ add_action( 'pre_get_terms', array( &$this, 'exclude_hidden_terms_query' ), 99 );
// there is posts (Posts/Page/CPT) filtration if site is accessible
// there also will be redirects if they need
@@ -124,12 +124,12 @@ if ( ! class_exists( 'um\core\Access' ) ) {
remove_action( 'pre_get_terms', array( &$this, 'exclude_hidden_terms_query' ), 99 );
remove_filter( 'widget_posts_args', array( &$this, 'exclude_restricted_posts_widget' ), 99 );
- remove_filter( 'wp_list_pages_excludes', array( &$this, 'exclude_restricted_pages' ), 10 );
+ remove_filter( 'wp_list_pages_excludes', array( &$this, 'exclude_restricted_pages' ) );
remove_filter( 'getarchives_where', array( &$this, 'exclude_restricted_posts_archives_widget' ), 99 );
remove_filter( 'get_next_post_where', array( &$this, 'exclude_navigation_posts' ), 99 );
remove_filter( 'get_previous_post_where', array( &$this, 'exclude_navigation_posts' ), 99 );
remove_action( 'pre_get_posts', array( &$this, 'exclude_posts' ), 99 );
- remove_filter( 'posts_where', array( &$this, 'exclude_posts_where' ), 10 );
+ remove_filter( 'posts_where', array( &$this, 'exclude_posts_where' ) );
remove_filter( 'wp_count_posts', array( &$this, 'custom_count_posts_handler' ), 99 );
}
diff --git a/includes/core/class-mail.php b/includes/core/class-mail.php
index d60e4525..60d7c298 100644
--- a/includes/core/class-mail.php
+++ b/includes/core/class-mail.php
@@ -47,25 +47,8 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
* Mail constructor.
*/
public function __construct() {
- //mandrill compatibility
+ add_action( 'init', array( &$this, 'init_paths' ), 0 ); // init class variables on zero-priority.
add_filter( 'mandrill_nl2br', array( &$this, 'mandrill_nl2br' ) );
- add_action( 'plugins_loaded', array( &$this, 'init_paths' ), 99 ); // @todo change to init.
- }
-
- /**
- * Mandrill compatibility
- *
- * @param $nl2br
- * @param string $message
- * @return bool
- */
- public function mandrill_nl2br( $nl2br, $message = '' ) {
- // text emails
- if ( ! UM()->options()->get( 'email_html' ) ) {
- $nl2br = true;
- }
-
- return $nl2br;
}
/**
@@ -85,7 +68,7 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
* @example Extends email templates path.
* function my_email_templates_path_by_slug( $paths ) {
* // your code here
- * $paths['{template_name}'] = '{template_path}';
+ * $paths['template_name'] = 'template_path';
* return $paths;
* }
* add_filter( 'um_email_templates_path_by_slug', 'my_email_templates_path_by_slug' );
@@ -93,6 +76,20 @@ if ( ! class_exists( 'um\core\Mail' ) ) {
$this->path_by_slug = apply_filters( 'um_email_templates_path_by_slug', $this->path_by_slug );
}
+ /**
+ * Mandrill compatibility
+ *
+ * @param $nl2br
+ * @return bool
+ */
+ public function mandrill_nl2br( $nl2br ) {
+ if ( ! UM()->options()->get( 'email_html' ) ) {
+ $nl2br = true; // nl2br for text emails
+ }
+
+ return $nl2br;
+ }
+
/**
* Check blog ID on multisite, return '' if single site.
*
diff --git a/includes/um-deprecated-hooks.php b/includes/um-deprecated-hooks.php
index a41bd2f1..3a594618 100644
--- a/includes/um-deprecated-hooks.php
+++ b/includes/um-deprecated-hooks.php
@@ -109,3 +109,15 @@ if ( ! defined( 'ABSPATH' ) ) {
* @depecated 2.8.7 Fully deprecated because there is used dropdown with statuses instead of list table views.
* @hook um_admin_views_users
*/
+
+/**
+ * Filters the plugin's textdomain.
+ *
+ * @param {string} $domain Plugin's textdomain.
+ *
+ * @return {string} Maybe changed plugin's textdomain.
+ *
+ * @since 1.3.x
+ * @depecated 2.9.2 Fully deprecated because minimum required WP version is 5.5, but we cannot use `load_plugin_textdomain()` function since 4.6.0 if the plugin is situated in wp.org plugins directory.
+ * @hook um_language_textdomain
+ */