Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/content-.../inc/freemius/includes
File: class-freemius.php
#endregion
[500] Fix | Delete
[501] Fix | Delete
$base_name_split = explode( '/', $this->_plugin_basename );
[502] Fix | Delete
$this->_plugin_dir_name = $base_name_split[0];
[503] Fix | Delete
[504] Fix | Delete
if ( $this->_logger->is_on() ) {
[505] Fix | Delete
$this->_logger->info( 'plugin_main_file_path = ' . $this->_plugin_main_file_path );
[506] Fix | Delete
$this->_logger->info( 'plugin_dir_path = ' . $this->_plugin_dir_path );
[507] Fix | Delete
$this->_logger->info( 'plugin_basename = ' . $this->_plugin_basename );
[508] Fix | Delete
$this->_logger->info( 'free_plugin_basename = ' . $this->_free_plugin_basename );
[509] Fix | Delete
$this->_logger->info( 'plugin_dir_name = ' . $this->_plugin_dir_name );
[510] Fix | Delete
}
[511] Fix | Delete
[512] Fix | Delete
// Remember link between file to slug.
[513] Fix | Delete
$this->store_file_slug_map();
[514] Fix | Delete
[515] Fix | Delete
// Store plugin's initial install timestamp.
[516] Fix | Delete
if ( ! isset( $this->_storage->install_timestamp ) ) {
[517] Fix | Delete
$this->_storage->install_timestamp = WP_FS__SCRIPT_START_TIME;
[518] Fix | Delete
}
[519] Fix | Delete
[520] Fix | Delete
if ( ! is_object( $this->_plugin ) ) {
[521] Fix | Delete
$this->_plugin = FS_Plugin_Manager::instance( $this->_module_id )->get();
[522] Fix | Delete
}
[523] Fix | Delete
[524] Fix | Delete
$this->_admin_notices = FS_Admin_Notices::instance(
[525] Fix | Delete
$this->_slug . ( $this->is_theme() ? ':theme' : '' ),
[526] Fix | Delete
/**
[527] Fix | Delete
* Ensure that the admin notice will always have a title by using the stored plugin title if available and
[528] Fix | Delete
* retrieving the title via the "get_plugin_name" method if there is no stored plugin title available.
[529] Fix | Delete
*
[530] Fix | Delete
* @author Leo Fajardo (@leorw)
[531] Fix | Delete
* @since 1.2.2
[532] Fix | Delete
*/
[533] Fix | Delete
( is_object( $this->_plugin ) && isset( $this->_plugin->title ) ?
[534] Fix | Delete
$this->_plugin->title :
[535] Fix | Delete
$this->get_plugin_name()
[536] Fix | Delete
),
[537] Fix | Delete
$this->get_unique_affix()
[538] Fix | Delete
);
[539] Fix | Delete
[540] Fix | Delete
if ( 'true' === fs_request_get( 'fs_clear_api_cache' ) ||
[541] Fix | Delete
fs_request_is_action( 'restart_freemius' )
[542] Fix | Delete
) {
[543] Fix | Delete
FS_Api::clear_cache();
[544] Fix | Delete
$this->_cache->clear();
[545] Fix | Delete
}
[546] Fix | Delete
[547] Fix | Delete
$this->register_constructor_hooks();
[548] Fix | Delete
[549] Fix | Delete
/**
[550] Fix | Delete
* Starting from version 2.0.0, `FS_Site` entities no longer have the `plan` property and have `plan_id`
[551] Fix | Delete
* instead. This should be called before calling `_load_account()`, otherwise, `$this->_site` will not be
[552] Fix | Delete
* loaded in `_load_account` for versions of SDK starting from 2.0.0.
[553] Fix | Delete
*
[554] Fix | Delete
* @author Leo Fajardo (@leorw)
[555] Fix | Delete
*/
[556] Fix | Delete
self::migrate_install_plan_to_plan_id( $this->_storage );
[557] Fix | Delete
[558] Fix | Delete
$this->_load_account();
[559] Fix | Delete
[560] Fix | Delete
$this->_version_updates_handler();
[561] Fix | Delete
}
[562] Fix | Delete
[563] Fix | Delete
/**
[564] Fix | Delete
* @author Leo Fajardo (@leorw)
[565] Fix | Delete
* @since 2.3.0
[566] Fix | Delete
*/
[567] Fix | Delete
private function maybe_adjust_storage() {
[568] Fix | Delete
$install_timestamp = null;
[569] Fix | Delete
$prev_is_premium = null;
[570] Fix | Delete
[571] Fix | Delete
$options_to_update = array();
[572] Fix | Delete
[573] Fix | Delete
$is_network_admin = fs_is_network_admin();
[574] Fix | Delete
[575] Fix | Delete
$network_install_timestamp = $this->_storage->get( 'install_timestamp', null, true );
[576] Fix | Delete
[577] Fix | Delete
if ( ! $is_network_admin ) {
[578] Fix | Delete
if ( is_null( $network_install_timestamp ) ) {
[579] Fix | Delete
// Plugin was not network-activated before.
[580] Fix | Delete
return;
[581] Fix | Delete
}
[582] Fix | Delete
[583] Fix | Delete
if ( is_null( $this->_storage->get( 'install_timestamp', null, false ) ) ) {
[584] Fix | Delete
// Set the `install_timestamp` only if it's not yet set.
[585] Fix | Delete
$install_timestamp = $network_install_timestamp;
[586] Fix | Delete
}
[587] Fix | Delete
[588] Fix | Delete
$prev_is_premium = $this->_storage->get( 'prev_is_premium', null, true );
[589] Fix | Delete
} else {
[590] Fix | Delete
$current_wp_user = self::_get_current_wp_user();
[591] Fix | Delete
$current_fs_user = self::_get_user_by_email( $current_wp_user->user_email );
[592] Fix | Delete
$network_user_info = array();
[593] Fix | Delete
[594] Fix | Delete
$skips_count = 0;
[595] Fix | Delete
[596] Fix | Delete
$sites = self::get_sites();
[597] Fix | Delete
$sites_count = count( $sites );
[598] Fix | Delete
[599] Fix | Delete
$blog_id_2_install_map = array();
[600] Fix | Delete
[601] Fix | Delete
$is_first_non_ignored_blog = true;
[602] Fix | Delete
[603] Fix | Delete
foreach ( $sites as $site ) {
[604] Fix | Delete
$blog_id = self::get_site_blog_id( $site );
[605] Fix | Delete
[606] Fix | Delete
$blog_install_timestamp = $this->_storage->get( 'install_timestamp', null, $blog_id );
[607] Fix | Delete
[608] Fix | Delete
if ( is_null( $blog_install_timestamp ) ) {
[609] Fix | Delete
// Plugin has not been installed on this blog.
[610] Fix | Delete
continue;
[611] Fix | Delete
}
[612] Fix | Delete
[613] Fix | Delete
$is_earlier_install = (
[614] Fix | Delete
! is_null( $install_timestamp ) &&
[615] Fix | Delete
$blog_install_timestamp < $install_timestamp
[616] Fix | Delete
);
[617] Fix | Delete
[618] Fix | Delete
$install = $this->get_install_by_blog_id( $blog_id );
[619] Fix | Delete
[620] Fix | Delete
$update_network_user_info = false;
[621] Fix | Delete
[622] Fix | Delete
if ( ! is_object( $install ) ) {
[623] Fix | Delete
if ( ! $this->_storage->get( 'is_anonymous', false, $blog_id ) ) {
[624] Fix | Delete
// The opt-in decision (whether to skip or opt in) is yet to be made.
[625] Fix | Delete
continue;
[626] Fix | Delete
}
[627] Fix | Delete
[628] Fix | Delete
$skips_count ++;
[629] Fix | Delete
} else {
[630] Fix | Delete
$blog_id_2_install_map[ $blog_id ] = $install;
[631] Fix | Delete
[632] Fix | Delete
if ( empty( $network_user_info ) ) {
[633] Fix | Delete
// Set the network user info for the 1st time. Choose any user information whether or not it is for the current WP user.
[634] Fix | Delete
$update_network_user_info = true;
[635] Fix | Delete
}
[636] Fix | Delete
[637] Fix | Delete
if ( ! $update_network_user_info &&
[638] Fix | Delete
is_object( $current_fs_user ) &&
[639] Fix | Delete
$network_user_info['user_id'] != $current_fs_user->id &&
[640] Fix | Delete
$install->user_id == $current_fs_user->id
[641] Fix | Delete
) {
[642] Fix | Delete
// If an install that is owned by the current WP user is found, use its user information instead.
[643] Fix | Delete
$update_network_user_info = true;
[644] Fix | Delete
}
[645] Fix | Delete
[646] Fix | Delete
if ( ! $update_network_user_info &&
[647] Fix | Delete
$is_earlier_install &&
[648] Fix | Delete
( ! is_object( $current_fs_user ) || $current_fs_user->id == $install->user_id )
[649] Fix | Delete
) {
[650] Fix | Delete
// Update to the earliest install info if there's no install found so far that is owned by the current WP user; OR only if the found install is owned by the current WP user.
[651] Fix | Delete
$update_network_user_info = true;
[652] Fix | Delete
}
[653] Fix | Delete
}
[654] Fix | Delete
[655] Fix | Delete
if ( $update_network_user_info ) {
[656] Fix | Delete
$network_user_info = array(
[657] Fix | Delete
'user_id' => $install->user_id,
[658] Fix | Delete
'blog_id' => $blog_id
[659] Fix | Delete
);
[660] Fix | Delete
}
[661] Fix | Delete
[662] Fix | Delete
$site_prev_is_premium = $this->_storage->get( 'prev_is_premium', null, $blog_id );
[663] Fix | Delete
[664] Fix | Delete
if ( $is_first_non_ignored_blog ) {
[665] Fix | Delete
$prev_is_premium = $site_prev_is_premium;
[666] Fix | Delete
[667] Fix | Delete
if ( is_null( $network_install_timestamp ) ) {
[668] Fix | Delete
$install_timestamp = $blog_install_timestamp;
[669] Fix | Delete
}
[670] Fix | Delete
[671] Fix | Delete
$is_first_non_ignored_blog = false;
[672] Fix | Delete
[673] Fix | Delete
continue;
[674] Fix | Delete
}
[675] Fix | Delete
[676] Fix | Delete
if ( ! is_null( $prev_is_premium ) && $prev_is_premium !== $site_prev_is_premium ) {
[677] Fix | Delete
// If a different `$site_prev_is_premium` value is found, do not include the option in the collection of options to update.
[678] Fix | Delete
$prev_is_premium = null;
[679] Fix | Delete
}
[680] Fix | Delete
[681] Fix | Delete
if ( $is_earlier_install ) {
[682] Fix | Delete
// If an earlier install timestamp is found.
[683] Fix | Delete
$install_timestamp = $blog_install_timestamp;
[684] Fix | Delete
}
[685] Fix | Delete
}
[686] Fix | Delete
[687] Fix | Delete
$installs_count = count( $blog_id_2_install_map );
[688] Fix | Delete
[689] Fix | Delete
if ( $sites_count === ( $installs_count + $skips_count ) ) {
[690] Fix | Delete
if ( ! empty( $network_user_info ) ) {
[691] Fix | Delete
$options_to_update['network_user_id'] = $network_user_info['user_id'];
[692] Fix | Delete
$options_to_update['network_install_blog_id'] = $network_user_info['blog_id'];
[693] Fix | Delete
[694] Fix | Delete
foreach ( $blog_id_2_install_map as $blog_id => $install ) {
[695] Fix | Delete
if ( $install->user_id == $network_user_info['user_id'] ) {
[696] Fix | Delete
continue;
[697] Fix | Delete
}
[698] Fix | Delete
[699] Fix | Delete
$this->_storage->store( 'is_delegated_connection', true, $blog_id );
[700] Fix | Delete
}
[701] Fix | Delete
}
[702] Fix | Delete
[703] Fix | Delete
if ( $sites_count === $skips_count ) {
[704] Fix | Delete
/**
[705] Fix | Delete
* Assume network-level skipping as the intended action if all actions identified were only
[706] Fix | Delete
* skipping of the connection (i.e., no opt-ins and delegated connections so far).
[707] Fix | Delete
*/
[708] Fix | Delete
$options_to_update['is_anonymous_ms'] = true;
[709] Fix | Delete
} else if ( $sites_count === $installs_count ) {
[710] Fix | Delete
/**
[711] Fix | Delete
* Assume network-level opt-in as the intended action if all actions identified were only opt-ins
[712] Fix | Delete
* (i.e., no delegation and skipping of the connections so far).
[713] Fix | Delete
*/
[714] Fix | Delete
$options_to_update['is_network_connected'] = true;
[715] Fix | Delete
}
[716] Fix | Delete
}
[717] Fix | Delete
}
[718] Fix | Delete
[719] Fix | Delete
if ( ! is_null( $install_timestamp ) ) {
[720] Fix | Delete
$options_to_update['install_timestamp'] = $install_timestamp;
[721] Fix | Delete
}
[722] Fix | Delete
[723] Fix | Delete
if ( ! is_null( $prev_is_premium ) ) {
[724] Fix | Delete
$options_to_update['prev_is_premium'] = $prev_is_premium;
[725] Fix | Delete
}
[726] Fix | Delete
[727] Fix | Delete
if ( ! empty( $options_to_update ) ) {
[728] Fix | Delete
$this->adjust_storage( $options_to_update, $is_network_admin );
[729] Fix | Delete
}
[730] Fix | Delete
}
[731] Fix | Delete
[732] Fix | Delete
/**
[733] Fix | Delete
* @author Leo Fajardo (@leorw)
[734] Fix | Delete
* @since 2.3.0
[735] Fix | Delete
*
[736] Fix | Delete
* @param array $options
[737] Fix | Delete
* @param bool $is_network_admin
[738] Fix | Delete
*/
[739] Fix | Delete
private function adjust_storage( $options, $is_network_admin ) {
[740] Fix | Delete
foreach ( $options as $name => $value ) {
[741] Fix | Delete
$this->_storage->store( $name, $value, $is_network_admin ? true : null );
[742] Fix | Delete
}
[743] Fix | Delete
}
[744] Fix | Delete
[745] Fix | Delete
/**
[746] Fix | Delete
* Checks whether this module has a settings menu.
[747] Fix | Delete
*
[748] Fix | Delete
* @author Leo Fajardo (@leorw)
[749] Fix | Delete
* @since 1.2.2
[750] Fix | Delete
*
[751] Fix | Delete
* @return bool
[752] Fix | Delete
*/
[753] Fix | Delete
function has_settings_menu() {
[754] Fix | Delete
return ( $this->_is_network_active && fs_is_network_admin() ) ?
[755] Fix | Delete
$this->_menu->has_network_menu() :
[756] Fix | Delete
$this->_menu->has_menu();
[757] Fix | Delete
}
[758] Fix | Delete
[759] Fix | Delete
/**
[760] Fix | Delete
* If `true` the opt-in should be shown as a modal dialog box on the themes.php page. WordPress.org themes guidelines prohibit from redirecting the user from the themes.php page after activating a theme.
[761] Fix | Delete
*
[762] Fix | Delete
* @author Vova Feldman (@svovaf)
[763] Fix | Delete
* @since 2.4.5
[764] Fix | Delete
*
[765] Fix | Delete
* @return bool
[766] Fix | Delete
*/
[767] Fix | Delete
function show_opt_in_on_themes_page() {
[768] Fix | Delete
if ( ! $this->is_free_wp_org_theme() ) {
[769] Fix | Delete
return false;
[770] Fix | Delete
}
[771] Fix | Delete
[772] Fix | Delete
if ( ! $this->has_settings_menu() ) {
[773] Fix | Delete
return true;
[774] Fix | Delete
}
[775] Fix | Delete
[776] Fix | Delete
return $this->show_settings_with_tabs();
[777] Fix | Delete
}
[778] Fix | Delete
[779] Fix | Delete
/**
[780] Fix | Delete
* If `true` the opt-in should be shown on the product's main setting page.
[781] Fix | Delete
*
[782] Fix | Delete
* @author Vova Feldman (@svovaf)
[783] Fix | Delete
* @since 2.4.5
[784] Fix | Delete
*
[785] Fix | Delete
* @return bool
[786] Fix | Delete
*
[787] Fix | Delete
* @uses show_opt_in_on_themes_page();
[788] Fix | Delete
*/
[789] Fix | Delete
function show_opt_in_on_setting_page() {
[790] Fix | Delete
return ! $this->show_opt_in_on_themes_page();
[791] Fix | Delete
}
[792] Fix | Delete
[793] Fix | Delete
/**
[794] Fix | Delete
* If `true` the settings should be shown using tabs.
[795] Fix | Delete
*
[796] Fix | Delete
* @author Vova Feldman (@svovaf)
[797] Fix | Delete
* @since 2.4.5
[798] Fix | Delete
*
[799] Fix | Delete
* @return bool
[800] Fix | Delete
*/
[801] Fix | Delete
function show_settings_with_tabs() {
[802] Fix | Delete
return ( self::NAVIGATION_TABS === $this->_navigation );
[803] Fix | Delete
}
[804] Fix | Delete
[805] Fix | Delete
/**
[806] Fix | Delete
* Check if the context module is free wp.org theme.
[807] Fix | Delete
*
[808] Fix | Delete
* This method is helpful because:
[809] Fix | Delete
* 1. wp.org themes are limited to a single submenu item,
[810] Fix | Delete
* and sub-submenu items are most likely not allowed (never verified).
[811] Fix | Delete
* 2. wp.org themes are not allowed to redirect the user
[812] Fix | Delete
* after the theme activation, therefore, the agreed UX
[813] Fix | Delete
* is showing the opt-in as a modal dialog box after
[814] Fix | Delete
* activation (approved by @otto42, @emiluzelac, @greenshady, @grapplerulrich).
[815] Fix | Delete
*
[816] Fix | Delete
* @author Vova Feldman (@svovaf)
[817] Fix | Delete
* @since 1.2.2.7
[818] Fix | Delete
*
[819] Fix | Delete
* @return bool
[820] Fix | Delete
*/
[821] Fix | Delete
function is_free_wp_org_theme() {
[822] Fix | Delete
return (
[823] Fix | Delete
$this->is_theme() &&
[824] Fix | Delete
$this->is_org_repo_compliant() &&
[825] Fix | Delete
! $this->is_premium()
[826] Fix | Delete
);
[827] Fix | Delete
}
[828] Fix | Delete
[829] Fix | Delete
/**
[830] Fix | Delete
* Checks whether this a submenu item is visible.
[831] Fix | Delete
*
[832] Fix | Delete
* @author Vova Feldman (@svovaf)
[833] Fix | Delete
* @since 1.2.2.6
[834] Fix | Delete
* @since 1.2.2.7 Even if the menu item was specified to be hidden, when it is the context page, then show the submenu item so the user will have the right context page.
[835] Fix | Delete
*
[836] Fix | Delete
* @param string $slug
[837] Fix | Delete
* @param bool $is_tabs_visibility_check This is used to decide if the associated tab should be shown or hidden.
[838] Fix | Delete
*
[839] Fix | Delete
* @return bool
[840] Fix | Delete
*/
[841] Fix | Delete
function is_submenu_item_visible( $slug, $is_tabs_visibility_check = false ) {
[842] Fix | Delete
if ( $this->is_admin_page( $slug ) ) {
[843] Fix | Delete
/**
[844] Fix | Delete
* It is the current context page, so show the submenu item
[845] Fix | Delete
* so the user will have the right context page, even if it
[846] Fix | Delete
* was set to hidden.
[847] Fix | Delete
*/
[848] Fix | Delete
return true;
[849] Fix | Delete
}
[850] Fix | Delete
[851] Fix | Delete
if ( ! $this->has_settings_menu() ) {
[852] Fix | Delete
// No menu settings at all.
[853] Fix | Delete
return false;
[854] Fix | Delete
}
[855] Fix | Delete
[856] Fix | Delete
if (
[857] Fix | Delete
! $is_tabs_visibility_check &&
[858] Fix | Delete
$this->is_org_repo_compliant() &&
[859] Fix | Delete
$this->show_settings_with_tabs()
[860] Fix | Delete
) {
[861] Fix | Delete
/**
[862] Fix | Delete
* wp.org themes are limited to a single submenu item, and
[863] Fix | Delete
* sub-submenu items are most likely not allowed (never verified).
[864] Fix | Delete
*/
[865] Fix | Delete
return false;
[866] Fix | Delete
}
[867] Fix | Delete
[868] Fix | Delete
return $this->_menu->is_submenu_item_visible( $slug );
[869] Fix | Delete
}
[870] Fix | Delete
[871] Fix | Delete
/**
[872] Fix | Delete
* Check if a Freemius page should be accessible via the UI.
[873] Fix | Delete
*
[874] Fix | Delete
* @author Vova Feldman (@svovaf)
[875] Fix | Delete
* @since 1.2.2.7
[876] Fix | Delete
*
[877] Fix | Delete
* @param string $slug
[878] Fix | Delete
*
[879] Fix | Delete
* @return bool
[880] Fix | Delete
*/
[881] Fix | Delete
function is_page_visible( $slug ) {
[882] Fix | Delete
if ( $this->is_admin_page( $slug ) ) {
[883] Fix | Delete
return true;
[884] Fix | Delete
}
[885] Fix | Delete
[886] Fix | Delete
return $this->_menu->is_submenu_item_visible( $slug, true, true );
[887] Fix | Delete
}
[888] Fix | Delete
[889] Fix | Delete
/**
[890] Fix | Delete
* @author Vova Feldman (@svovaf)
[891] Fix | Delete
* @since 1.0.9
[892] Fix | Delete
*/
[893] Fix | Delete
private function _version_updates_handler() {
[894] Fix | Delete
if ( ! isset( $this->_storage->sdk_version ) || $this->_storage->sdk_version != $this->version ) {
[895] Fix | Delete
// Freemius version upgrade mode.
[896] Fix | Delete
$this->_storage->sdk_last_version = $this->_storage->sdk_version;
[897] Fix | Delete
$this->_storage->sdk_version = $this->version;
[898] Fix | Delete
[899] Fix | Delete
if ( empty( $this->_storage->sdk_last_version ) ||
[900] Fix | Delete
version_compare( $this->_storage->sdk_last_version, $this->version, '<' )
[901] Fix | Delete
) {
[902] Fix | Delete
$this->_storage->sdk_upgrade_mode = true;
[903] Fix | Delete
$this->_storage->sdk_downgrade_mode = false;
[904] Fix | Delete
} else {
[905] Fix | Delete
$this->_storage->sdk_downgrade_mode = true;
[906] Fix | Delete
$this->_storage->sdk_upgrade_mode = false;
[907] Fix | Delete
[908] Fix | Delete
}
[909] Fix | Delete
[910] Fix | Delete
$this->do_action( 'sdk_version_update', $this->_storage->sdk_last_version, $this->version );
[911] Fix | Delete
}
[912] Fix | Delete
[913] Fix | Delete
$plugin_version = $this->get_plugin_version();
[914] Fix | Delete
if ( ! isset( $this->_storage->plugin_version ) || $this->_storage->plugin_version != $plugin_version ) {
[915] Fix | Delete
// Plugin version upgrade mode.
[916] Fix | Delete
$this->_storage->plugin_last_version = $this->_storage->plugin_version;
[917] Fix | Delete
$this->_storage->plugin_version = $plugin_version;
[918] Fix | Delete
[919] Fix | Delete
if ( empty( $this->_storage->plugin_last_version ) ||
[920] Fix | Delete
version_compare( $this->_storage->plugin_last_version, $plugin_version, '<' )
[921] Fix | Delete
) {
[922] Fix | Delete
$this->_storage->plugin_upgrade_mode = true;
[923] Fix | Delete
$this->_storage->plugin_downgrade_mode = false;
[924] Fix | Delete
} else {
[925] Fix | Delete
$this->_storage->plugin_downgrade_mode = true;
[926] Fix | Delete
$this->_storage->plugin_upgrade_mode = false;
[927] Fix | Delete
}
[928] Fix | Delete
[929] Fix | Delete
if ( ! empty( $this->_storage->plugin_last_version ) ) {
[930] Fix | Delete
// Different version of the plugin was installed before, therefore it's an update.
[931] Fix | Delete
$this->_storage->is_plugin_new_install = false;
[932] Fix | Delete
}
[933] Fix | Delete
[934] Fix | Delete
$this->do_action( 'plugin_version_update', $this->_storage->plugin_last_version, $plugin_version );
[935] Fix | Delete
}
[936] Fix | Delete
}
[937] Fix | Delete
[938] Fix | Delete
#--------------------------------------------------------------------------------
[939] Fix | Delete
#region Data Migration on SDK Update
[940] Fix | Delete
#--------------------------------------------------------------------------------
[941] Fix | Delete
[942] Fix | Delete
/**
[943] Fix | Delete
* @author Vova Feldman (@svovaf)
[944] Fix | Delete
* @since 1.1.5
[945] Fix | Delete
*
[946] Fix | Delete
* @param string $sdk_prev_version
[947] Fix | Delete
* @param string $sdk_version
[948] Fix | Delete
*/
[949] Fix | Delete
function _sdk_version_update( $sdk_prev_version, $sdk_version ) {
[950] Fix | Delete
if ( empty( $sdk_prev_version ) ) {
[951] Fix | Delete
return;
[952] Fix | Delete
}
[953] Fix | Delete
[954] Fix | Delete
if (
[955] Fix | Delete
version_compare( $sdk_prev_version, '2.5.1', '<' ) &&
[956] Fix | Delete
version_compare( $sdk_version, '2.5.1', '>=' )
[957] Fix | Delete
) {
[958] Fix | Delete
if ( $this->is_registered( true ) ) {
[959] Fix | Delete
/**
[960] Fix | Delete
* Migrate to new permissions layer.
[961] Fix | Delete
*/
[962] Fix | Delete
require_once WP_FS__DIR_INCLUDES . '/supplements/fs-migration-2.5.1.php';
[963] Fix | Delete
[964] Fix | Delete
$install_by_blog_id = is_multisite() ?
[965] Fix | Delete
$this->get_blog_install_map() :
[966] Fix | Delete
array( 0 => $this->_site );
[967] Fix | Delete
[968] Fix | Delete
fs_migrate_251( $this, $install_by_blog_id );
[969] Fix | Delete
}
[970] Fix | Delete
}
[971] Fix | Delete
}
[972] Fix | Delete
[973] Fix | Delete
/**
[974] Fix | Delete
* @author Leo Fajardo (@leorw)
[975] Fix | Delete
* @since 2.0.0
[976] Fix | Delete
*
[977] Fix | Delete
* @param \FS_Storage $storage
[978] Fix | Delete
* @param bool|int|null $blog_id
[979] Fix | Delete
*/
[980] Fix | Delete
private static function migrate_install_plan_to_plan_id( FS_Storage $storage, $blog_id = null ) {
[981] Fix | Delete
if ( empty( $storage->sdk_version ) ) {
[982] Fix | Delete
// New installation of the plugin, no need to upgrade.
[983] Fix | Delete
return;
[984] Fix | Delete
}
[985] Fix | Delete
[986] Fix | Delete
if ( ! version_compare( $storage->sdk_version, '2.0.0', '<' ) ) {
[987] Fix | Delete
// Previous version is >= 2.0.0, so no need to migrate.
[988] Fix | Delete
return;
[989] Fix | Delete
}
[990] Fix | Delete
[991] Fix | Delete
// Alias.
[992] Fix | Delete
$module_type = $storage->get_module_type();
[993] Fix | Delete
$module_slug = $storage->get_module_slug();
[994] Fix | Delete
[995] Fix | Delete
$installs = self::get_all_sites( $module_type, $blog_id );
[996] Fix | Delete
$install = isset( $installs[ $module_slug ] ) ? $installs[ $module_slug ] : null;
[997] Fix | Delete
[998] Fix | Delete
if ( ! is_object( $install ) ) {
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function