PluginProbe
BlockSpare – Gutenberg Blocks for News, Magazine, Blog & Business Websites / 3.1.1
BlockSpare – Gutenberg Blocks for News, Magazine, Blog & Business Websites v3.1.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 2.6.1 All 38 releases
← All changes | freemius/start.php +27 -97 trunk3.1.1 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}