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 bool
[4000] Fix | Delete
*/
[4001] Fix | Delete
function is_on() {
[4002] Fix | Delete
self::$_static_logger->entrance();
[4003] Fix | Delete
[4004] Fix | Delete
if ( is_object( $this->_site ) && ! $this->is_registered() ) {
[4005] Fix | Delete
return false;
[4006] Fix | Delete
}
[4007] Fix | Delete
[4008] Fix | Delete
if ( isset( $this->_is_on ) ) {
[4009] Fix | Delete
return $this->_is_on;
[4010] Fix | Delete
}
[4011] Fix | Delete
[4012] Fix | Delete
// If already installed or pending then sure it's on :)
[4013] Fix | Delete
if ( $this->is_registered() || $this->is_pending_activation() ) {
[4014] Fix | Delete
$this->_is_on = true;
[4015] Fix | Delete
[4016] Fix | Delete
return true;
[4017] Fix | Delete
}
[4018] Fix | Delete
[4019] Fix | Delete
return false;
[4020] Fix | Delete
}
[4021] Fix | Delete
[4022] Fix | Delete
/**
[4023] Fix | Delete
* @author Vova Feldman (@svovaf)
[4024] Fix | Delete
* @since 1.1.7.3
[4025] Fix | Delete
*
[4026] Fix | Delete
* @param bool $flush_if_no_connectivity
[4027] Fix | Delete
*
[4028] Fix | Delete
* @return bool
[4029] Fix | Delete
*/
[4030] Fix | Delete
private function should_run_connectivity_test( $flush_if_no_connectivity = false ) {
[4031] Fix | Delete
if ( ! isset( $this->_storage->connectivity_test ) ) {
[4032] Fix | Delete
// Connectivity test was never executed, or cache was cleared.
[4033] Fix | Delete
return true;
[4034] Fix | Delete
}
[4035] Fix | Delete
[4036] Fix | Delete
if ( WP_FS__PING_API_ON_IP_OR_HOST_CHANGES ) {
[4037] Fix | Delete
if ( WP_FS__IS_HTTP_REQUEST ) {
[4038] Fix | Delete
if ( $_SERVER['HTTP_HOST'] != $this->_storage->connectivity_test['host'] ) {
[4039] Fix | Delete
// Domain changed.
[4040] Fix | Delete
return true;
[4041] Fix | Delete
}
[4042] Fix | Delete
[4043] Fix | Delete
if ( WP_FS__REMOTE_ADDR != $this->_storage->connectivity_test['server_ip'] ) {
[4044] Fix | Delete
// Server IP changed.
[4045] Fix | Delete
return true;
[4046] Fix | Delete
}
[4047] Fix | Delete
}
[4048] Fix | Delete
}
[4049] Fix | Delete
[4050] Fix | Delete
if ( $this->_storage->connectivity_test['is_connected'] &&
[4051] Fix | Delete
$this->_storage->connectivity_test['is_active']
[4052] Fix | Delete
) {
[4053] Fix | Delete
// API connected and Freemius is active - no need to run connectivity check.
[4054] Fix | Delete
return false;
[4055] Fix | Delete
}
[4056] Fix | Delete
[4057] Fix | Delete
if ( $flush_if_no_connectivity ) {
[4058] Fix | Delete
/**
[4059] Fix | Delete
* If explicitly asked to flush when no connectivity - do it only
[4060] Fix | Delete
* if at least 10 sec passed from the last API connectivity test.
[4061] Fix | Delete
*/
[4062] Fix | Delete
return ( isset( $this->_storage->connectivity_test['timestamp'] ) &&
[4063] Fix | Delete
( WP_FS__SCRIPT_START_TIME - $this->_storage->connectivity_test['timestamp'] ) > 10 );
[4064] Fix | Delete
}
[4065] Fix | Delete
[4066] Fix | Delete
/**
[4067] Fix | Delete
* @since 1.1.7 Don't check for connectivity on plugin downgrade.
[4068] Fix | Delete
*/
[4069] Fix | Delete
$version = $this->get_plugin_version();
[4070] Fix | Delete
if ( version_compare( $version, $this->_storage->connectivity_test['version'], '>' ) ) {
[4071] Fix | Delete
// If it's a plugin version upgrade and Freemius is off or no connectivity, run connectivity test.
[4072] Fix | Delete
return true;
[4073] Fix | Delete
}
[4074] Fix | Delete
[4075] Fix | Delete
return false;
[4076] Fix | Delete
}
[4077] Fix | Delete
[4078] Fix | Delete
/**
[4079] Fix | Delete
* @author Leo Fajardo (@leorw)
[4080] Fix | Delete
* @since 2.5.4
[4081] Fix | Delete
*
[4082] Fix | Delete
* @param bool $is_update
[4083] Fix | Delete
*
[4084] Fix | Delete
* @return bool
[4085] Fix | Delete
*/
[4086] Fix | Delete
private function should_turn_fs_on( $is_update = true ) {
[4087] Fix | Delete
if (
[4088] Fix | Delete
empty( $this->_plugin->opt_in_moderation ) ||
[4089] Fix | Delete
! is_array( $this->_plugin->opt_in_moderation )
[4090] Fix | Delete
) {
[4091] Fix | Delete
return true;
[4092] Fix | Delete
}
[4093] Fix | Delete
[4094] Fix | Delete
$optin_config = $this->_plugin->opt_in_moderation;
[4095] Fix | Delete
[4096] Fix | Delete
if (
[4097] Fix | Delete
WP_FS__IS_LOCALHOST &&
[4098] Fix | Delete
( ! isset( $optin_config['localhost'] ) || false !== $optin_config['localhost'] )
[4099] Fix | Delete
) {
[4100] Fix | Delete
return true;
[4101] Fix | Delete
}
[4102] Fix | Delete
[4103] Fix | Delete
$optin_config_key = $is_update ?
[4104] Fix | Delete
'updates' :
[4105] Fix | Delete
'new';
[4106] Fix | Delete
[4107] Fix | Delete
if ( ! isset( $optin_config[ $optin_config_key ] ) ) {
[4108] Fix | Delete
return true;
[4109] Fix | Delete
}
[4110] Fix | Delete
[4111] Fix | Delete
$visibility_percentage = $optin_config[ $optin_config_key ];
[4112] Fix | Delete
[4113] Fix | Delete
if ( 0 == $visibility_percentage ) {
[4114] Fix | Delete
return false;
[4115] Fix | Delete
}
[4116] Fix | Delete
[4117] Fix | Delete
if ( ! is_numeric( $visibility_percentage ) ) {
[4118] Fix | Delete
return true;
[4119] Fix | Delete
}
[4120] Fix | Delete
[4121] Fix | Delete
$min = 1;
[4122] Fix | Delete
$max = 100;
[4123] Fix | Delete
[4124] Fix | Delete
if ( function_exists( 'random_int' ) ) {
[4125] Fix | Delete
$random = random_int( $min, $max ); // phpcs:ignore PHPCompatibility.FunctionUse.NewFunctions.random_intFound
[4126] Fix | Delete
} else {
[4127] Fix | Delete
$random = rand( $min, $max );
[4128] Fix | Delete
}
[4129] Fix | Delete
[4130] Fix | Delete
return ( $random <= $visibility_percentage );
[4131] Fix | Delete
}
[4132] Fix | Delete
[4133] Fix | Delete
/**
[4134] Fix | Delete
* Check if there's any connectivity issue to Freemius API.
[4135] Fix | Delete
*
[4136] Fix | Delete
* @author Vova Feldman (@svovaf)
[4137] Fix | Delete
* @since 1.0.9
[4138] Fix | Delete
*
[4139] Fix | Delete
* @param bool $flush_if_no_connectivity
[4140] Fix | Delete
*
[4141] Fix | Delete
* @return bool|null
[4142] Fix | Delete
*/
[4143] Fix | Delete
function has_api_connectivity( $flush_if_no_connectivity = false ) {
[4144] Fix | Delete
$this->_logger->entrance();
[4145] Fix | Delete
[4146] Fix | Delete
if ( isset( $this->_has_api_connection ) && ( $this->_has_api_connection || ! $flush_if_no_connectivity ) ) {
[4147] Fix | Delete
return $this->_has_api_connection;
[4148] Fix | Delete
}
[4149] Fix | Delete
[4150] Fix | Delete
if ( WP_FS__SIMULATE_NO_API_CONNECTIVITY &&
[4151] Fix | Delete
isset( $this->_storage->connectivity_test ) &&
[4152] Fix | Delete
true === $this->_storage->connectivity_test['is_connected']
[4153] Fix | Delete
) {
[4154] Fix | Delete
$this->clear_connectivity_info();
[4155] Fix | Delete
}
[4156] Fix | Delete
[4157] Fix | Delete
if ( ! $this->should_run_connectivity_test( $flush_if_no_connectivity ) ) {
[4158] Fix | Delete
$this->_has_api_connection = $this->_storage->connectivity_test['is_connected'];
[4159] Fix | Delete
/**
[4160] Fix | Delete
* @since 1.1.6 During dev mode, if there's connectivity - turn Freemius on regardless the configuration.
[4161] Fix | Delete
*
[4162] Fix | Delete
* @since 1.2.1.5 If the user running the premium version then ignore the 'is_active' flag and turn Freemius on to enable license key activation.
[4163] Fix | Delete
*/
[4164] Fix | Delete
$this->_is_on = $this->_storage->connectivity_test['is_active'] ||
[4165] Fix | Delete
$this->is_premium() ||
[4166] Fix | Delete
( WP_FS__DEV_MODE && $this->_has_api_connection && ! WP_FS__SIMULATE_FREEMIUS_OFF );
[4167] Fix | Delete
[4168] Fix | Delete
return $this->_has_api_connection;
[4169] Fix | Delete
}
[4170] Fix | Delete
[4171] Fix | Delete
if (
[4172] Fix | Delete
! empty( $this->_storage->connectivity_test ) &&
[4173] Fix | Delete
isset( $this->_storage->connectivity_test['is_active'] )
[4174] Fix | Delete
) {
[4175] Fix | Delete
$is_active = $this->_storage->connectivity_test['is_active'];
[4176] Fix | Delete
} else {
[4177] Fix | Delete
$is_active = $this->should_turn_fs_on( $this->apply_filters( 'is_plugin_update', $this->is_plugin_update() ) );
[4178] Fix | Delete
[4179] Fix | Delete
$this->store_connectivity_info( (object) array( 'is_active' => $is_active ), null );
[4180] Fix | Delete
}
[4181] Fix | Delete
[4182] Fix | Delete
if ( $is_active ) {
[4183] Fix | Delete
$this->_is_on = true;
[4184] Fix | Delete
}
[4185] Fix | Delete
[4186] Fix | Delete
return $this->_has_api_connection;
[4187] Fix | Delete
}
[4188] Fix | Delete
[4189] Fix | Delete
/**
[4190] Fix | Delete
* @author Leo Fajardo (@leorw)
[4191] Fix | Delete
* @since 2.5.4
[4192] Fix | Delete
*/
[4193] Fix | Delete
private function clear_connectivity_info() {
[4194] Fix | Delete
unset( $this->_storage->connectivity_test );
[4195] Fix | Delete
[4196] Fix | Delete
FS_Api::clear_force_http_flag();
[4197] Fix | Delete
}
[4198] Fix | Delete
[4199] Fix | Delete
/**
[4200] Fix | Delete
* @author Vova Feldman (@svovaf)
[4201] Fix | Delete
* @since 1.1.7.4
[4202] Fix | Delete
*
[4203] Fix | Delete
* @param object $pong
[4204] Fix | Delete
* @param bool|null $is_connected
[4205] Fix | Delete
*/
[4206] Fix | Delete
private function store_connectivity_info( $pong, $is_connected ) {
[4207] Fix | Delete
$this->_logger->entrance();
[4208] Fix | Delete
[4209] Fix | Delete
$version = $this->get_plugin_version();
[4210] Fix | Delete
[4211] Fix | Delete
if ( false === $is_connected || WP_FS__SIMULATE_FREEMIUS_OFF ) {
[4212] Fix | Delete
$is_active = false;
[4213] Fix | Delete
} else {
[4214] Fix | Delete
$is_active = ( isset( $pong->is_active ) && true == $pong->is_active );
[4215] Fix | Delete
}
[4216] Fix | Delete
[4217] Fix | Delete
$is_active = $this->apply_filters(
[4218] Fix | Delete
'is_on',
[4219] Fix | Delete
$is_active,
[4220] Fix | Delete
$this->is_plugin_update(),
[4221] Fix | Delete
$version
[4222] Fix | Delete
);
[4223] Fix | Delete
[4224] Fix | Delete
$this->_storage->connectivity_test = array(
[4225] Fix | Delete
'is_connected' => $is_connected,
[4226] Fix | Delete
'host' => $_SERVER['HTTP_HOST'],
[4227] Fix | Delete
'server_ip' => WP_FS__REMOTE_ADDR,
[4228] Fix | Delete
'is_active' => $is_active,
[4229] Fix | Delete
'timestamp' => WP_FS__SCRIPT_START_TIME,
[4230] Fix | Delete
// Last version with connectivity attempt.
[4231] Fix | Delete
'version' => $version,
[4232] Fix | Delete
);
[4233] Fix | Delete
[4234] Fix | Delete
$this->_has_api_connection = $is_connected;
[4235] Fix | Delete
$this->_is_on = $is_active || ( WP_FS__DEV_MODE && $is_connected && ! WP_FS__SIMULATE_FREEMIUS_OFF );
[4236] Fix | Delete
}
[4237] Fix | Delete
[4238] Fix | Delete
/**
[4239] Fix | Delete
* @author Leo Fajardo (@leorw)
[4240] Fix | Delete
* @since 2.5.4
[4241] Fix | Delete
*
[4242] Fix | Delete
* @param bool $is_connected
[4243] Fix | Delete
*/
[4244] Fix | Delete
private function update_connectivity_info( $is_connected ) {
[4245] Fix | Delete
$this->store_connectivity_info(
[4246] Fix | Delete
// This is true since we update the connection info only after a successful opt-in or license activation which means that Freemius has already been on even before the process.
[4247] Fix | Delete
(object) array( 'is_active' => true ),
[4248] Fix | Delete
$is_connected
[4249] Fix | Delete
);
[4250] Fix | Delete
}
[4251] Fix | Delete
[4252] Fix | Delete
/**
[4253] Fix | Delete
* Force turning Freemius on.
[4254] Fix | Delete
*
[4255] Fix | Delete
* @author Vova Feldman (@svovaf)
[4256] Fix | Delete
* @since 1.1.8.1
[4257] Fix | Delete
*
[4258] Fix | Delete
* @return bool TRUE if successfully turned on.
[4259] Fix | Delete
*/
[4260] Fix | Delete
private function turn_on() {
[4261] Fix | Delete
$this->_logger->entrance();
[4262] Fix | Delete
[4263] Fix | Delete
if ( $this->is_on() || ! isset( $this->_storage->connectivity_test['is_active'] ) ) {
[4264] Fix | Delete
return false;
[4265] Fix | Delete
}
[4266] Fix | Delete
[4267] Fix | Delete
$updated_connectivity = $this->_storage->connectivity_test;
[4268] Fix | Delete
$updated_connectivity['is_active'] = true;
[4269] Fix | Delete
$updated_connectivity['timestamp'] = WP_FS__SCRIPT_START_TIME;
[4270] Fix | Delete
$this->_storage->connectivity_test = $updated_connectivity;
[4271] Fix | Delete
[4272] Fix | Delete
$this->_is_on = true;
[4273] Fix | Delete
[4274] Fix | Delete
return true;
[4275] Fix | Delete
}
[4276] Fix | Delete
[4277] Fix | Delete
/**
[4278] Fix | Delete
* Anonymous and unique site identifier (Hash).
[4279] Fix | Delete
*
[4280] Fix | Delete
* @author Vova Feldman (@svovaf)
[4281] Fix | Delete
* @since 1.1.0
[4282] Fix | Delete
*
[4283] Fix | Delete
* @param null|int $blog_id Since 2.0.0
[4284] Fix | Delete
*
[4285] Fix | Delete
* @return string
[4286] Fix | Delete
*/
[4287] Fix | Delete
function get_anonymous_id( $blog_id = null ) {
[4288] Fix | Delete
$unique_id = self::$_accounts->get_option( 'unique_id', null, $blog_id );
[4289] Fix | Delete
[4290] Fix | Delete
if ( empty( $unique_id ) || ! is_string( $unique_id ) ) {
[4291] Fix | Delete
$key = self::get_unfiltered_site_url( $blog_id, true );
[4292] Fix | Delete
[4293] Fix | Delete
$secure_auth = defined( 'SECURE_AUTH_KEY' ) ? SECURE_AUTH_KEY : '';
[4294] Fix | Delete
if ( empty( $secure_auth ) ||
[4295] Fix | Delete
false !== strpos( $secure_auth, ' ' ) ||
[4296] Fix | Delete
'put your unique phrase here' === $secure_auth
[4297] Fix | Delete
) {
[4298] Fix | Delete
// Protect against default auth key.
[4299] Fix | Delete
$secure_auth = md5( microtime() );
[4300] Fix | Delete
}
[4301] Fix | Delete
[4302] Fix | Delete
/**
[4303] Fix | Delete
* Base the unique identifier on the WP secure authentication key. Which
[4304] Fix | Delete
* turns the key into a secret anonymous identifier. This will help us
[4305] Fix | Delete
* to avoid duplicate installs generation on the backend upon opt-in.
[4306] Fix | Delete
*
[4307] Fix | Delete
* @author Vova Feldman (@svovaf)
[4308] Fix | Delete
* @since 1.2.3
[4309] Fix | Delete
*/
[4310] Fix | Delete
$unique_id = md5( $key . $secure_auth );
[4311] Fix | Delete
[4312] Fix | Delete
self::$_accounts->set_option( 'unique_id', $unique_id, true, $blog_id );
[4313] Fix | Delete
}
[4314] Fix | Delete
[4315] Fix | Delete
$this->_logger->departure( $unique_id );
[4316] Fix | Delete
[4317] Fix | Delete
return $unique_id;
[4318] Fix | Delete
}
[4319] Fix | Delete
[4320] Fix | Delete
/**
[4321] Fix | Delete
* Returns anonymous network ID.
[4322] Fix | Delete
*
[4323] Fix | Delete
* @since 2.4.3
[4324] Fix | Delete
*
[4325] Fix | Delete
* @return string
[4326] Fix | Delete
*/
[4327] Fix | Delete
function get_anonymous_network_id() {
[4328] Fix | Delete
return $this->get_anonymous_id( get_network()->site_id );
[4329] Fix | Delete
}
[4330] Fix | Delete
[4331] Fix | Delete
/**
[4332] Fix | Delete
* @author Vova Feldman (@svovaf)
[4333] Fix | Delete
* @since 1.1.7.4
[4334] Fix | Delete
*
[4335] Fix | Delete
* @return \WP_User
[4336] Fix | Delete
*/
[4337] Fix | Delete
static function _get_current_wp_user() {
[4338] Fix | Delete
self::require_pluggable_essentials();
[4339] Fix | Delete
self::wp_cookie_constants();
[4340] Fix | Delete
[4341] Fix | Delete
return wp_get_current_user();
[4342] Fix | Delete
}
[4343] Fix | Delete
[4344] Fix | Delete
/**
[4345] Fix | Delete
* Define cookie constants which are required by Freemius::_get_current_wp_user() since
[4346] Fix | Delete
* it uses wp_get_current_user() which needs the cookie constants set. When a plugin
[4347] Fix | Delete
* is network activated the cookie constants are only configured after the network
[4348] Fix | Delete
* plugins activation, therefore, if we don't define those constants WP will throw
[4349] Fix | Delete
* PHP warnings/notices.
[4350] Fix | Delete
*
[4351] Fix | Delete
* @author Vova Feldman (@svovaf)
[4352] Fix | Delete
* @since 2.1.1
[4353] Fix | Delete
*/
[4354] Fix | Delete
private static function wp_cookie_constants() {
[4355] Fix | Delete
if ( defined( 'LOGGED_IN_COOKIE' ) &&
[4356] Fix | Delete
( defined( 'AUTH_COOKIE' ) || defined( 'SECURE_AUTH_COOKIE' ) )
[4357] Fix | Delete
) {
[4358] Fix | Delete
return;
[4359] Fix | Delete
}
[4360] Fix | Delete
[4361] Fix | Delete
/**
[4362] Fix | Delete
* Used to guarantee unique hash cookies
[4363] Fix | Delete
*
[4364] Fix | Delete
* @since 1.5.0
[4365] Fix | Delete
*/
[4366] Fix | Delete
if ( ! defined( 'COOKIEHASH' ) ) {
[4367] Fix | Delete
$siteurl = get_site_option( 'siteurl' );
[4368] Fix | Delete
if ( $siteurl ) {
[4369] Fix | Delete
define( 'COOKIEHASH', md5( $siteurl ) );
[4370] Fix | Delete
} else {
[4371] Fix | Delete
define( 'COOKIEHASH', '' );
[4372] Fix | Delete
}
[4373] Fix | Delete
}
[4374] Fix | Delete
[4375] Fix | Delete
if ( ! defined( 'LOGGED_IN_COOKIE' ) ) {
[4376] Fix | Delete
define( 'LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH );
[4377] Fix | Delete
}
[4378] Fix | Delete
[4379] Fix | Delete
/**
[4380] Fix | Delete
* @since 2.5.0
[4381] Fix | Delete
*/
[4382] Fix | Delete
if ( ! defined( 'AUTH_COOKIE' ) ) {
[4383] Fix | Delete
define( 'AUTH_COOKIE', 'wordpress_' . COOKIEHASH );
[4384] Fix | Delete
}
[4385] Fix | Delete
[4386] Fix | Delete
/**
[4387] Fix | Delete
* @since 2.6.0
[4388] Fix | Delete
*/
[4389] Fix | Delete
if ( ! defined( 'SECURE_AUTH_COOKIE' ) ) {
[4390] Fix | Delete
define( 'SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH );
[4391] Fix | Delete
}
[4392] Fix | Delete
}
[4393] Fix | Delete
[4394] Fix | Delete
/**
[4395] Fix | Delete
* @author Vova Feldman (@svovaf)
[4396] Fix | Delete
* @since 2.1.0
[4397] Fix | Delete
*
[4398] Fix | Delete
* @return int
[4399] Fix | Delete
*/
[4400] Fix | Delete
static function get_current_wp_user_id() {
[4401] Fix | Delete
$wp_user = self::_get_current_wp_user();
[4402] Fix | Delete
[4403] Fix | Delete
return $wp_user->ID;
[4404] Fix | Delete
}
[4405] Fix | Delete
[4406] Fix | Delete
/**
[4407] Fix | Delete
* @author Vova Feldman (@svovaf)
[4408] Fix | Delete
* @since 1.2.1.7
[4409] Fix | Delete
*
[4410] Fix | Delete
* @param string $email
[4411] Fix | Delete
*
[4412] Fix | Delete
* @return bool
[4413] Fix | Delete
*/
[4414] Fix | Delete
static function is_valid_email( $email ) {
[4415] Fix | Delete
if ( false === filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
[4416] Fix | Delete
return false;
[4417] Fix | Delete
}
[4418] Fix | Delete
[4419] Fix | Delete
$parts = explode( '@', $email );
[4420] Fix | Delete
[4421] Fix | Delete
if ( 2 !== count( $parts ) || empty( $parts[1] ) ) {
[4422] Fix | Delete
return false;
[4423] Fix | Delete
}
[4424] Fix | Delete
[4425] Fix | Delete
$blacklist = array(
[4426] Fix | Delete
'admin.',
[4427] Fix | Delete
'webmaster.',
[4428] Fix | Delete
'localhost.',
[4429] Fix | Delete
'dev.',
[4430] Fix | Delete
'development.',
[4431] Fix | Delete
'test.',
[4432] Fix | Delete
'stage.',
[4433] Fix | Delete
'staging.',
[4434] Fix | Delete
);
[4435] Fix | Delete
[4436] Fix | Delete
// Make sure domain is not one of the blacklisted.
[4437] Fix | Delete
foreach ( $blacklist as $invalid ) {
[4438] Fix | Delete
if ( 0 === strpos( $parts[1], $invalid ) ) {
[4439] Fix | Delete
return false;
[4440] Fix | Delete
}
[4441] Fix | Delete
}
[4442] Fix | Delete
[4443] Fix | Delete
// Get the UTF encoded domain name.
[4444] Fix | Delete
/**
[4445] Fix | Delete
* @note - The check of `defined('...')` is there to account for PHP servers compiled with some older version of ICU where the constants are not defined.
[4446] Fix | Delete
* @author - @swashata
[4447] Fix | Delete
*/
[4448] Fix | Delete
$is_new_idn_available = (
[4449] Fix | Delete
version_compare( PHP_VERSION, '5.6.40') > 0 &&
[4450] Fix | Delete
defined( 'IDNA_DEFAULT' ) &&
[4451] Fix | Delete
defined( 'INTL_IDNA_VARIANT_UTS46' )
[4452] Fix | Delete
);
[4453] Fix | Delete
if ( $is_new_idn_available ) {
[4454] Fix | Delete
$domain = idn_to_ascii( $parts[1], IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46 );
[4455] Fix | Delete
} else {
[4456] Fix | Delete
$domain = idn_to_ascii( $parts[1] ); // phpcs:ignore PHPCompatibility.ParameterValues.NewIDNVariantDefault.NotSet
[4457] Fix | Delete
}
[4458] Fix | Delete
[4459] Fix | Delete
$domain = $domain . '.';
[4460] Fix | Delete
[4461] Fix | Delete
return ( checkdnsrr( $domain, 'MX' ) || checkdnsrr( $domain, 'A' ) );
[4462] Fix | Delete
}
[4463] Fix | Delete
[4464] Fix | Delete
#endregion
[4465] Fix | Delete
[4466] Fix | Delete
#----------------------------------------------------------------------------------
[4467] Fix | Delete
#region Email
[4468] Fix | Delete
#----------------------------------------------------------------------------------
[4469] Fix | Delete
[4470] Fix | Delete
/**
[4471] Fix | Delete
* Generates and sends an HTML email with customizable sections.
[4472] Fix | Delete
*
[4473] Fix | Delete
* @author Leo Fajardo (@leorw)
[4474] Fix | Delete
* @since 1.1.2
[4475] Fix | Delete
*
[4476] Fix | Delete
* @param string $to_address
[4477] Fix | Delete
* @param string $subject
[4478] Fix | Delete
* @param array $sections
[4479] Fix | Delete
* @param array $headers
[4480] Fix | Delete
*
[4481] Fix | Delete
* @return bool Whether the email contents were sent successfully.
[4482] Fix | Delete
*/
[4483] Fix | Delete
private function send_email(
[4484] Fix | Delete
$to_address,
[4485] Fix | Delete
$subject,
[4486] Fix | Delete
$sections = array(),
[4487] Fix | Delete
$headers = array()
[4488] Fix | Delete
) {
[4489] Fix | Delete
$default_sections = $this->get_email_sections();
[4490] Fix | Delete
[4491] Fix | Delete
// Insert new sections or replace the default email sections.
[4492] Fix | Delete
if ( is_array( $sections ) && ! empty( $sections ) ) {
[4493] Fix | Delete
foreach ( $sections as $section_id => $custom_section ) {
[4494] Fix | Delete
if ( ! isset( $default_sections[ $section_id ] ) ) {
[4495] Fix | Delete
// If the section does not exist, add it.
[4496] Fix | Delete
$default_sections[ $section_id ] = $custom_section;
[4497] Fix | Delete
} else {
[4498] Fix | Delete
// If the section already exists, override it.
[4499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function