PluginProbe
BlockSpare – Gutenberg Blocks, AI Content Generator & Site Builder for News, Magazine & Blogs / 2.6.6
BlockSpare – Gutenberg Blocks, AI Content Generator & Site Builder for News, Magazine & Blogs v2.6.6
5.0.1 4.1.0 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 2.1.2 2.5.0 2.5.3 All 39 releases
← All changes | freemius/start.php +27 -125 5.0.1 → 2.6.6 View file →
@@ -6,9 +6,9 @@
6 6 * @since 1.0.3
7 7 */
8 8
9 9 if ( ! defined( 'ABSPATH' ) ) {
10 - return;
10 + exit;
11 11 }
12 12
13 13 /**
14 14 * Freemius SDK Version.
@@ -14,9 +14,9 @@
14 14 * Freemius SDK Version.
15 15 *
16 16 * @var string
17 17 */
18 - $this_sdk_version = '2.13.4';
18 + $this_sdk_version = '2.5.10';
19 19
20 20 #region SDK Selection Logic --------------------------------------------------------------------
21 21
22 22 /**
@@ -35,18 +35,9 @@
35 35 // Require SDK essentials.
36 36 require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
37 37 }
38 38
39 - /**
40 - * We updated the logic to support SDK loading from a subfolder of a theme as well as from a parent theme
41 - * If the SDK is found in the active theme, it sets the relative path accordingly.
42 - * If not, it checks the parent theme and sets the relative path if found there.
43 - * This allows the SDK to be loaded from composer dependencies or from a custom `vendor/freemius` folder.
44 - *
45 - * @author Daniele Alessandra (@DanieleAlessandra)
46 - * @since 2.9.0.5
47 - *
48 - *
39 + /**
49 40 * This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
50 41 * that if it's a file from an SDK running in a theme, the location of the SDK
51 42 * is in the main theme's folder.
52 43 *
@@ -54,36 +45,8 @@
54 45 * @since 1.2.2.6
55 46 */
56 47 $file_path = fs_normalize_path( __FILE__ );
57 48 $fs_root_path = dirname( $file_path );
58 -
59 - // @todo: Remove this code after a few months when WP 6.3 usage is low enough.
60 - global $wp_version;
61 -
62 - if (
63 - ! function_exists( 'wp_get_current_user' ) &&
64 - /**
65 - * `get_stylesheet()` will rely on `wp_get_current_user()` when it is being filtered by `theme-previews.php`. That happens only when the site editor is loaded or when the site editor is sending REST requests.
66 - * @see theme-previews.php:wp_get_theme_preview_path()
67 - *
68 - * @todo This behavior is already fixed in the core (WP 6.3.2+), and this code can be removed after a few months when WP 6.3 usage is low enough.
69 - * @since WP 6.3.0
70 - */
71 - version_compare( $wp_version, '6.3', '>=' ) &&
72 - version_compare( $wp_version, '6.3.1', '<=' ) &&
73 - (
74 - 'site-editor.php' === basename( $_SERVER['SCRIPT_FILENAME'] ) ||
75 - (
76 - function_exists( 'wp_is_json_request' ) &&
77 - wp_is_json_request() &&
78 - ! empty( $_GET['wp_theme_preview'] )
79 - )
80 - )
81 - ) {
82 - // Requiring this file since the call to get_stylesheet() below can trigger a call to wp_get_current_user() when previewing a theme.
83 - require_once ABSPATH . 'wp-includes/pluggable.php';
84 - }
85 -
86 49 /**
87 50 * Get the themes directory where the active theme is located (not passing the stylesheet will make WordPress
88 51 * assume that the themes directory is inside `wp-content`.
89 52 *
@@ -89,59 +52,21 @@
89 52 *
90 53 * @author Leo Fajardo (@leorw)
91 54 * @since 2.2.3
92 55 */
93 - $themes_directory = fs_normalize_path( get_theme_root( get_stylesheet() ) );
94 - $themes_directory_name = basename( $themes_directory );
56 + $themes_directory = get_theme_root( get_stylesheet() );
57 + $themes_directory_name = basename( $themes_directory );
58 + $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
95 59
96 - // This change ensures that the condition works even if the SDK is located in a subdirectory (e.g., vendor)
97 - $theme_candidate_sdk_basename = str_replace( $themes_directory . '/' . get_stylesheet() . '/', '', $fs_root_path );
60 + if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
61 + ) {
62 + $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
63 + $is_theme = true;
64 + } else {
65 + $this_sdk_relative_path = plugin_basename( $fs_root_path );
66 + $is_theme = false;
67 + }
98 68
99 - // Check if the current file is part of the active theme.
100 - $is_current_sdk_from_active_theme = $file_path == $themes_directory . '/' . get_stylesheet() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
101 - $is_current_sdk_from_parent_theme = false;
102 -
103 - // Check if the current file is part of the parent theme.
104 - if ( ! $is_current_sdk_from_active_theme ) {
105 - $theme_candidate_sdk_basename = str_replace( $themes_directory . '/' . get_template() . '/',
106 - '',
107 - $fs_root_path );
108 - $is_current_sdk_from_parent_theme = $file_path == $themes_directory . '/' . get_template() . '/' . $theme_candidate_sdk_basename . '/' . basename( $file_path );
109 - }
110 -
111 - $theme_name = null;
112 - if ( $is_current_sdk_from_active_theme ) {
113 - $theme_name = get_stylesheet();
114 - $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
115 - $is_theme = true;
116 - } else if ( $is_current_sdk_from_parent_theme ) {
117 - $theme_name = get_template();
118 - $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_name . '/' . $theme_candidate_sdk_basename;
119 - $is_theme = true;
120 - } else {
121 - $this_sdk_relative_path = plugin_basename( $fs_root_path );
122 - $is_theme = false;
123 -
124 - /**
125 - * If this file was included from another plugin with lower SDK version, and if this plugin is symlinked, then we need to get the actual plugin path,
126 - * as the value right now will be wrong, it will only remove the directory separator from the file_path.
127 - *
128 - * The check of `fs_find_direct_caller_plugin_file` determines that this file was indeed included by a different plugin than the main plugin.
129 - */
130 - if ( DIRECTORY_SEPARATOR . $this_sdk_relative_path === $fs_root_path && function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
131 - $direct_caller_plugin_file = fs_find_direct_caller_plugin_file( $file_path );
132 -
133 - if ( ! empty( $direct_caller_plugin_file ) ) {
134 - $original_plugin_dir_name = dirname( $direct_caller_plugin_file );
135 -
136 - // Remove everything before the original plugin directory name.
137 - $this_sdk_relative_path = substr( $this_sdk_relative_path, strpos( $this_sdk_relative_path, $original_plugin_dir_name ) );
138 -
139 - unset( $original_plugin_dir_name );
140 - }
141 - }
142 - }
143 -
144 69 if ( ! isset( $fs_active_plugins ) ) {
145 70 // Load all Freemius powered active plugins.
146 71 $fs_active_plugins = get_option( 'fs_active_plugins' );
147 72
@@ -222,10 +147,9 @@
222 147 if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
223 148 $this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
224 149 ) {
225 150 if ( $is_theme ) {
226 - // Saving relative path and not only directory name as it could be a subfolder
227 - $plugin_path = $theme_name;
151 + $plugin_path = basename( dirname( $this_sdk_relative_path ) );
228 152 } else {
229 153 $plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
230 154 }
231 155
@@ -272,25 +196,13 @@
272 196 $fs_newest_sdk = $fs_active_plugins->plugins[ $fs_newest_sdk->sdk_path ];
273 197
274 198 $is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
275 199
276 - /**
277 - * @var bool $is_newest_sdk_module_active
278 - * True if the plugin with the newest SDK is active.
279 - * True if the newest SDK is part of the current theme or current theme's parent.
280 - * False otherwise.
281 - */
282 - if ( ! $is_newest_sdk_type_theme ) {
283 - $is_newest_sdk_module_active = is_plugin_active( $fs_newest_sdk->plugin_path );
284 - } else {
285 - $current_theme = wp_get_theme();
286 - // Detect if current theme is the one registered as newer SDK
287 - $is_newest_sdk_module_active = (
288 - strpos(
289 - $fs_newest_sdk->plugin_path,
290 - '../' . $themes_directory_name . '/' . $current_theme->get_stylesheet() . '/'
291 - ) === 0
292 - );
200 + if ( ! $is_newest_sdk_type_theme ) {
201 + $is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
202 + } else {
203 + $current_theme = wp_get_theme();
204 + $is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
293 205
294 206 $current_theme_parent = $current_theme->parent();
295 207
296 208 /**
@@ -296,21 +208,15 @@
296 208 /**
297 209 * If the current theme is a child of the theme that has the newest SDK, this prevents a redirects loop
298 210 * from happening by keeping the SDK info stored in the `fs_active_plugins` option.
299 211 */
300 - if ( ! $is_newest_sdk_module_active && $current_theme_parent instanceof WP_Theme ) {
301 - // Detect if current theme parent is the one registered as newer SDK
302 - $is_newest_sdk_module_active = (
303 - strpos(
304 - $fs_newest_sdk->plugin_path,
305 - '../' . $themes_directory_name . '/' . $current_theme_parent->get_stylesheet() . '/'
306 - ) === 0
307 - );
212 + if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
213 + $is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
308 214 }
309 215 }
310 216
311 217 if ( $is_current_sdk_newest &&
312 - ! $is_newest_sdk_module_active &&
218 + ! $is_newest_sdk_plugin_active &&
313 219 ! $fs_active_plugins->newest->in_activation
314 220 ) {
315 221 // If current SDK is the newest and the plugin is NOT active, it means
316 222 // that the current plugin in activation mode.
@@ -327,9 +233,9 @@
327 233 . str_replace( "../{$themes_directory_name}/", '', $this_sdk_relative_path )
328 234 . '/start.php' );
329 235 }
330 236
331 - $is_newest_sdk_path_valid = ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
237 + $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
332 238
333 239 if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
334 240 // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
335 241 unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
@@ -334,9 +240,9 @@
334 240 // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
335 241 unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
336 242 }
337 243
338 - if ( ! ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) ||
244 + if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
339 245 ! $is_newest_sdk_path_valid ||
340 246 // Is newest SDK downgraded.
341 247 ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
342 248 version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
@@ -349,9 +255,9 @@
349 255 */
350 256 // Find the active plugin with the newest SDK version and update the newest reference.
351 257 fs_fallback_to_newest_active_sdk();
352 258 } else {
353 - if ( $is_newest_sdk_module_active &&
259 + if ( $is_newest_sdk_plugin_active &&
354 260 $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
355 261 ( $fs_active_plugins->newest->in_activation ||
356 262 ( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
357 263 )
@@ -378,9 +284,9 @@
378 284 // SDK was already loaded.
379 285 return;
380 286 }
381 287
382 - if ( isset( $fs_active_plugins->newest ) && version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
288 + if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
383 289 $newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
384 290
385 291 $plugins_or_theme_dir_path = ( ! isset( $newest_sdk->type ) || 'theme' !== $newest_sdk->type ) ?
386 292 WP_PLUGIN_DIR :
@@ -444,10 +350,8 @@
444 350 * fs_pending_activation_message_{plugin_slug}
445 351 * fs_is_submenu_visible_{plugin_slug}
446 352 * fs_plugin_icon_{plugin_slug}
447 353 * fs_show_trial_{plugin_slug}
448 - * fs_is_pricing_page_visible_{plugin_slug}
449 - * fs_checkout/parameters_{plugin_slug}
450 354 *
451 355 * --------------------------------------------------------
452 356 *
453 357 * Freemius actions collection:
@@ -453,10 +357,8 @@
453 357 * Freemius actions collection:
454 358 *
455 359 * fs_after_license_loaded_{plugin_slug}
456 360 * fs_after_license_change_{plugin_slug}
457 - * fs_after_license_activation_{plugin_slug}
458 - * fs_after_license_deactivation_{plugin_slug}
459 361 * fs_after_plans_sync_{plugin_slug}
460 362 *
461 363 * fs_after_account_details_{plugin_slug}
462 364 * fs_after_account_user_sync_{plugin_slug}