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
$this->do_action( 'after_init_plugin_pending_activations' );
[5000] Fix | Delete
}
[5001] Fix | Delete
} else {
[5002] Fix | Delete
if ( $this->is_registered() ) {
[5003] Fix | Delete
$this->do_action( 'after_init_addon_registered' );
[5004] Fix | Delete
} else if ( $this->is_anonymous() ) {
[5005] Fix | Delete
$this->do_action( 'after_init_addon_anonymous' );
[5006] Fix | Delete
} else if ( $this->is_pending_activation() ) {
[5007] Fix | Delete
$this->do_action( 'after_init_addon_pending_activations' );
[5008] Fix | Delete
}
[5009] Fix | Delete
}
[5010] Fix | Delete
}
[5011] Fix | Delete
[5012] Fix | Delete
/**
[5013] Fix | Delete
* @author Leo Fajardo (@leorw)
[5014] Fix | Delete
* @since 2.2.3
[5015] Fix | Delete
*
[5016] Fix | Delete
* @return bool
[5017] Fix | Delete
*/
[5018] Fix | Delete
private function should_use_freemius_updater_and_dialog() {
[5019] Fix | Delete
return (
[5020] Fix | Delete
/**
[5021] Fix | Delete
* Allow updater and dialog when the `fs_allow_updater_and_dialog` URL query param exists and has `true`
[5022] Fix | Delete
* value, or when the current page is not the "Add Plugins" page (/plugin-install.php) and the `action`
[5023] Fix | Delete
* URL query param doesn't exist or its value is not `install-plugin` so that there will be no conflicts
[5024] Fix | Delete
* with the .org plugins' functionalities (e.g. installation from the "Add Plugins" page and viewing
[5025] Fix | Delete
* plugin details from .org).
[5026] Fix | Delete
*/
[5027] Fix | Delete
( true === fs_request_get_bool( 'fs_allow_updater_and_dialog' ) ) ||
[5028] Fix | Delete
(
[5029] Fix | Delete
! self::is_plugin_install_page() &&
[5030] Fix | Delete
// Disallow updater and dialog when installing a plugin, otherwise .org "add-on" plugins will be affected.
[5031] Fix | Delete
( 'install-plugin' !== fs_request_get( 'action' ) )
[5032] Fix | Delete
)
[5033] Fix | Delete
);
[5034] Fix | Delete
}
[5035] Fix | Delete
[5036] Fix | Delete
/**
[5037] Fix | Delete
* @param string[] $permissions
[5038] Fix | Delete
* @param bool $is_enabled
[5039] Fix | Delete
* @param int|null $blog_id
[5040] Fix | Delete
*
[5041] Fix | Delete
* @return true|object `true` on success, API error object on failure.
[5042] Fix | Delete
*/
[5043] Fix | Delete
private function update_site_permissions( array $permissions, $is_enabled, $blog_id = null ) {
[5044] Fix | Delete
$this->_logger->entrance();
[5045] Fix | Delete
[5046] Fix | Delete
$params = array(
[5047] Fix | Delete
'permissions' => implode( ',', $permissions ),
[5048] Fix | Delete
'is_enabled' => $is_enabled,
[5049] Fix | Delete
);
[5050] Fix | Delete
[5051] Fix | Delete
$current_blog_id = get_current_blog_id();
[5052] Fix | Delete
$is_blog_switched = false;
[5053] Fix | Delete
if ( is_numeric( $blog_id ) && $current_blog_id != $blog_id ) {
[5054] Fix | Delete
$is_blog_switched = $this->switch_to_blog( $blog_id );
[5055] Fix | Delete
}
[5056] Fix | Delete
[5057] Fix | Delete
$result = $this->api_site_call( '/permissions.json', 'put', $params );
[5058] Fix | Delete
[5059] Fix | Delete
if ( $is_blog_switched ) {
[5060] Fix | Delete
$this->switch_to_blog( $current_blog_id );
[5061] Fix | Delete
}
[5062] Fix | Delete
[5063] Fix | Delete
if (
[5064] Fix | Delete
! $this->is_api_result_object( $result ) ||
[5065] Fix | Delete
! isset( $result->install_id )
[5066] Fix | Delete
) {
[5067] Fix | Delete
$this->_logger->api_error( $result );
[5068] Fix | Delete
[5069] Fix | Delete
return $result;
[5070] Fix | Delete
}
[5071] Fix | Delete
[5072] Fix | Delete
return true;
[5073] Fix | Delete
}
[5074] Fix | Delete
[5075] Fix | Delete
/**
[5076] Fix | Delete
* @param string[] $permissions
[5077] Fix | Delete
* @param bool $is_enabled
[5078] Fix | Delete
* @param bool $has_site_delegated_connection
[5079] Fix | Delete
*
[5080] Fix | Delete
* @return true|object `true` on success, API error object on failure.
[5081] Fix | Delete
*/
[5082] Fix | Delete
private function update_network_permissions(
[5083] Fix | Delete
array $permissions,
[5084] Fix | Delete
$is_enabled,
[5085] Fix | Delete
&$has_site_delegated_connection
[5086] Fix | Delete
) {
[5087] Fix | Delete
$this->_logger->entrance();
[5088] Fix | Delete
[5089] Fix | Delete
$install_id_2_blog_id = array();
[5090] Fix | Delete
$install_by_blog_id = $this->get_blog_install_map();
[5091] Fix | Delete
[5092] Fix | Delete
$has_site_delegated_connection = false;
[5093] Fix | Delete
[5094] Fix | Delete
foreach ( $install_by_blog_id as $blog_id => $install ) {
[5095] Fix | Delete
if ( $this->is_site_delegated_connection( $blog_id ) ) {
[5096] Fix | Delete
// Only update permissions of non-delegated installs.
[5097] Fix | Delete
$has_site_delegated_connection = true;
[5098] Fix | Delete
continue;
[5099] Fix | Delete
}
[5100] Fix | Delete
[5101] Fix | Delete
$install_id_2_blog_id[ $install->id ] = $blog_id;
[5102] Fix | Delete
}
[5103] Fix | Delete
[5104] Fix | Delete
if ( empty( $install_id_2_blog_id ) ) {
[5105] Fix | Delete
return true;
[5106] Fix | Delete
}
[5107] Fix | Delete
[5108] Fix | Delete
$params = array(
[5109] Fix | Delete
'permissions' => implode( ',', $permissions ),
[5110] Fix | Delete
'is_enabled' => $is_enabled,
[5111] Fix | Delete
'install_ids' => implode( ',', array_keys( $install_id_2_blog_id ) ),
[5112] Fix | Delete
);
[5113] Fix | Delete
[5114] Fix | Delete
// Send update to FS.
[5115] Fix | Delete
$result = $this->get_current_or_network_user_api_scope()->call(
[5116] Fix | Delete
"/plugins/{$this->_module_id}/installs/permissions.json",
[5117] Fix | Delete
'put',
[5118] Fix | Delete
$params
[5119] Fix | Delete
);
[5120] Fix | Delete
[5121] Fix | Delete
if ( ! $this->is_api_result_object( $result, 'installs_metadata' ) ) {
[5122] Fix | Delete
$this->_logger->api_error( $result );
[5123] Fix | Delete
[5124] Fix | Delete
return $result;
[5125] Fix | Delete
}
[5126] Fix | Delete
[5127] Fix | Delete
return true;
[5128] Fix | Delete
}
[5129] Fix | Delete
[5130] Fix | Delete
/**
[5131] Fix | Delete
* @param mixed $result
[5132] Fix | Delete
*
[5133] Fix | Delete
* @return string
[5134] Fix | Delete
*/
[5135] Fix | Delete
private function get_api_error_message( $result ) {
[5136] Fix | Delete
$error_message = sprintf( $this->get_text_inline( 'There was an unexpected API error while processing your request. Please try again in a few minutes and if it still doesn\'t work, contact the %s\'s author with the following:',
[5137] Fix | Delete
'unexpected-api-error' ), $this->_module_type ) . ' ';
[5138] Fix | Delete
[5139] Fix | Delete
if (
[5140] Fix | Delete
$this->is_api_error( $result ) &&
[5141] Fix | Delete
isset( $result->error )
[5142] Fix | Delete
) {
[5143] Fix | Delete
$code = empty( $result->error->code ) ? '' : " Code: {$result->error->code}";
[5144] Fix | Delete
[5145] Fix | Delete
$error_message .= "<b>{$result->error->message}{$code}</b>";
[5146] Fix | Delete
} else {
[5147] Fix | Delete
$error_message .= var_export( $result, true );
[5148] Fix | Delete
}
[5149] Fix | Delete
[5150] Fix | Delete
return $error_message;
[5151] Fix | Delete
}
[5152] Fix | Delete
[5153] Fix | Delete
/**
[5154] Fix | Delete
* @author Vova Feldman (@svovaf)
[5155] Fix | Delete
* @since 2.5.1
[5156] Fix | Delete
*/
[5157] Fix | Delete
function _toggle_permission_tracking_callback() {
[5158] Fix | Delete
$this->_logger->entrance();
[5159] Fix | Delete
[5160] Fix | Delete
$this->check_ajax_referer( 'toggle_permission_tracking' );
[5161] Fix | Delete
[5162] Fix | Delete
if ( ! $this->is_registered( true ) ) {
[5163] Fix | Delete
self::shoot_ajax_failure( 'User never opted-in.' );
[5164] Fix | Delete
}
[5165] Fix | Delete
[5166] Fix | Delete
$is_enabled = fs_request_get_bool( 'is_enabled' );
[5167] Fix | Delete
$permissions = fs_request_get( 'permissions' );
[5168] Fix | Delete
[5169] Fix | Delete
if ( ! is_string( $permissions ) ) {
[5170] Fix | Delete
self::shoot_ajax_failure( 'The permissions param must be a string.' );
[5171] Fix | Delete
}
[5172] Fix | Delete
[5173] Fix | Delete
$permissions = explode( ',', $permissions );
[5174] Fix | Delete
[5175] Fix | Delete
$result = $this->toggle_permission_tracking( $permissions, $is_enabled );
[5176] Fix | Delete
[5177] Fix | Delete
if ( true !== $result ) {
[5178] Fix | Delete
self::shoot_ajax_failure( $this->get_api_error_message( $result ) );
[5179] Fix | Delete
}
[5180] Fix | Delete
[5181] Fix | Delete
self::shoot_ajax_success();
[5182] Fix | Delete
}
[5183] Fix | Delete
[5184] Fix | Delete
/**
[5185] Fix | Delete
* @param string[] $permissions
[5186] Fix | Delete
* @param bool $is_enabled
[5187] Fix | Delete
* @param int|null $blog_id
[5188] Fix | Delete
*
[5189] Fix | Delete
* @return bool|mixed `true` if updated successfully or no update is needed.
[5190] Fix | Delete
*/
[5191] Fix | Delete
private function toggle_permission_tracking( $permissions, $is_enabled, $blog_id = null ) {
[5192] Fix | Delete
if ( ! $this->is_registered( true ) ) {
[5193] Fix | Delete
// User never opted-in.
[5194] Fix | Delete
return false;
[5195] Fix | Delete
}
[5196] Fix | Delete
[5197] Fix | Delete
// Check if permissions are already set as needed.
[5198] Fix | Delete
if ( FS_Permission_Manager::instance( $this )->are_permissions( $permissions, $is_enabled, $blog_id ) ) {
[5199] Fix | Delete
/**
[5200] Fix | Delete
* Note:
[5201] Fix | Delete
* When running on the network admin, there's no need to iterate through all the installs individually since network opt-in permissions are managed for ALL non-delegated installs through a single option (per permission) on the network-level storage.
[5202] Fix | Delete
*/
[5203] Fix | Delete
return true;
[5204] Fix | Delete
}
[5205] Fix | Delete
[5206] Fix | Delete
$api_managed_permissions = array_intersect(
[5207] Fix | Delete
$permissions,
[5208] Fix | Delete
FS_Permission_Manager::get_api_managed_permission_ids()
[5209] Fix | Delete
);
[5210] Fix | Delete
[5211] Fix | Delete
if (
[5212] Fix | Delete
in_array( FS_Permission_Manager::PERMISSION_ESSENTIALS, $permissions ) &&
[5213] Fix | Delete
! in_array( FS_Permission_Manager::PERMISSION_SITE, $permissions )
[5214] Fix | Delete
) {
[5215] Fix | Delete
$api_managed_permissions[] = FS_Permission_Manager::PERMISSION_SITE;
[5216] Fix | Delete
}
[5217] Fix | Delete
[5218] Fix | Delete
if ( ! empty( $api_managed_permissions ) ) {
[5219] Fix | Delete
$has_site_delegated_connection = false;
[5220] Fix | Delete
[5221] Fix | Delete
if (
[5222] Fix | Delete
! $is_enabled &&
[5223] Fix | Delete
! in_array( FS_Permission_Manager::PERMISSION_EXTENSIONS, $api_managed_permissions ) &&
[5224] Fix | Delete
false === FS_Permission_Manager::instance( $this )->is_extensions_tracking_allowed( $blog_id )
[5225] Fix | Delete
) {
[5226] Fix | Delete
/**
[5227] Fix | Delete
* If we are turning off a permission and the extensions permission is off too, enrich the permissions update request to also turn off extensions tracking, as currently when opting in with extensions tracking disabled the extensions tracking is off but the API isn't aware of it.
[5228] Fix | Delete
*
[5229] Fix | Delete
* @todo Remove this entire `if` after implementing granular opt-in that also sends the permissions to the API when opting in.
[5230] Fix | Delete
*/
[5231] Fix | Delete
$api_managed_permissions[] = FS_Permission_Manager::PERMISSION_EXTENSIONS;
[5232] Fix | Delete
}
[5233] Fix | Delete
[5234] Fix | Delete
if ( is_null( $blog_id ) && fs_is_network_admin() ) {
[5235] Fix | Delete
$result = $this->update_network_permissions(
[5236] Fix | Delete
$api_managed_permissions,
[5237] Fix | Delete
$is_enabled,
[5238] Fix | Delete
$has_site_delegated_connection
[5239] Fix | Delete
);
[5240] Fix | Delete
} else {
[5241] Fix | Delete
$result = $this->update_site_permissions(
[5242] Fix | Delete
$api_managed_permissions,
[5243] Fix | Delete
$is_enabled,
[5244] Fix | Delete
$blog_id
[5245] Fix | Delete
);
[5246] Fix | Delete
}
[5247] Fix | Delete
[5248] Fix | Delete
if ( true !== $result ) {
[5249] Fix | Delete
return $result;
[5250] Fix | Delete
}
[5251] Fix | Delete
[5252] Fix | Delete
if ( in_array( FS_Permission_Manager::PERMISSION_SITE, $api_managed_permissions ) ) {
[5253] Fix | Delete
if ( $is_enabled ) {
[5254] Fix | Delete
$this->schedule_sync_cron();
[5255] Fix | Delete
} else {
[5256] Fix | Delete
$this->clear_sync_cron( ! $has_site_delegated_connection );
[5257] Fix | Delete
}
[5258] Fix | Delete
}
[5259] Fix | Delete
[5260] Fix | Delete
if ( in_array( FS_Permission_Manager::PERMISSION_USER, $api_managed_permissions ) ) {
[5261] Fix | Delete
$this->toggle_user_permission( $is_enabled, $blog_id );
[5262] Fix | Delete
}
[5263] Fix | Delete
}
[5264] Fix | Delete
[5265] Fix | Delete
$this->update_tracking_permissions(
[5266] Fix | Delete
$permissions,
[5267] Fix | Delete
$is_enabled,
[5268] Fix | Delete
$blog_id
[5269] Fix | Delete
);
[5270] Fix | Delete
[5271] Fix | Delete
return true;
[5272] Fix | Delete
}
[5273] Fix | Delete
[5274] Fix | Delete
/**
[5275] Fix | Delete
* @param bool $is_enabled
[5276] Fix | Delete
* @param int|null $blog_id
[5277] Fix | Delete
*/
[5278] Fix | Delete
private function toggle_user_permission( $is_enabled, $blog_id = null ) {
[5279] Fix | Delete
$network_or_blog_ids = is_numeric( $blog_id ) ?
[5280] Fix | Delete
$blog_id :
[5281] Fix | Delete
fs_is_network_admin();
[5282] Fix | Delete
[5283] Fix | Delete
if ( $is_enabled ) {
[5284] Fix | Delete
$this->reset_anonymous_mode( $network_or_blog_ids );
[5285] Fix | Delete
} else {
[5286] Fix | Delete
$this->skip_connection( $network_or_blog_ids );
[5287] Fix | Delete
}
[5288] Fix | Delete
}
[5289] Fix | Delete
[5290] Fix | Delete
/**
[5291] Fix | Delete
* Opt-in back into usage tracking.
[5292] Fix | Delete
*
[5293] Fix | Delete
* Note: This will only work if the user opted-in previously.
[5294] Fix | Delete
*
[5295] Fix | Delete
* Returns:
[5296] Fix | Delete
* 1. FALSE - If the user never opted-in.
[5297] Fix | Delete
* 2. TRUE - If successfully opted-in back to usage tracking.
[5298] Fix | Delete
* 3. object - API result on failure.
[5299] Fix | Delete
*
[5300] Fix | Delete
* @author Leo Fajardo (@leorw)
[5301] Fix | Delete
* @since 1.2.1.5
[5302] Fix | Delete
*
[5303] Fix | Delete
* @bool $is_enabled
[5304] Fix | Delete
*
[5305] Fix | Delete
* @return bool|object
[5306] Fix | Delete
*/
[5307] Fix | Delete
private function toggle_site_tracking( $is_enabled, $blog_id = null ) {
[5308] Fix | Delete
$this->_logger->entrance();
[5309] Fix | Delete
[5310] Fix | Delete
return $this->toggle_permission_tracking(
[5311] Fix | Delete
FS_Permission_Manager::instance( $this )->get_site_tracking_permission_names(),
[5312] Fix | Delete
$is_enabled,
[5313] Fix | Delete
$blog_id
[5314] Fix | Delete
);
[5315] Fix | Delete
}
[5316] Fix | Delete
[5317] Fix | Delete
/**
[5318] Fix | Delete
* If user opted-in and later disabled usage-tracking,
[5319] Fix | Delete
* re-allow tracking for licensing and updates.
[5320] Fix | Delete
*
[5321] Fix | Delete
* @author Leo Fajardo (@leorw)
[5322] Fix | Delete
* @since 1.2.1.5
[5323] Fix | Delete
*
[5324] Fix | Delete
* @param bool $is_context_single_site
[5325] Fix | Delete
*/
[5326] Fix | Delete
private function reconnect_locally( $is_context_single_site = false ) {
[5327] Fix | Delete
$this->_logger->entrance();
[5328] Fix | Delete
[5329] Fix | Delete
if ( ! $this->is_registered() ) {
[5330] Fix | Delete
return;
[5331] Fix | Delete
}
[5332] Fix | Delete
[5333] Fix | Delete
if ( ! fs_is_network_admin() || $is_context_single_site ) {
[5334] Fix | Delete
if ( $this->is_tracking_prohibited() ) {
[5335] Fix | Delete
FS_Permission_Manager::instance( $this )->update_site_tracking( true );
[5336] Fix | Delete
}
[5337] Fix | Delete
} else {
[5338] Fix | Delete
$installs_map = $this->get_blog_install_map();
[5339] Fix | Delete
foreach ( $installs_map as $blog_id => $install ) {
[5340] Fix | Delete
/**
[5341] Fix | Delete
* @var FS_Site $install
[5342] Fix | Delete
*/
[5343] Fix | Delete
if ( ! $this->is_tracking_allowed( $blog_id, $install ) ) {
[5344] Fix | Delete
FS_Permission_Manager::instance( $this )->update_site_tracking( true, $blog_id );
[5345] Fix | Delete
}
[5346] Fix | Delete
}
[5347] Fix | Delete
}
[5348] Fix | Delete
}
[5349] Fix | Delete
[5350] Fix | Delete
/**
[5351] Fix | Delete
* Update permission tracking flags. When updating in a network context, in addition to updating the network-level flags, also update the permissions on the site-level for all non-delegated sites.
[5352] Fix | Delete
*
[5353] Fix | Delete
* @param string[] $permissions
[5354] Fix | Delete
* @param bool $is_enabled
[5355] Fix | Delete
* @param int|null $blog_id
[5356] Fix | Delete
*
[5357] Fix | Delete
* @return array
[5358] Fix | Delete
*/
[5359] Fix | Delete
private function update_tracking_permissions( $permissions, $is_enabled, $blog_id = null ) {
[5360] Fix | Delete
// Alias.
[5361] Fix | Delete
$permission_manager = FS_Permission_Manager::instance( $this );
[5362] Fix | Delete
[5363] Fix | Delete
$network_or_blog_ids = is_numeric( $blog_id ) ?
[5364] Fix | Delete
$blog_id :
[5365] Fix | Delete
fs_is_network_admin();
[5366] Fix | Delete
[5367] Fix | Delete
if ( true === $network_or_blog_ids ) {
[5368] Fix | Delete
// Update the permission for all non-delegated sub-sites.
[5369] Fix | Delete
$blog_ids = $this->get_non_delegated_blog_ids();
[5370] Fix | Delete
[5371] Fix | Delete
// Add the network-level to the array, to update the permission on the network-level storage.
[5372] Fix | Delete
array_unshift( $blog_ids, null );
[5373] Fix | Delete
}
[5374] Fix | Delete
else
[5375] Fix | Delete
{
[5376] Fix | Delete
if ( false === $network_or_blog_ids ) {
[5377] Fix | Delete
$network_or_blog_ids = null;
[5378] Fix | Delete
}
[5379] Fix | Delete
[5380] Fix | Delete
$blog_ids = is_array( $network_or_blog_ids ) ?
[5381] Fix | Delete
$network_or_blog_ids :
[5382] Fix | Delete
array( $network_or_blog_ids );
[5383] Fix | Delete
}
[5384] Fix | Delete
[5385] Fix | Delete
$result = array();
[5386] Fix | Delete
foreach ( $permissions as $permission ) {
[5387] Fix | Delete
$permission = trim( $permission );
[5388] Fix | Delete
$is_permission_supported = true;
[5389] Fix | Delete
[5390] Fix | Delete
foreach ( $blog_ids as $id ) {
[5391] Fix | Delete
$is_permission_supported = $permission_manager->update_permission_tracking_flag(
[5392] Fix | Delete
$permission,
[5393] Fix | Delete
$is_enabled,
[5394] Fix | Delete
$id
[5395] Fix | Delete
);
[5396] Fix | Delete
}
[5397] Fix | Delete
[5398] Fix | Delete
if ( ! $is_permission_supported ) {
[5399] Fix | Delete
$permission = 'no_match';
[5400] Fix | Delete
}
[5401] Fix | Delete
[5402] Fix | Delete
$result[ $permission ] = $is_enabled;
[5403] Fix | Delete
}
[5404] Fix | Delete
[5405] Fix | Delete
return $result;
[5406] Fix | Delete
}
[5407] Fix | Delete
[5408] Fix | Delete
/**
[5409] Fix | Delete
* Parse plugin's settings (as defined by the plugin dev).
[5410] Fix | Delete
*
[5411] Fix | Delete
* @author Vova Feldman (@svovaf)
[5412] Fix | Delete
* @since 1.1.7.3
[5413] Fix | Delete
*
[5414] Fix | Delete
* @param array $plugin_info
[5415] Fix | Delete
*
[5416] Fix | Delete
* @throws \Freemius_Exception
[5417] Fix | Delete
*/
[5418] Fix | Delete
private function parse_settings( &$plugin_info ) {
[5419] Fix | Delete
$this->_logger->entrance();
[5420] Fix | Delete
[5421] Fix | Delete
$id = $this->get_numeric_option( $plugin_info, 'id', false );
[5422] Fix | Delete
$public_key = $this->get_option( $plugin_info, 'public_key', false );
[5423] Fix | Delete
$secret_key = $this->get_option( $plugin_info, 'secret_key', null );
[5424] Fix | Delete
$parent_id = $this->get_numeric_option( $plugin_info, 'parent_id', null );
[5425] Fix | Delete
$parent_name = $this->get_option( $plugin_info, 'parent_name', null );
[5426] Fix | Delete
[5427] Fix | Delete
/**
[5428] Fix | Delete
* @author Vova Feldman (@svovaf)
[5429] Fix | Delete
* @since 1.1.9 Try to pull secret key from external config.
[5430] Fix | Delete
*/
[5431] Fix | Delete
if ( is_null( $secret_key ) && defined( "WP_FS__{$this->_slug}_SECRET_KEY" ) ) {
[5432] Fix | Delete
$secret_key = constant( "WP_FS__{$this->_slug}_SECRET_KEY" );
[5433] Fix | Delete
}
[5434] Fix | Delete
[5435] Fix | Delete
if ( isset( $plugin_info['parent'] ) ) {
[5436] Fix | Delete
$parent_id = $this->get_numeric_option( $plugin_info['parent'], 'id', null );
[5437] Fix | Delete
// $parent_slug = $this->get_option( $plugin_info['parent'], 'slug', null );
[5438] Fix | Delete
// $parent_public_key = $this->get_option( $plugin_info['parent'], 'public_key', null );
[5439] Fix | Delete
// $parent_name = $this->get_option( $plugin_info['parent'], 'name', null );
[5440] Fix | Delete
}
[5441] Fix | Delete
[5442] Fix | Delete
if ( false === $id ) {
[5443] Fix | Delete
throw new Freemius_Exception( array(
[5444] Fix | Delete
'error' => array(
[5445] Fix | Delete
'type' => 'ParameterNotSet',
[5446] Fix | Delete
'message' => 'Plugin id parameter is not set.',
[5447] Fix | Delete
'code' => 'plugin_id_not_set',
[5448] Fix | Delete
'http' => 500,
[5449] Fix | Delete
)
[5450] Fix | Delete
) );
[5451] Fix | Delete
}
[5452] Fix | Delete
if ( false === $public_key ) {
[5453] Fix | Delete
throw new Freemius_Exception( array(
[5454] Fix | Delete
'error' => array(
[5455] Fix | Delete
'type' => 'ParameterNotSet',
[5456] Fix | Delete
'message' => 'Plugin public_key parameter is not set.',
[5457] Fix | Delete
'code' => 'plugin_public_key_not_set',
[5458] Fix | Delete
'http' => 500,
[5459] Fix | Delete
)
[5460] Fix | Delete
) );
[5461] Fix | Delete
}
[5462] Fix | Delete
[5463] Fix | Delete
$plugin = ( $this->_plugin instanceof FS_Plugin ) ?
[5464] Fix | Delete
$this->_plugin :
[5465] Fix | Delete
new FS_Plugin();
[5466] Fix | Delete
[5467] Fix | Delete
$premium_suffix = $this->get_option( $plugin_info, 'premium_suffix', '(Premium)' );
[5468] Fix | Delete
[5469] Fix | Delete
$plugin->update( array(
[5470] Fix | Delete
'id' => $id,
[5471] Fix | Delete
'type' => $this->get_option( $plugin_info, 'type', $this->_module_type ),
[5472] Fix | Delete
'public_key' => $public_key,
[5473] Fix | Delete
'slug' => $this->_slug,
[5474] Fix | Delete
'premium_slug' => $this->get_option( $plugin_info, 'premium_slug', "{$this->_slug}-premium" ),
[5475] Fix | Delete
'parent_plugin_id' => $parent_id,
[5476] Fix | Delete
'version' => $this->get_plugin_version(),
[5477] Fix | Delete
'title' => $this->get_plugin_name( $premium_suffix ),
[5478] Fix | Delete
'file' => $this->_plugin_basename,
[5479] Fix | Delete
'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
[5480] Fix | Delete
'premium_suffix' => $premium_suffix,
[5481] Fix | Delete
'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
[5482] Fix | Delete
'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ),
[5483] Fix | Delete
'bundle_id' => $this->get_option( $plugin_info, 'bundle_id', null ),
[5484] Fix | Delete
'bundle_public_key' => $this->get_option( $plugin_info, 'bundle_public_key', null ),
[5485] Fix | Delete
'opt_in_moderation' => $this->get_option( $plugin_info, 'opt_in', null ),
[5486] Fix | Delete
) );
[5487] Fix | Delete
[5488] Fix | Delete
if ( $plugin->is_updated() ) {
[5489] Fix | Delete
// Update plugin details.
[5490] Fix | Delete
$this->_plugin = FS_Plugin_Manager::instance( $this->_module_id )->store( $plugin );
[5491] Fix | Delete
}
[5492] Fix | Delete
// Set the secret key after storing the plugin, we don't want to store the key in the storage.
[5493] Fix | Delete
$this->_plugin->secret_key = $secret_key;
[5494] Fix | Delete
[5495] Fix | Delete
/**
[5496] Fix | Delete
* If the product is network integrated and activated and the current view is in the network level Admin dashboard, if the product's network-level menu located differently from the sub-site level, then use the network menu details (when set).
[5497] Fix | Delete
*
[5498] Fix | Delete
* @author Vova Feldman
[5499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function