From f3b96f7cec7e7fd8c1e46d7239ce06dbd71c7806 Mon Sep 17 00:00:00 2001 From: Erick Hitter <git-contrib@ethitter.com> Date: Fri, 8 Jul 2022 20:02:26 -0700 Subject: [PATCH] Add admin notice --- languages/redis-user-session-storage.pot | 8 +++- redis-user-session-storage.php | 57 ++++++++++++++++-------- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/languages/redis-user-session-storage.pot b/languages/redis-user-session-storage.pot index 7570f30..18c5244 100644 --- a/languages/redis-user-session-storage.pot +++ b/languages/redis-user-session-storage.pot @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: Redis User Session Storage 0.2\n" "Report-Msgid-Bugs-To: " "https://wordpress.org/support/plugin/redis-user-session-storage\n" -"POT-Creation-Date: 2022-07-09 00:58:27+00:00\n" +"POT-Creation-Date: 2022-07-09 03:01:34+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -25,6 +25,12 @@ msgstr "" "X-Textdomain-Support: yes\n" "X-Generator: grunt-wp-i18n 1.0.3\n" +#: redis-user-session-storage.php:89 +msgid "" +"%1$s: An outdated version of this plugin, %2$s, is active. Please " +"deactivate it to use the current version." +msgstr "" + #. Plugin Name of the plugin/theme msgid "Redis User Session Storage" msgstr "" diff --git a/redis-user-session-storage.php b/redis-user-session-storage.php index 7257128..0599bce 100644 --- a/redis-user-session-storage.php +++ b/redis-user-session-storage.php @@ -39,40 +39,59 @@ use WP_Session_Tokens; * @return void */ function load() { - if ( ! class_exists( Redis::class, false ) ) { - return; - } - - if ( ! class_exists( WP_Session_Tokens::class, false ) ) { - return; - } - - if ( class_exists( WP_Redis_User_Session_Storage::class, false ) ) { - // TODO: warn user to disable old plugin. + if ( + ! class_exists( Redis::class, false ) + || ! class_exists( WP_Session_Tokens::class, false ) + ) { return; } require_once __DIR__ . '/inc/class-plugin.php'; - class_alias( - Plugin::class, - 'WP_Redis_User_Session_Storage', - false - ); - add_filter( 'session_token_manager', __NAMESPACE__ . '\set_session_token_manager' ); } - -add_action( 'plugins_loaded', __NAMESPACE__ . '\load' ); +load(); /** * Override Core's default usermeta-based token storage. * + * @param string $manager * @return string */ -function set_session_token_manager() { +function set_session_token_manager( $manager ) { + if ( class_exists( WP_Redis_User_Session_Storage::class, false ) ) { + add_action( 'admin_notices', __NAMESPACE__ . '\admin_notice' ); + + return $manager; + } + return Plugin::class; } + +/** + * Show admin notice to certain users when older version is active. + * + * @return void + */ +function admin_notice() { + if ( ! current_user_can( 'activate_plugins' ) ) { + return; + } + + ?> + <div id="message" class="error"> + <p> + <?php + printf( + __( '%1$s: An outdated version of this plugin, %2$s, is active. Please deactivate it to use the current version.', 'redis-user-session-storage' ), + '<strong>Redis User Session Storage</strong>', + '<em>WP Redis User Session Storage</em>' + ); + ?> + </p> + </div> + <?php +} -- GitLab