diff --git a/includes/class-init.php b/includes/class-init.php
index a382578e..29a181a1 100644
--- a/includes/class-init.php
+++ b/includes/class-init.php
@@ -189,6 +189,8 @@ if ( ! class_exists( 'UM' ) ) {
// include hook files
add_action( 'plugins_loaded', array( &$this, 'init' ), 0 );
+ //add_action( 'init', array( &$this, 'old_extensions_notice' ), 0 );
+
//run activation
register_activation_hook( um_plugin, array( &$this, 'activation' ) );
@@ -203,6 +205,36 @@ if ( ! class_exists( 'UM' ) ) {
}
+ function old_extensions_notice() {
+ if ( ! is_admin() ) return;
+
+ $show = false;
+
+ $slugs = array_map( function( $item ) {
+ return 'um-' . $item . '/um-' . $item . '.php';
+ }, array_keys( $this->dependencies()->ext_required_version ) );
+
+ $active_plugins = $this->dependencies()->get_active_plugins();
+ foreach ( $slugs as $slug ) {
+ if ( in_array( $slug, $active_plugins ) ) {
+ $plugin_data = get_plugin_data( um_path . '..' . DIRECTORY_SEPARATOR . $slug );
+ if ( version_compare( '2.0', $plugin_data['Version'], '>' ) ) {
+ $show = true;
+ break;
+ }
+ }
+ }
+
+ if ( ! $show ) return;
+
+ /*global $um_woocommerce;
+ remove_action( 'init', array( $um_woocommerce, 'plugin_check' ), 1 );
+ $um_woocommerce->plugin_inactive = true;*/
+
+ echo '
' . sprintf( __( 'ATTENTION! You have pre-2.0 version activated %s extensions. Please install the latest versions.', 'ultimate-member' ), ultimatemember_plugin_name ) . '
';
+ }
+
+
/**
* Autoload UM classes handler
*
@@ -1077,7 +1109,6 @@ if ( ! class_exists( 'UM' ) ) {
require_once 'core/um-filters-files.php';
require_once 'core/um-filters-navmenu.php';
require_once 'core/um-filters-avatars.php';
- require_once 'core/um-filters-arguments.php';
require_once 'core/um-filters-user.php';
require_once 'core/um-filters-members.php';
require_once 'core/um-filters-profile.php';
diff --git a/includes/core/class-shortcodes.php b/includes/core/class-shortcodes.php
index 367ffad3..17adf08e 100644
--- a/includes/core/class-shortcodes.php
+++ b/includes/core/class-shortcodes.php
@@ -10,23 +10,27 @@ if ( ! class_exists( 'Shortcodes' ) ) {
function __construct() {
$this->message_mode = false;
+ $this->custom_message = '';
$this->loop = array();
add_shortcode( 'ultimatemember', array( &$this, 'ultimatemember' ) );
- add_shortcode('um_loggedin', array(&$this, 'um_loggedin'));
- add_shortcode('um_loggedout', array(&$this, 'um_loggedout'));
- add_shortcode('um_show_content', array(&$this, 'um_shortcode_show_content_for_role') );
- add_shortcode('ultimatemember_searchform', array(&$this, 'ultimatemember_searchform') );
+ add_shortcode( 'um_loggedin', array( &$this, 'um_loggedin' ) );
+ add_shortcode( 'um_loggedout', array( &$this, 'um_loggedout' ) );
+ add_shortcode( 'um_show_content', array( &$this, 'um_shortcode_show_content_for_role' ) );
+ add_shortcode( 'ultimatemember_searchform', array( &$this, 'ultimatemember_searchform' ) );
- add_filter('body_class', array(&$this, 'body_class'), 0);
+ add_filter( 'body_class', array( &$this, 'body_class' ), 0 );
- $base_uri = apply_filters('um_emoji_base_uri', 'https://s.w.org/images/core/emoji/');
+ add_filter( 'um_shortcode_args_filter', array( &$this, 'display_logout_form' ), 99 );
+ add_filter( 'um_shortcode_args_filter', array( &$this, 'parse_shortcode_args' ), 99 );
- $this->emoji[':)'] = $base_uri . '72x72/1f604.png';
- $this->emoji[':smiley:'] = $base_uri . '72x72/1f603.png';
+ $base_uri = apply_filters( 'um_emoji_base_uri', 'https://s.w.org/images/core/emoji/' );
+
+ $this->emoji[':)'] = $base_uri . '72x72/1f604.png';
+ $this->emoji[':smiley:'] = $base_uri . '72x72/1f603.png';
$this->emoji[':D'] = $base_uri . '72x72/1f600.png';
$this->emoji[':$'] = $base_uri . '72x72/1f60a.png';
$this->emoji[':relaxed:'] = $base_uri . '72x72/263a.png';
@@ -86,6 +90,59 @@ if ( ! class_exists( 'Shortcodes' ) ) {
}
+
+ /**
+ * Conditional logout form
+ *
+ * @param array $args
+ *
+ * @return array
+ */
+ function display_logout_form( $args ) {
+ if ( is_user_logged_in() && isset( $args['mode'] ) && $args['mode'] == 'login' ) {
+
+ if ( get_current_user_id() != um_user( 'ID' ) ) {
+ um_fetch_user( get_current_user_id() );
+ }
+
+ $args['template'] = 'logout';
+ }
+
+ return $args;
+ }
+
+
+ /**
+ * Filter shortcode args
+ *
+ * @param array $args
+ *
+ * @return array
+ */
+ function parse_shortcode_args( $args ) {
+ if ( $this->message_mode == true ) {
+
+ if ( ! empty( $_REQUEST['um_role'] ) ) {
+ $args['template'] = 'message';
+ $roleID = esc_attr( $_REQUEST['um_role'] );
+ $role = UM()->roles()->role_data( $roleID );
+
+ if ( ! empty( $role ) && ! empty( $role["status"] ) ) {
+ $message_key = $role["status"] . '_message';
+ $this->custom_message = ! empty( $role[ $message_key ] ) ? $role[ $message_key ] : '';
+ }
+ }
+
+ }
+
+ foreach ( $args as $k => $v ) {
+ $args[ $k ] = maybe_unserialize( $args[ $k ] );
+ }
+
+ return $args;
+ }
+
+
/***
*** @emoji support
*/
diff --git a/includes/core/um-filters-arguments.php b/includes/core/um-filters-arguments.php
deleted file mode 100644
index d834d26c..00000000
--- a/includes/core/um-filters-arguments.php
+++ /dev/null
@@ -1,48 +0,0 @@
-shortcodes()->message_mode == true ) {
-
- $args['template'] = 'message';
- $roleID = esc_attr( $_REQUEST['um_role'] );
- $role = UM()->roles()->role_data( $roleID );
- $status = $role["status"];
- $message = $role["{$status}_message"];
- UM()->shortcodes()->custom_message = $message;
-
- }
-
- foreach( $args as $k => $v ) {
- $args[$k] = maybe_unserialize( $args[$k] );
- }
-
- return $args;
-
- }
\ No newline at end of file