From b2e54175cb4c2339814abde33f7740956c07cc0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Apr 2026 14:49:40 +0300 Subject: [PATCH 1/2] chore(deps-dev): bump phpstan/phpstan from 2.1.45 to 2.1.46 (#1305) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-version: 2.1.46 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index 76cba7af..792aab5b 100644 --- a/composer.lock +++ b/composer.lock @@ -1066,11 +1066,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.45", + "version": "2.1.46", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f8cdfd9421b7edb7686a2d150a234870464eac70", - "reference": "f8cdfd9421b7edb7686a2d150a234870464eac70", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a193923fc2d6325ef4e741cf3af8c3e8f54dbf25", + "reference": "a193923fc2d6325ef4e741cf3af8c3e8f54dbf25", "shasum": "" }, "require": { @@ -1115,7 +1115,7 @@ "type": "github" } ], - "time": "2026-03-30T13:22:02+00:00" + "time": "2026-04-01T09:25:14+00:00" }, { "name": "phpunit/php-code-coverage", From 1af67d694bdae46bad0cdcff6f8804231b9da9dd Mon Sep 17 00:00:00 2001 From: Soare Robert Daniel Date: Tue, 7 Apr 2026 18:11:47 +0300 Subject: [PATCH 2/2] refactor: change Black Friday labels (#1288) --- classes/Visualizer/Module/Admin.php | 57 +++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/classes/Visualizer/Module/Admin.php b/classes/Visualizer/Module/Admin.php index 42dbc2be..748bf9a3 100644 --- a/classes/Visualizer/Module/Admin.php +++ b/classes/Visualizer/Module/Admin.php @@ -1407,16 +1407,19 @@ public function getPluginMetaLinks( $plugin_meta, $plugin_file ) { } if ( $plugin_file === plugin_basename( VISUALIZER_BASEFILE ) ) { + $is_black_friday = apply_filters( 'themeisle_sdk_is_black_friday_sale', false ); // knowledge base link $plugin_meta[] = sprintf( '%s', esc_html__( 'Docs', 'visualizer' ) ); - // flattr link - $plugin_meta[] = sprintf( - '%s', - esc_html__( 'Get Visualizer Pro', 'visualizer' ) - ); + if ( ! $is_black_friday ) { + // flattr link + $plugin_meta[] = sprintf( + '%s', + esc_html__( 'Get Visualizer Pro', 'visualizer' ) + ); + } } return $plugin_meta; @@ -1598,29 +1601,51 @@ public function count_charts( $limit = -1 ) { public function add_black_friday_data( $configs ) { $config = $configs['default']; - // translators: %1$s - HTML tag, %2$s - discount, %3$s - HTML tag, %4$s - product name. - $message_template = __( 'Our biggest sale of the year: %1$sup to %2$s OFF%3$s on %4$s. Don\'t miss this limited-time offer.', 'visualizer' ); - $product_label = 'Visualizer'; - $discount = '70%'; + $message = __( 'Database queries, private charts, auto-sync. Go beyond basic charts. Exclusively for existing Visualizer users.', 'visualizer' ); + $cta_label = __( 'Get Visualizer Pro', 'visualizer' ); $plan = apply_filters( 'product_visualizer_license_plan', 0 ); $license = apply_filters( 'product_visualizer_license_key', false ); - $is_pro = 0 < $plan; + $status = apply_filters( 'product_visualizer_license_status', false ); + $pro_product_slug = defined( 'VISUALIZER_PRO_BASEFILE' ) ? basename( dirname( VISUALIZER_PRO_BASEFILE ) ) : ''; + + $is_pro = 'valid' === $status; + $is_expired = 'expired' === $status || 'active-expired' === $status; if ( $is_pro ) { - // translators: %1$s - HTML tag, %2$s - discount, %3$s - HTML tag, %4$s - product name. - $message_template = __( 'Get %1$sup to %2$s off%3$s when you upgrade your %4$s plan or renew early.', 'visualizer' ); - $product_label = 'Visualizer Pro'; - $discount = '30%'; + // translators: %s is the discount percentage. + $config['plugin_meta_message'] = sprintf( __( 'Black Friday Sale - up to %s off', 'visualizer' ), '30%' ); + // translators: %1$s - discount, %2$s - discount. + $message = sprintf( __( 'Upgrade your Visualizer Pro plan: %1$s off this week. Already on the plan you need? Renew early and save up to %2$s.', 'visualizer' ), '30%', '20%' ); + $cta_label = __( 'See your options', 'visualizer' ); + } elseif ( $is_expired ) { + // translators: %s is the discount percentage. + $config['upgrade_menu_text'] = sprintf( __( 'BF Sale - %s off', 'visualizer' ), '50%' ); + // translators: %s is the discount percentage. + $config['plugin_meta_message'] = sprintf( __( 'Black Friday Sale - %s off', 'visualizer' ), '50%' ); + $message = __( 'Your Visualizer Pro features are still here, just locked. Renew at a reduced rate this week.', 'visualizer' ); + $cta_label = __( 'Reactivate now', 'visualizer' ); + } else { + // translators: %s is the discount percentage. + $config['plugin_meta_message'] = sprintf( __( 'Black Friday Sale - %s off', 'visualizer' ), '60%' ); + $config['title'] = __( 'Visualizer Pro: 60% off this week', 'visualizer' ); + // translators: %s is the discount percentage. + $config['upgrade_menu_text'] = sprintf( __( 'BF Sale - %s off', 'visualizer' ), '60%' ); } - $product_label = sprintf( '%s', $product_label ); $url_params = array( 'utm_term' => $is_pro ? 'plan-' . $plan : 'free', 'lkey' => ! empty( $license ) ? $license : false, + 'expired' => $is_expired ? '1' : false, ); - $config['message'] = sprintf( $message_template, '', $discount, '', $product_label ); + if ( ( $is_pro || $is_expired ) && ! empty( $pro_product_slug ) ) { + $config['plugin_meta_targets'] = array( $pro_product_slug ); + } + + $config['message'] = $message; + $config['cta_label'] = $cta_label; + $config['sale_url'] = add_query_arg( $url_params, tsdk_translate_link( tsdk_utmify( 'https://themeisle.link/vizualizer-bf', 'bfcm', 'visualizer' ) )