From 3b9d3b775fcffdeabab1fcba49514b8992bdded8 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Sun, 19 Dec 2021 13:50:51 -0800 Subject: [PATCH 01/13] slightly better test for JS, allow for WP_Error WP_Error assumes JS in plugin's vendor folder. --- wp-dismiss-notice.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 1fe45d2..7aa0da2 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -31,7 +31,9 @@ class WP_Dismiss_Notice { $composer_js_path = '/vendor/afragen/wp-dismiss-notice/js/dismiss-notice.js'; $plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); - $js_url = 200 === wp_remote_retrieve_response_code( wp_remote_head( $plugin_js_url ) ) + // Test to get correct URL for JS. + $response = wp_remote_head( $plugin_js_url ); + $js_url = ( 200 === wp_remote_retrieve_response_code( $response ) ) || is_wp_error( $response ) ? $plugin_js_url : get_stylesheet_directory_uri() . $composer_js_path; From 21949732f1ea21d81500bdda8f882ac7eb0f98af Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Sun, 19 Dec 2021 13:53:57 -0800 Subject: [PATCH 02/13] bump --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 95266a8..3662ecf 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.2.2", + "version": "0.2.3", "type": "library", "license": "MIT", "authors": [ From a5c05306a4c2f0b18aed7d9b27e97b247dc7773a Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Sun, 15 May 2022 17:35:10 -0700 Subject: [PATCH 03/13] save wp_remote_get check for a week in transient --- composer.json | 2 +- wp-dismiss-notice.php | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 3662ecf..a7f7d00 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.2.3", + "version": "0.2.4", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 7aa0da2..ab1cf06 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -32,8 +32,12 @@ class WP_Dismiss_Notice { $plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); // Test to get correct URL for JS. - $response = wp_remote_head( $plugin_js_url ); - $js_url = ( 200 === wp_remote_retrieve_response_code( $response ) ) || is_wp_error( $response ) + $response = get_transient( 'wp-dismiss-notice' ); + if ( ! $response ) { + $response = wp_remote_head( $plugin_js_url ); + set_transient( 'wp-dismiss-notice', $response, WEEK_IN_SECONDS ); + } + $js_url = ( 200 === wp_remote_retrieve_response_code( $response ) ) || is_wp_error( $response ) ? $plugin_js_url : get_stylesheet_directory_uri() . $composer_js_path; From 71029356cc2a8dfa13ee835c08d8a1b484c0e673 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Mon, 16 May 2022 09:32:39 -0700 Subject: [PATCH 04/13] more specific transient name --- composer.json | 2 +- wp-dismiss-notice.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index a7f7d00..1a6cc90 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.2.4", + "version": "0.2.5", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index ab1cf06..e7b4e4c 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -32,10 +32,10 @@ class WP_Dismiss_Notice { $plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); // Test to get correct URL for JS. - $response = get_transient( 'wp-dismiss-notice' ); + $response = get_transient( 'wp-dismiss-notice_jsurl' ); if ( ! $response ) { $response = wp_remote_head( $plugin_js_url ); - set_transient( 'wp-dismiss-notice', $response, WEEK_IN_SECONDS ); + set_transient( 'wp-dismiss-notice_jsurl', $response, WEEK_IN_SECONDS ); } $js_url = ( 200 === wp_remote_retrieve_response_code( $response ) ) || is_wp_error( $response ) ? $plugin_js_url From d6511c4eea243449dc6d15efcc807aa8ab0d3a91 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Mon, 25 Jul 2022 08:44:19 -0700 Subject: [PATCH 05/13] add filter for non-standard composer vendor-dir --- README.md | 10 ++++++++++ composer.json | 2 +- wp-dismiss-notice.php | 9 ++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7045743..bd4f9a1 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,13 @@ Example using a 14 day dismissible notice. ```html
...
``` + +Use the filter `dismiss_notice_vendor_dir` if you have set the composer `vendor-dir` to a non-standard location. + + /** + * Filter composer.json vendor directory. + * Some people don't use the standard vendor directory. + * + * @param string Composer vendor directory. + */ + $vendor_dir = apply_filters( 'dismiss_notice_vendor_dir', '/vendor' ); diff --git a/composer.json b/composer.json index 1a6cc90..b2da7e6 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.2.5", + "version": "0.2.6", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index e7b4e4c..5585094 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -28,7 +28,14 @@ class WP_Dismiss_Notice { return; } - $composer_js_path = '/vendor/afragen/wp-dismiss-notice/js/dismiss-notice.js'; + /** + * Filter composer.json vendor directory. + * Some people don't use the standard vendor directory. + * + * @param string Composer vendor directory. + */ + $vendor_dir = apply_filters( 'dismiss_notice_vendor_dir', '/vendor' ); + $composer_js_path = untrailingslashit( $vendor_dir ) . '/afragen/wp-dismiss-notice/js/dismiss-notice.js'; $plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); // Test to get correct URL for JS. From 8b690bc045620811d3c0724c2a2746cf1baab809 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Mon, 2 Jan 2023 11:27:07 -0800 Subject: [PATCH 06/13] update to not conflict with users of PaND --- composer.json | 2 +- js/dismiss-notice.js | 2 +- wp-dismiss-notice.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index b2da7e6..9bfa926 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.2.6", + "version": "0.3.0", "type": "library", "license": "MIT", "authors": [ diff --git a/js/dismiss-notice.js b/js/dismiss-notice.js index 3ab403e..0d615ff 100644 --- a/js/dismiss-notice.js +++ b/js/dismiss-notice.js @@ -23,7 +23,7 @@ option_name = attr_value.join('-'); data = { - 'action': 'dismiss_admin_notice', + 'action': 'wp_dismiss_notice', 'option_name': option_name, 'dismissible_length': dismissible_length, 'nonce': window.wp_dismiss_notice.nonce diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 5585094..7c47b78 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -16,7 +16,7 @@ class WP_Dismiss_Notice { */ public static function init() { add_action( 'admin_enqueue_scripts', [ __CLASS__, 'load_script' ] ); - add_action( 'wp_ajax_dismiss_admin_notice', [ __CLASS__, 'dismiss_admin_notice' ] ); + add_action( 'wp_ajax_wp_dismiss_notice', [ __CLASS__, 'dismiss_admin_notice' ] ); } /** From 2c421b09e838daa98ea645613584ac9d7d2b1a86 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Thu, 30 Mar 2023 13:06:00 -0700 Subject: [PATCH 07/13] use JSON as safe data storage Bypass unserialize from get_transient wanting to load class of stored object --- composer.json | 2 +- wp-dismiss-notice.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 9bfa926..60ddf16 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.3.0", + "version": "0.3.1", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 7c47b78..47a5d03 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -39,10 +39,10 @@ class WP_Dismiss_Notice { $plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); // Test to get correct URL for JS. - $response = get_transient( 'wp-dismiss-notice_jsurl' ); + $response = json_decode( get_transient( 'wp-dismiss-notice_jsurl' ) ); if ( ! $response ) { $response = wp_remote_head( $plugin_js_url ); - set_transient( 'wp-dismiss-notice_jsurl', $response, WEEK_IN_SECONDS ); + set_transient( 'wp-dismiss-notice_jsurl', json_encode( $response ), WEEK_IN_SECONDS ); } $js_url = ( 200 === wp_remote_retrieve_response_code( $response ) ) || is_wp_error( $response ) ? $plugin_js_url From 5a3dd3198c819a7e3df3062399f7c41548b5a8ab Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Thu, 30 Mar 2023 14:37:09 -0700 Subject: [PATCH 08/13] parse response and save --- composer.json | 2 +- wp-dismiss-notice.php | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 60ddf16..d138380 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.3.1", + "version": "0.3.2", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 47a5d03..1427301 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -39,12 +39,15 @@ class WP_Dismiss_Notice { $plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); // Test to get correct URL for JS. - $response = json_decode( get_transient( 'wp-dismiss-notice_jsurl' ) ); + $response = get_transient( 'wp-dismiss-notice_jsurl' ); if ( ! $response ) { $response = wp_remote_head( $plugin_js_url ); - set_transient( 'wp-dismiss-notice_jsurl', json_encode( $response ), WEEK_IN_SECONDS ); + $response = is_wp_error( $response ) ? $response->get_error_message() : wp_remote_retrieve_response_code( $response ); + if ( is_int( $response ) ) { + set_transient( 'wp-dismiss-notice_jsurl', $response, WEEK_IN_SECONDS ); + } } - $js_url = ( 200 === wp_remote_retrieve_response_code( $response ) ) || is_wp_error( $response ) + $js_url = ( 200 === $response ) ? $plugin_js_url : get_stylesheet_directory_uri() . $composer_js_path; From 606c0d5222ad223fb420bb33db947e592b213920 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Tue, 4 Apr 2023 18:03:20 -0700 Subject: [PATCH 09/13] cast to int --- composer.json | 2 +- wp-dismiss-notice.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index d138380..ca838ad 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.3.2", + "version": "0.3.3", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 1427301..3036664 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -47,7 +47,7 @@ class WP_Dismiss_Notice { set_transient( 'wp-dismiss-notice_jsurl', $response, WEEK_IN_SECONDS ); } } - $js_url = ( 200 === $response ) + $js_url = ( 200 === (int) $response ) ? $plugin_js_url : get_stylesheet_directory_uri() . $composer_js_path; From a195d3badb28965f6a33e04e7b488b7d8d29df39 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Wed, 5 Apr 2023 13:00:28 -0700 Subject: [PATCH 10/13] save int to transient, check for object object is stale cache --- composer.json | 2 +- wp-dismiss-notice.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index ca838ad..dd99975 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.3.3", + "version": "0.3.4", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 3036664..2e19292 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -40,9 +40,9 @@ class WP_Dismiss_Notice { // Test to get correct URL for JS. $response = get_transient( 'wp-dismiss-notice_jsurl' ); - if ( ! $response ) { + if ( ! $response || is_object( $response ) ) { $response = wp_remote_head( $plugin_js_url ); - $response = is_wp_error( $response ) ? $response->get_error_message() : wp_remote_retrieve_response_code( $response ); + $response = is_wp_error( $response ) ? 0 : wp_remote_retrieve_response_code( $response ); if ( is_int( $response ) ) { set_transient( 'wp-dismiss-notice_jsurl', $response, WEEK_IN_SECONDS ); } From 2e47f5fec355dc706ca5ec2c6082ebdc5c7d7088 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Tue, 30 May 2023 13:29:06 -0700 Subject: [PATCH 11/13] load JS where it exists stop messing with tests for URL and transients --- composer.json | 2 +- wp-dismiss-notice.php | 21 +++++++-------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index dd99975..042f5d5 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.3.4", + "version": "0.3.5", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index 2e19292..fab0d42 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -15,6 +15,7 @@ class WP_Dismiss_Notice { * Init hooks. */ public static function init() { + $version = json_decode( file_get_contents( './composer.json' ) ); add_action( 'admin_enqueue_scripts', [ __CLASS__, 'load_script' ] ); add_action( 'wp_ajax_wp_dismiss_notice', [ __CLASS__, 'dismiss_admin_notice' ] ); } @@ -28,6 +29,9 @@ class WP_Dismiss_Notice { return; } + $js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); + $version = json_decode( file_get_contents( __DIR__ . '/composer.json' ) )->version; + /** * Filter composer.json vendor directory. * Some people don't use the standard vendor directory. @@ -36,26 +40,15 @@ class WP_Dismiss_Notice { */ $vendor_dir = apply_filters( 'dismiss_notice_vendor_dir', '/vendor' ); $composer_js_path = untrailingslashit( $vendor_dir ) . '/afragen/wp-dismiss-notice/js/dismiss-notice.js'; - $plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' ); - - // Test to get correct URL for JS. - $response = get_transient( 'wp-dismiss-notice_jsurl' ); - if ( ! $response || is_object( $response ) ) { - $response = wp_remote_head( $plugin_js_url ); - $response = is_wp_error( $response ) ? 0 : wp_remote_retrieve_response_code( $response ); - if ( is_int( $response ) ) { - set_transient( 'wp-dismiss-notice_jsurl', $response, WEEK_IN_SECONDS ); - } + if ( '/vendor' !== $vendor_dir ) { + $js_url = home_url( $composer_js_path ); } - $js_url = ( 200 === (int) $response ) - ? $plugin_js_url - : get_stylesheet_directory_uri() . $composer_js_path; wp_enqueue_script( 'dismissible-notices', $js_url, [ 'jquery', 'common' ], - false, + $version, true ); From 63fbe9fd01f240fff382aa761dd52c12a16bd715 Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Tue, 30 May 2023 13:35:45 -0700 Subject: [PATCH 12/13] oops, remove test code --- composer.json | 2 +- wp-dismiss-notice.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 042f5d5..d33f48a 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.3.5", + "version": "0.3.6", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index fab0d42..c913101 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -15,7 +15,6 @@ class WP_Dismiss_Notice { * Init hooks. */ public static function init() { - $version = json_decode( file_get_contents( './composer.json' ) ); add_action( 'admin_enqueue_scripts', [ __CLASS__, 'load_script' ] ); add_action( 'wp_ajax_wp_dismiss_notice', [ __CLASS__, 'dismiss_admin_notice' ] ); } From 3e2c694ca891fe94771457f54a3a5457a70c0aec Mon Sep 17 00:00:00 2001 From: Andy Fragen Date: Tue, 30 May 2023 14:45:15 -0700 Subject: [PATCH 13/13] add test for install to theme --- composer.json | 2 +- wp-dismiss-notice.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d33f48a..99c07dc 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "afragen/wp-dismiss-notice", "description": "Library for time dismissible WordPress admin notices.", - "version": "0.3.6", + "version": "0.3.7", "type": "library", "license": "MIT", "authors": [ diff --git a/wp-dismiss-notice.php b/wp-dismiss-notice.php index c913101..ad669ef 100644 --- a/wp-dismiss-notice.php +++ b/wp-dismiss-notice.php @@ -39,6 +39,14 @@ class WP_Dismiss_Notice { */ $vendor_dir = apply_filters( 'dismiss_notice_vendor_dir', '/vendor' ); $composer_js_path = untrailingslashit( $vendor_dir ) . '/afragen/wp-dismiss-notice/js/dismiss-notice.js'; + + $theme_js_url = get_theme_file_uri( $composer_js_path ); + $theme_js_file = parse_url( $theme_js_url, PHP_URL_PATH ); + + if ( file_exists( ABSPATH . $theme_js_file ) ) { + $js_url = $theme_js_url; + } + if ( '/vendor' !== $vendor_dir ) { $js_url = home_url( $composer_js_path ); }