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
return fs_is_network_admin() ?
[3000] Fix | Delete
$this->is_network_activation_mode( $and_on ) :
[3001] Fix | Delete
$this->is_site_activation_mode( $and_on );
[3002] Fix | Delete
}
[3003] Fix | Delete
[3004] Fix | Delete
/**
[3005] Fix | Delete
* Is plugin in activation mode.
[3006] Fix | Delete
*
[3007] Fix | Delete
* @author Vova Feldman (@svovaf)
[3008] Fix | Delete
* @since 1.0.7
[3009] Fix | Delete
*
[3010] Fix | Delete
* @param bool $and_on
[3011] Fix | Delete
*
[3012] Fix | Delete
* @return bool
[3013] Fix | Delete
*/
[3014] Fix | Delete
function is_site_activation_mode( $and_on = true ) {
[3015] Fix | Delete
return (
[3016] Fix | Delete
( $this->is_on() || ! $and_on ) &&
[3017] Fix | Delete
(
[3018] Fix | Delete
( $this->is_premium() && true === $this->_storage->require_license_activation ) ||
[3019] Fix | Delete
(
[3020] Fix | Delete
( ! $this->is_registered() ||
[3021] Fix | Delete
( $this->is_only_premium() && ! $this->has_features_enabled_license() ) ) &&
[3022] Fix | Delete
( ! $this->is_enable_anonymous() ||
[3023] Fix | Delete
( ! $this->is_anonymous() && ! $this->is_pending_activation() ) )
[3024] Fix | Delete
)
[3025] Fix | Delete
)
[3026] Fix | Delete
);
[3027] Fix | Delete
}
[3028] Fix | Delete
[3029] Fix | Delete
/**
[3030] Fix | Delete
* Checks if the SDK in network activation mode.
[3031] Fix | Delete
*
[3032] Fix | Delete
* @author Leo Fajardo (@leorw)
[3033] Fix | Delete
* @since 2.0.0
[3034] Fix | Delete
*
[3035] Fix | Delete
* @param bool $and_on
[3036] Fix | Delete
*
[3037] Fix | Delete
* @return bool
[3038] Fix | Delete
*/
[3039] Fix | Delete
private function is_network_activation_mode( $and_on = true ) {
[3040] Fix | Delete
if ( ! $this->_is_network_active ) {
[3041] Fix | Delete
// Not network activated.
[3042] Fix | Delete
return false;
[3043] Fix | Delete
}
[3044] Fix | Delete
[3045] Fix | Delete
if ( $this->is_network_upgrade_mode() ) {
[3046] Fix | Delete
// Special flag to enforce network activation mode to decide what to do with the sites that are not yet opted-in nor skipped.
[3047] Fix | Delete
return true;
[3048] Fix | Delete
}
[3049] Fix | Delete
[3050] Fix | Delete
if ( ! $this->is_site_activation_mode( $and_on ) ) {
[3051] Fix | Delete
// Whether the context is single site or the network, if the plugin is no longer in activation mode then it is not in network activation mode as well.
[3052] Fix | Delete
return false;
[3053] Fix | Delete
}
[3054] Fix | Delete
[3055] Fix | Delete
if ( $this->is_network_delegated_connection() ) {
[3056] Fix | Delete
// Super-admin delegated the connection to the site admins -> not activation mode.
[3057] Fix | Delete
return false;
[3058] Fix | Delete
}
[3059] Fix | Delete
[3060] Fix | Delete
if ( $this->is_network_anonymous() && true !== $this->_storage->require_license_activation ) {
[3061] Fix | Delete
// Super-admin skipped the connection network wide -> not activation mode.
[3062] Fix | Delete
return false;
[3063] Fix | Delete
}
[3064] Fix | Delete
[3065] Fix | Delete
if ( $this->is_network_registered() ) {
[3066] Fix | Delete
// Super-admin connected at least one site -> not activation mode.
[3067] Fix | Delete
return false;
[3068] Fix | Delete
}
[3069] Fix | Delete
[3070] Fix | Delete
return true;
[3071] Fix | Delete
}
[3072] Fix | Delete
[3073] Fix | Delete
/**
[3074] Fix | Delete
* Check if current page is the opt-in/pending-activation page.
[3075] Fix | Delete
*
[3076] Fix | Delete
* @author Vova Feldman (@svovaf)
[3077] Fix | Delete
* @since 1.2.1.7
[3078] Fix | Delete
*
[3079] Fix | Delete
* @return bool
[3080] Fix | Delete
*/
[3081] Fix | Delete
function is_activation_page() {
[3082] Fix | Delete
if ( $this->_menu->is_activation_page( $this->show_opt_in_on_themes_page() ) ) {
[3083] Fix | Delete
return true;
[3084] Fix | Delete
}
[3085] Fix | Delete
[3086] Fix | Delete
if ( ! $this->is_activation_mode() ) {
[3087] Fix | Delete
return false;
[3088] Fix | Delete
}
[3089] Fix | Delete
[3090] Fix | Delete
// Check if current page is matching the activation page.
[3091] Fix | Delete
return $this->is_matching_url( $this->get_activation_url() );
[3092] Fix | Delete
}
[3093] Fix | Delete
[3094] Fix | Delete
/**
[3095] Fix | Delete
* Check if URL path's are matching and that all querystring
[3096] Fix | Delete
* arguments of the $sub_url exist in the $url with the same values.
[3097] Fix | Delete
*
[3098] Fix | Delete
* WARNING:
[3099] Fix | Delete
* 1. This method doesn't check if the sub/domain are matching.
[3100] Fix | Delete
* 2. Ignore case sensitivity.
[3101] Fix | Delete
*
[3102] Fix | Delete
* @author Vova Feldman (@svovaf)
[3103] Fix | Delete
* @since 1.2.1.7
[3104] Fix | Delete
*
[3105] Fix | Delete
* @param string $sub_url
[3106] Fix | Delete
* @param string $url If argument is not set, check if the sub_url matching the current's page URL.
[3107] Fix | Delete
*
[3108] Fix | Delete
* @return bool
[3109] Fix | Delete
*/
[3110] Fix | Delete
private function is_matching_url( $sub_url, $url = '' ) {
[3111] Fix | Delete
if ( empty( $url ) ) {
[3112] Fix | Delete
$url = $_SERVER['REQUEST_URI'];
[3113] Fix | Delete
}
[3114] Fix | Delete
[3115] Fix | Delete
$url = strtolower( $url );
[3116] Fix | Delete
$sub_url = strtolower( $sub_url );
[3117] Fix | Delete
[3118] Fix | Delete
if ( parse_url( $sub_url, PHP_URL_PATH ) !== parse_url( $url, PHP_URL_PATH ) ) {
[3119] Fix | Delete
// Different path - DO NOT OVERRIDE PAGE.
[3120] Fix | Delete
return false;
[3121] Fix | Delete
}
[3122] Fix | Delete
[3123] Fix | Delete
$url_params = fs_parse_url_params( $url );
[3124] Fix | Delete
$sub_url_params = fs_parse_url_params( $sub_url );
[3125] Fix | Delete
[3126] Fix | Delete
foreach ( $sub_url_params as $key => $val ) {
[3127] Fix | Delete
if ( ! isset( $url_params[ $key ] ) || $val != $url_params[ $key ] ) {
[3128] Fix | Delete
// Not matching query string - DO NOT OVERRIDE PAGE.
[3129] Fix | Delete
return false;
[3130] Fix | Delete
}
[3131] Fix | Delete
}
[3132] Fix | Delete
[3133] Fix | Delete
return true;
[3134] Fix | Delete
}
[3135] Fix | Delete
[3136] Fix | Delete
/**
[3137] Fix | Delete
* Get the basenames of all active plugins for specific blog. Including network activated plugins.
[3138] Fix | Delete
*
[3139] Fix | Delete
* @author Vova Feldman (@svovaf)
[3140] Fix | Delete
* @since 2.0.0
[3141] Fix | Delete
*
[3142] Fix | Delete
* @param int $blog_id
[3143] Fix | Delete
*
[3144] Fix | Delete
* @return string[]
[3145] Fix | Delete
*/
[3146] Fix | Delete
private static function get_active_plugins_basenames( $blog_id = 0 ) {
[3147] Fix | Delete
if ( is_multisite() && $blog_id > 0 ) {
[3148] Fix | Delete
$active_basenames = get_blog_option( $blog_id, 'active_plugins' );
[3149] Fix | Delete
} else {
[3150] Fix | Delete
$active_basenames = get_option( 'active_plugins' );
[3151] Fix | Delete
}
[3152] Fix | Delete
[3153] Fix | Delete
if ( ! is_array( $active_basenames ) ) {
[3154] Fix | Delete
$active_basenames = array();
[3155] Fix | Delete
}
[3156] Fix | Delete
[3157] Fix | Delete
if ( is_multisite() ) {
[3158] Fix | Delete
$network_active_basenames = get_site_option( 'active_sitewide_plugins' );
[3159] Fix | Delete
[3160] Fix | Delete
if ( is_array( $network_active_basenames ) && ! empty( $network_active_basenames ) ) {
[3161] Fix | Delete
$active_basenames = array_merge( $active_basenames, array_keys( $network_active_basenames ) );
[3162] Fix | Delete
}
[3163] Fix | Delete
}
[3164] Fix | Delete
[3165] Fix | Delete
return $active_basenames;
[3166] Fix | Delete
}
[3167] Fix | Delete
[3168] Fix | Delete
/**
[3169] Fix | Delete
* @author Leo Fajardo (@leorw)
[3170] Fix | Delete
* @since 2.3.0
[3171] Fix | Delete
*
[3172] Fix | Delete
* @param int $blog_id
[3173] Fix | Delete
*
[3174] Fix | Delete
* @return array
[3175] Fix | Delete
*/
[3176] Fix | Delete
static function get_active_plugins_directories_map( $blog_id = 0 ) {
[3177] Fix | Delete
$active_basenames = self::get_active_plugins_basenames( $blog_id );
[3178] Fix | Delete
[3179] Fix | Delete
$map = array();
[3180] Fix | Delete
[3181] Fix | Delete
foreach ( $active_basenames as $active_basename ) {
[3182] Fix | Delete
$active_basename = fs_normalize_path( $active_basename );
[3183] Fix | Delete
[3184] Fix | Delete
if ( false === strpos( $active_basename, '/' ) ) {
[3185] Fix | Delete
continue;
[3186] Fix | Delete
}
[3187] Fix | Delete
[3188] Fix | Delete
$map[ dirname( $active_basename ) ] = true;
[3189] Fix | Delete
}
[3190] Fix | Delete
[3191] Fix | Delete
return $map;
[3192] Fix | Delete
}
[3193] Fix | Delete
[3194] Fix | Delete
/**
[3195] Fix | Delete
* Get collection of all active plugins. Including network activated plugins.
[3196] Fix | Delete
*
[3197] Fix | Delete
* @author Vova Feldman (@svovaf)
[3198] Fix | Delete
* @since 1.0.9
[3199] Fix | Delete
*
[3200] Fix | Delete
* @param int $blog_id Since 2.0.0
[3201] Fix | Delete
*
[3202] Fix | Delete
* @return array[string]array
[3203] Fix | Delete
*/
[3204] Fix | Delete
private static function get_active_plugins( $blog_id = 0 ) {
[3205] Fix | Delete
self::require_plugin_essentials();
[3206] Fix | Delete
[3207] Fix | Delete
$active_plugin = array();
[3208] Fix | Delete
$all_plugins = fs_get_plugins();
[3209] Fix | Delete
$active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
[3210] Fix | Delete
[3211] Fix | Delete
foreach ( $active_plugins_basenames as $plugin_basename ) {
[3212] Fix | Delete
$active_plugin[ $plugin_basename ] = $all_plugins[ $plugin_basename ];
[3213] Fix | Delete
}
[3214] Fix | Delete
[3215] Fix | Delete
return $active_plugin;
[3216] Fix | Delete
}
[3217] Fix | Delete
[3218] Fix | Delete
/**
[3219] Fix | Delete
* Get collection of all site active plugins for a specified blog.
[3220] Fix | Delete
*
[3221] Fix | Delete
* @author Vova Feldman (@svovaf)
[3222] Fix | Delete
* @since 2.0.0
[3223] Fix | Delete
*
[3224] Fix | Delete
* @param int $blog_id
[3225] Fix | Delete
*
[3226] Fix | Delete
* @return array[string]array
[3227] Fix | Delete
*/
[3228] Fix | Delete
private static function get_site_active_plugins( $blog_id = 0 ) {
[3229] Fix | Delete
$active_basenames = ( is_multisite() && $blog_id > 0 ) ?
[3230] Fix | Delete
get_blog_option( $blog_id, 'active_plugins' ) :
[3231] Fix | Delete
get_option( 'active_plugins' );
[3232] Fix | Delete
[3233] Fix | Delete
$active = array();
[3234] Fix | Delete
[3235] Fix | Delete
if ( ! is_array( $active_basenames ) ) {
[3236] Fix | Delete
return $active;
[3237] Fix | Delete
}
[3238] Fix | Delete
[3239] Fix | Delete
foreach ( $active_basenames as $basename ) {
[3240] Fix | Delete
$active[ $basename ] = array(
[3241] Fix | Delete
'is_active' => true,
[3242] Fix | Delete
'Version' => '1.0', // Dummy version.
[3243] Fix | Delete
'slug' => self::get_plugin_slug( $basename ),
[3244] Fix | Delete
);
[3245] Fix | Delete
}
[3246] Fix | Delete
[3247] Fix | Delete
return $active;
[3248] Fix | Delete
}
[3249] Fix | Delete
[3250] Fix | Delete
/**
[3251] Fix | Delete
* Get collection of all plugins with their activation status for a specified blog.
[3252] Fix | Delete
*
[3253] Fix | Delete
* @author Vova Feldman (@svovaf)
[3254] Fix | Delete
* @since 1.1.8
[3255] Fix | Delete
*
[3256] Fix | Delete
* @param int $blog_id Since 2.0.0
[3257] Fix | Delete
*
[3258] Fix | Delete
* @return array Key is the plugin file path and the value is an array of the plugin data.
[3259] Fix | Delete
*/
[3260] Fix | Delete
private static function get_all_plugins( $blog_id = 0 ) {
[3261] Fix | Delete
self::require_plugin_essentials();
[3262] Fix | Delete
[3263] Fix | Delete
$all_plugins = fs_get_plugins();
[3264] Fix | Delete
[3265] Fix | Delete
$active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
[3266] Fix | Delete
[3267] Fix | Delete
foreach ( $all_plugins as $basename => &$data ) {
[3268] Fix | Delete
// By default set to inactive (next foreach update the active plugins).
[3269] Fix | Delete
$data['is_active'] = false;
[3270] Fix | Delete
// Enrich with plugin slug.
[3271] Fix | Delete
$data['slug'] = self::get_plugin_slug( $basename );
[3272] Fix | Delete
}
[3273] Fix | Delete
[3274] Fix | Delete
// Flag active plugins.
[3275] Fix | Delete
foreach ( $active_plugins_basenames as $basename ) {
[3276] Fix | Delete
if ( isset( $all_plugins[ $basename ] ) ) {
[3277] Fix | Delete
$all_plugins[ $basename ]['is_active'] = true;
[3278] Fix | Delete
}
[3279] Fix | Delete
}
[3280] Fix | Delete
[3281] Fix | Delete
return $all_plugins;
[3282] Fix | Delete
}
[3283] Fix | Delete
[3284] Fix | Delete
/**
[3285] Fix | Delete
* Get collection of all plugins and if they are network level activated.
[3286] Fix | Delete
*
[3287] Fix | Delete
* @author Vova Feldman (@svovaf)
[3288] Fix | Delete
* @since 2.0.0
[3289] Fix | Delete
*
[3290] Fix | Delete
* @return array Key is the plugin basename and the value is an array of the plugin data.
[3291] Fix | Delete
*/
[3292] Fix | Delete
private static function get_network_plugins() {
[3293] Fix | Delete
self::require_plugin_essentials();
[3294] Fix | Delete
[3295] Fix | Delete
$all_plugins = fs_get_plugins();
[3296] Fix | Delete
[3297] Fix | Delete
$network_active_basenames = is_multisite() ?
[3298] Fix | Delete
get_site_option( 'active_sitewide_plugins' ) :
[3299] Fix | Delete
array();
[3300] Fix | Delete
[3301] Fix | Delete
foreach ( $all_plugins as $basename => &$data ) {
[3302] Fix | Delete
// By default set to inactive (next foreach update the active plugins).
[3303] Fix | Delete
$data['is_active'] = false;
[3304] Fix | Delete
// Enrich with plugin slug.
[3305] Fix | Delete
$data['slug'] = self::get_plugin_slug( $basename );
[3306] Fix | Delete
}
[3307] Fix | Delete
[3308] Fix | Delete
// Flag active plugins.
[3309] Fix | Delete
foreach ( $network_active_basenames as $basename ) {
[3310] Fix | Delete
if ( isset( $all_plugins[ $basename ] ) ) {
[3311] Fix | Delete
$all_plugins[ $basename ]['is_active'] = true;
[3312] Fix | Delete
}
[3313] Fix | Delete
}
[3314] Fix | Delete
[3315] Fix | Delete
return $all_plugins;
[3316] Fix | Delete
}
[3317] Fix | Delete
[3318] Fix | Delete
/**
[3319] Fix | Delete
* Cached result of get_site_transient( 'update_plugins' )
[3320] Fix | Delete
*
[3321] Fix | Delete
* @author Vova Feldman (@svovaf)
[3322] Fix | Delete
* @since 1.1.8
[3323] Fix | Delete
*
[3324] Fix | Delete
* @var object
[3325] Fix | Delete
*/
[3326] Fix | Delete
private static $_plugins_info;
[3327] Fix | Delete
[3328] Fix | Delete
/**
[3329] Fix | Delete
* Helper function to get specified plugin's slug.
[3330] Fix | Delete
*
[3331] Fix | Delete
* @author Vova Feldman (@svovaf)
[3332] Fix | Delete
* @since 1.1.8
[3333] Fix | Delete
*
[3334] Fix | Delete
* @param $basename
[3335] Fix | Delete
*
[3336] Fix | Delete
* @return string
[3337] Fix | Delete
*/
[3338] Fix | Delete
private static function get_plugin_slug( $basename ) {
[3339] Fix | Delete
if ( ! isset( self::$_plugins_info ) ) {
[3340] Fix | Delete
self::$_plugins_info = get_site_transient( 'update_plugins' );
[3341] Fix | Delete
}
[3342] Fix | Delete
[3343] Fix | Delete
$slug = '';
[3344] Fix | Delete
[3345] Fix | Delete
if ( is_object( self::$_plugins_info ) ) {
[3346] Fix | Delete
if ( isset( self::$_plugins_info->no_update ) &&
[3347] Fix | Delete
isset( self::$_plugins_info->no_update[ $basename ] ) &&
[3348] Fix | Delete
! empty( self::$_plugins_info->no_update[ $basename ]->slug )
[3349] Fix | Delete
) {
[3350] Fix | Delete
$slug = self::$_plugins_info->no_update[ $basename ]->slug;
[3351] Fix | Delete
} else if ( isset( self::$_plugins_info->response ) &&
[3352] Fix | Delete
isset( self::$_plugins_info->response[ $basename ] ) &&
[3353] Fix | Delete
! empty( self::$_plugins_info->response[ $basename ]->slug )
[3354] Fix | Delete
) {
[3355] Fix | Delete
$slug = self::$_plugins_info->response[ $basename ]->slug;
[3356] Fix | Delete
}
[3357] Fix | Delete
}
[3358] Fix | Delete
[3359] Fix | Delete
if ( empty( $slug ) ) {
[3360] Fix | Delete
// Try to find slug from FS data.
[3361] Fix | Delete
$slug = self::find_slug_by_basename( $basename );
[3362] Fix | Delete
}
[3363] Fix | Delete
[3364] Fix | Delete
if ( empty( $slug ) ) {
[3365] Fix | Delete
// Fallback to plugin's folder name.
[3366] Fix | Delete
$slug = dirname( $basename );
[3367] Fix | Delete
}
[3368] Fix | Delete
[3369] Fix | Delete
return $slug;
[3370] Fix | Delete
}
[3371] Fix | Delete
[3372] Fix | Delete
private static $_statics_loaded = false;
[3373] Fix | Delete
[3374] Fix | Delete
/**
[3375] Fix | Delete
* Load static resources.
[3376] Fix | Delete
*
[3377] Fix | Delete
* @author Vova Feldman (@svovaf)
[3378] Fix | Delete
* @since 1.0.1
[3379] Fix | Delete
*/
[3380] Fix | Delete
private static function _load_required_static() {
[3381] Fix | Delete
if ( self::$_statics_loaded ) {
[3382] Fix | Delete
return;
[3383] Fix | Delete
}
[3384] Fix | Delete
[3385] Fix | Delete
self::$_static_logger = FS_Logger::get_logger( WP_FS__SLUG, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
[3386] Fix | Delete
[3387] Fix | Delete
self::$_static_logger->entrance();
[3388] Fix | Delete
[3389] Fix | Delete
self::$_accounts = FS_Options::instance( WP_FS__ACCOUNTS_OPTION_NAME, true );
[3390] Fix | Delete
[3391] Fix | Delete
if ( is_multisite() ) {
[3392] Fix | Delete
$has_skipped_migration = (
[3393] Fix | Delete
// 'id_slug_type_path_map' - was never stored on older versions, therefore, not exists on the site level.
[3394] Fix | Delete
null === self::$_accounts->get_option( 'id_slug_type_path_map', null, false ) &&
[3395] Fix | Delete
// 'file_slug_map' stored on the site level, so it was running an SDK version before it was integrated with MS-network.
[3396] Fix | Delete
null !== self::$_accounts->get_option( 'file_slug_map', null, false )
[3397] Fix | Delete
);
[3398] Fix | Delete
[3399] Fix | Delete
/**
[3400] Fix | Delete
* If the file_slug_map exists on the site level but doesn't exist on the
[3401] Fix | Delete
* network level storage, it means that we need to process the storage with migration.
[3402] Fix | Delete
*
[3403] Fix | Delete
* The code in this `if` scope will only be executed once and only for the first site that will execute it because once we migrate the storage data, file_slug_map will be already set in the network level storage.
[3404] Fix | Delete
*
[3405] Fix | Delete
* @author Vova Feldman (@svovaf)
[3406] Fix | Delete
* @since 2.0.0
[3407] Fix | Delete
*/
[3408] Fix | Delete
if (
[3409] Fix | Delete
( $has_skipped_migration && true !== self::$_accounts->get_option( 'ms_migration_complete', false, true ) ) ||
[3410] Fix | Delete
( null === self::$_accounts->get_option( 'file_slug_map', null, true ) &&
[3411] Fix | Delete
null !== self::$_accounts->get_option( 'file_slug_map', null, false ) )
[3412] Fix | Delete
) {
[3413] Fix | Delete
self::migrate_options_to_network();
[3414] Fix | Delete
}
[3415] Fix | Delete
}
[3416] Fix | Delete
[3417] Fix | Delete
self::$_global_admin_notices = FS_Admin_Notices::instance( 'global' );
[3418] Fix | Delete
[3419] Fix | Delete
if ( ! WP_FS__DEMO_MODE ) {
[3420] Fix | Delete
add_action( ( fs_is_network_admin() ? 'network_' : '' ) . 'admin_menu', array(
[3421] Fix | Delete
'Freemius',
[3422] Fix | Delete
'_add_debug_section'
[3423] Fix | Delete
) );
[3424] Fix | Delete
}
[3425] Fix | Delete
[3426] Fix | Delete
add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
[3427] Fix | Delete
[3428] Fix | Delete
self::add_ajax_action_static( 'get_debug_log', array( 'Freemius', '_get_debug_log' ) );
[3429] Fix | Delete
[3430] Fix | Delete
self::add_ajax_action_static( 'get_db_option', array( 'Freemius', '_get_db_option' ) );
[3431] Fix | Delete
[3432] Fix | Delete
self::add_ajax_action_static( 'set_db_option', array( 'Freemius', '_set_db_option' ) );
[3433] Fix | Delete
[3434] Fix | Delete
if ( 0 == did_action( 'plugins_loaded' ) ) {
[3435] Fix | Delete
add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 );
[3436] Fix | Delete
}
[3437] Fix | Delete
[3438] Fix | Delete
$clone_manager = FS_Clone_Manager::instance();
[3439] Fix | Delete
add_action( 'init', array( $clone_manager, '_init' ) );
[3440] Fix | Delete
[3441] Fix | Delete
add_action( 'admin_footer', array( 'Freemius', '_open_support_forum_in_new_page' ) );
[3442] Fix | Delete
[3443] Fix | Delete
if ( self::is_plugins_page() || self::is_themes_page() ) {
[3444] Fix | Delete
add_action( 'admin_print_footer_scripts', array( 'Freemius', '_maybe_add_beta_label_styles' ), 9 );
[3445] Fix | Delete
[3446] Fix | Delete
/**
[3447] Fix | Delete
* Specifically use this hook so that the JS event handlers will work properly on the "Themes"
[3448] Fix | Delete
* page.
[3449] Fix | Delete
*
[3450] Fix | Delete
* @author Leo Fajardo (@leorw)
[3451] Fix | Delete
* @since 2.3.0
[3452] Fix | Delete
*/
[3453] Fix | Delete
add_action( 'admin_footer-' . self::get_current_page(), array( 'Freemius', '_maybe_add_beta_label_to_plugins_and_handle_confirmation') );
[3454] Fix | Delete
}
[3455] Fix | Delete
[3456] Fix | Delete
self::$_statics_loaded = true;
[3457] Fix | Delete
}
[3458] Fix | Delete
[3459] Fix | Delete
#--------------------------------------------------------------------------------
[3460] Fix | Delete
#region Clone
[3461] Fix | Delete
#--------------------------------------------------------------------------------
[3462] Fix | Delete
[3463] Fix | Delete
/**
[3464] Fix | Delete
* @author Leo Fajardo (@leorw)
[3465] Fix | Delete
* @since 2.5.0
[3466] Fix | Delete
*
[3467] Fix | Delete
* @param bool $only_if_manual_resolution_is_not_hidden
[3468] Fix | Delete
*
[3469] Fix | Delete
* @return bool
[3470] Fix | Delete
*/
[3471] Fix | Delete
private function is_unresolved_clone( $only_if_manual_resolution_is_not_hidden = false ) {
[3472] Fix | Delete
if ( ! $this->is_clone( $only_if_manual_resolution_is_not_hidden ) ) {
[3473] Fix | Delete
return false;
[3474] Fix | Delete
}
[3475] Fix | Delete
[3476] Fix | Delete
return FS_Clone_Manager::instance()->has_temporary_duplicate_mode_expired();
[3477] Fix | Delete
}
[3478] Fix | Delete
[3479] Fix | Delete
/**
[3480] Fix | Delete
* @author Leo Fajardo (@leorw)
[3481] Fix | Delete
* @since 2.5.0
[3482] Fix | Delete
*
[3483] Fix | Delete
* @param bool $only_if_manual_resolution_is_not_hidden
[3484] Fix | Delete
*/
[3485] Fix | Delete
function is_clone( $only_if_manual_resolution_is_not_hidden = false ) {
[3486] Fix | Delete
if ( ! is_object( $this->_site ) ) {
[3487] Fix | Delete
return false;
[3488] Fix | Delete
}
[3489] Fix | Delete
[3490] Fix | Delete
$blog_id = null;
[3491] Fix | Delete
[3492] Fix | Delete
if (
[3493] Fix | Delete
fs_is_network_admin() &&
[3494] Fix | Delete
FS_Site::is_valid_id( $this->_storage->network_install_blog_id )
[3495] Fix | Delete
) {
[3496] Fix | Delete
// Ensure that we're comparing the network install's URL with the relevant subsite's URL.
[3497] Fix | Delete
$blog_id = $this->_storage->network_install_blog_id;
[3498] Fix | Delete
}
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function