PluginProbe
BlockSpare – Gutenberg Blocks, AI Content Generator & Site Builder for News, Magazine & Blogs / 3.1.3
BlockSpare – Gutenberg Blocks, AI Content Generator & Site Builder for News, Magazine & Blogs v3.1.3
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 2.6.1 All 38 releases
← All changes | freemius/start.php +27 -97 trunk3.1.3 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.6.2';
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 *
@@ -89,59 +80,21 @@
89 80 *
90 81 * @author Leo Fajardo (@leorw)
91 82 * @since 2.2.3
92 83 */
93 - $themes_directory = fs_normalize_path( get_theme_root( get_stylesheet() ) );
94 - $themes_directory_name = basename( $themes_directory );
84 + $themes_directory = get_theme_root( get_stylesheet() );
85 + $themes_directory_name = basename( $themes_directory );
86 + $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
95 87
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 );
88 + if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
89 + ) {
90 + $this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
91 + $is_theme = true;
92 + } else {
93 + $this_sdk_relative_path = plugin_basename( $fs_root_path );
94 + $is_theme = false;
95 + }
98 96
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 97 if ( ! isset( $fs_active_plugins ) ) {
145 98 // Load all Freemius powered active plugins.
146 99 $fs_active_plugins = get_option( 'fs_active_plugins' );
147 100
@@ -222,10 +175,9 @@
222 175 if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
223 176 $this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
224 177 ) {
225 178 if ( $is_theme ) {
226 - // Saving relative path and not only directory name as it could be a subfolder
227 - $plugin_path = $theme_name;
179 + $plugin_path = basename( dirname( $this_sdk_relative_path ) );
228 180 } else {
229 181 $plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
230 182 }
231 183
@@ -272,25 +224,13 @@
272 224 $fs_newest_sdk = $fs_active_plugins->plugins[ $fs_newest_sdk->sdk_path ];
273 225
274 226 $is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
275 227
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 - );
228 + if ( ! $is_newest_sdk_type_theme ) {
229 + $is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
230 + } else {
231 + $current_theme = wp_get_theme();
232 + $is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
293 233
294 234 $current_theme_parent = $current_theme->parent();
295 235
296 236 /**
@@ -296,21 +236,15 @@
296 236 /**
297 237 * If the current theme is a child of the theme that has the newest SDK, this prevents a redirects loop
298 238 * from happening by keeping the SDK info stored in the `fs_active_plugins` option.
299 239 */
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 - );
240 + if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
241 + $is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
308 242 }
309 243 }
310 244
311 245 if ( $is_current_sdk_newest &&
312 - ! $is_newest_sdk_module_active &&
246 + ! $is_newest_sdk_plugin_active &&
313 247 ! $fs_active_plugins->newest->in_activation
314 248 ) {
315 249 // If current SDK is the newest and the plugin is NOT active, it means
316 250 // that the current plugin in activation mode.
@@ -327,9 +261,9 @@
327 261 . str_replace( "../{$themes_directory_name}/", '', $this_sdk_relative_path )
328 262 . '/start.php' );
329 263 }
330 264
331 - $is_newest_sdk_path_valid = ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
265 + $is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
332 266
333 267 if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
334 268 // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
335 269 unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
@@ -334,9 +268,9 @@
334 268 // Plugin with newest SDK is no longer active, or SDK was moved to a different location.
335 269 unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
336 270 }
337 271
338 - if ( ! ( $is_newest_sdk_module_active || $fs_active_plugins->newest->in_activation ) ||
272 + if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
339 273 ! $is_newest_sdk_path_valid ||
340 274 // Is newest SDK downgraded.
341 275 ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
342 276 version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
@@ -349,9 +283,9 @@
349 283 */
350 284 // Find the active plugin with the newest SDK version and update the newest reference.
351 285 fs_fallback_to_newest_active_sdk();
352 286 } else {
353 - if ( $is_newest_sdk_module_active &&
287 + if ( $is_newest_sdk_plugin_active &&
354 288 $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
355 289 ( $fs_active_plugins->newest->in_activation ||
356 290 ( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
357 291 )
@@ -378,9 +312,9 @@
378 312 // SDK was already loaded.
379 313 return;
380 314 }
381 315
382 - if ( isset( $fs_active_plugins->newest ) && version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
316 + if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
383 317 $newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
384 318
385 319 $plugins_or_theme_dir_path = ( ! isset( $newest_sdk->type ) || 'theme' !== $newest_sdk->type ) ?
386 320 WP_PLUGIN_DIR :
@@ -444,10 +378,8 @@
444 378 * fs_pending_activation_message_{plugin_slug}
445 379 * fs_is_submenu_visible_{plugin_slug}
446 380 * fs_plugin_icon_{plugin_slug}
447 381 * fs_show_trial_{plugin_slug}
448 - * fs_is_pricing_page_visible_{plugin_slug}
449 - * fs_checkout/parameters_{plugin_slug}
450 382 *
451 383 * --------------------------------------------------------
452 384 *
453 385 * Freemius actions collection:
@@ -453,10 +385,8 @@
453 385 * Freemius actions collection:
454 386 *
455 387 * fs_after_license_loaded_{plugin_slug}
456 388 * fs_after_license_change_{plugin_slug}
457 - * fs_after_license_activation_{plugin_slug}
458 - * fs_after_license_deactivation_{plugin_slug}
459 389 * fs_after_plans_sync_{plugin_slug}
460 390 *
461 391 * fs_after_account_details_{plugin_slug}
462 392 * fs_after_account_user_sync_{plugin_slug}