Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/elemento.../core/admin
File: admin-notices.php
<?php
[0] Fix | Delete
namespace Elementor\Core\Admin;
[1] Fix | Delete
[2] Fix | Delete
use Elementor\Api;
[3] Fix | Delete
use Elementor\Core\Admin\UI\Components\Button;
[4] Fix | Delete
use Elementor\Core\Base\Module;
[5] Fix | Delete
use Elementor\Core\Upgrade\Manager;
[6] Fix | Delete
use Elementor\Core\Utils\Hints;
[7] Fix | Delete
use Elementor\Core\Utils\Promotions\Filtered_Promotions_Manager;
[8] Fix | Delete
use Elementor\Plugin;
[9] Fix | Delete
use Elementor\Settings;
[10] Fix | Delete
use Elementor\Tracker;
[11] Fix | Delete
use Elementor\User;
[12] Fix | Delete
use Elementor\Utils;
[13] Fix | Delete
use Elementor\Core\Admin\Notices\Base_Notice;
[14] Fix | Delete
[15] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[16] Fix | Delete
exit; // Exit if accessed directly.
[17] Fix | Delete
}
[18] Fix | Delete
[19] Fix | Delete
class Admin_Notices extends Module {
[20] Fix | Delete
[21] Fix | Delete
const DEFAULT_EXCLUDED_PAGES = [ 'plugins.php', 'plugin-install.php', 'plugin-editor.php' ];
[22] Fix | Delete
const LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID = 'local_google_fonts_disabled';
[23] Fix | Delete
const LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION = '3.33.3';
[24] Fix | Delete
[25] Fix | Delete
const EXIT_EARLY_FOR_BACKWARD_COMPATIBILITY = false;
[26] Fix | Delete
[27] Fix | Delete
private $plain_notices = [
[28] Fix | Delete
'api_notice',
[29] Fix | Delete
'api_upgrade_plugin',
[30] Fix | Delete
'tracker',
[31] Fix | Delete
'tracker_last_update',
[32] Fix | Delete
'rate_us_feedback',
[33] Fix | Delete
'role_manager_promote',
[34] Fix | Delete
'experiment_promotion',
[35] Fix | Delete
'site_mailer_promotion',
[36] Fix | Delete
'plugin_image_optimization',
[37] Fix | Delete
'ally_pages_promotion',
[38] Fix | Delete
self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID,
[39] Fix | Delete
];
[40] Fix | Delete
[41] Fix | Delete
private $elementor_pages_count = null;
[42] Fix | Delete
[43] Fix | Delete
private $install_time = null;
[44] Fix | Delete
[45] Fix | Delete
private $current_screen_id = null;
[46] Fix | Delete
[47] Fix | Delete
private function get_notices() {
[48] Fix | Delete
/**
[49] Fix | Delete
* Admin notices.
[50] Fix | Delete
*
[51] Fix | Delete
* Filters Elementor admin notices.
[52] Fix | Delete
*
[53] Fix | Delete
* This hook can be used by external developers to manage existing
[54] Fix | Delete
* admin notice or to add new notices for Elementor add-ons.
[55] Fix | Delete
*
[56] Fix | Delete
* @param array $notices A list of notice classes.
[57] Fix | Delete
*/
[58] Fix | Delete
$notices = apply_filters( 'elementor/core/admin/notices', [] );
[59] Fix | Delete
[60] Fix | Delete
return $notices;
[61] Fix | Delete
}
[62] Fix | Delete
[63] Fix | Delete
private function get_install_time() {
[64] Fix | Delete
if ( null === $this->install_time ) {
[65] Fix | Delete
$this->install_time = Plugin::$instance->get_install_time();
[66] Fix | Delete
}
[67] Fix | Delete
[68] Fix | Delete
return $this->install_time;
[69] Fix | Delete
}
[70] Fix | Delete
[71] Fix | Delete
private function get_elementor_pages_count() {
[72] Fix | Delete
if ( null === $this->elementor_pages_count ) {
[73] Fix | Delete
$elementor_pages = new \WP_Query( [
[74] Fix | Delete
'no_found_rows' => true,
[75] Fix | Delete
'post_type' => 'any',
[76] Fix | Delete
'post_status' => 'publish',
[77] Fix | Delete
'fields' => 'ids',
[78] Fix | Delete
'update_post_meta_cache' => false,
[79] Fix | Delete
'update_post_term_cache' => false,
[80] Fix | Delete
'meta_key' => '_elementor_edit_mode',
[81] Fix | Delete
'meta_value' => 'builder',
[82] Fix | Delete
] );
[83] Fix | Delete
[84] Fix | Delete
$this->elementor_pages_count = $elementor_pages->post_count;
[85] Fix | Delete
}
[86] Fix | Delete
[87] Fix | Delete
return $this->elementor_pages_count;
[88] Fix | Delete
}
[89] Fix | Delete
[90] Fix | Delete
private function notice_api_upgrade_plugin() {
[91] Fix | Delete
$upgrade_notice = Api::get_upgrade_notice();
[92] Fix | Delete
if ( empty( $upgrade_notice ) ) {
[93] Fix | Delete
return false;
[94] Fix | Delete
}
[95] Fix | Delete
[96] Fix | Delete
if ( ! current_user_can( 'update_plugins' ) ) {
[97] Fix | Delete
return false;
[98] Fix | Delete
}
[99] Fix | Delete
[100] Fix | Delete
if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
[101] Fix | Delete
return false;
[102] Fix | Delete
}
[103] Fix | Delete
[104] Fix | Delete
// Check for upgrades.
[105] Fix | Delete
$update_plugins = get_site_transient( 'update_plugins' );
[106] Fix | Delete
[107] Fix | Delete
$has_remote_update_package = ! ( empty( $update_plugins ) || empty( $update_plugins->response[ ELEMENTOR_PLUGIN_BASE ] ) || empty( $update_plugins->response[ ELEMENTOR_PLUGIN_BASE ]->package ) );
[108] Fix | Delete
[109] Fix | Delete
if ( ! $has_remote_update_package && empty( $upgrade_notice['update_link'] ) ) {
[110] Fix | Delete
return false;
[111] Fix | Delete
}
[112] Fix | Delete
[113] Fix | Delete
if ( $has_remote_update_package ) {
[114] Fix | Delete
$product = $update_plugins->response[ ELEMENTOR_PLUGIN_BASE ];
[115] Fix | Delete
[116] Fix | Delete
$details_url = self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $product->slug . '&section=changelog&TB_iframe=true&width=600&height=800' );
[117] Fix | Delete
$upgrade_url = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . ELEMENTOR_PLUGIN_BASE ), 'upgrade-plugin_' . ELEMENTOR_PLUGIN_BASE );
[118] Fix | Delete
$new_version = $product->new_version;
[119] Fix | Delete
} else {
[120] Fix | Delete
$upgrade_url = $upgrade_notice['update_link'];
[121] Fix | Delete
$details_url = $upgrade_url;
[122] Fix | Delete
[123] Fix | Delete
$new_version = $upgrade_notice['version'];
[124] Fix | Delete
}
[125] Fix | Delete
[126] Fix | Delete
// Check if upgrade messages should be shown.
[127] Fix | Delete
if ( version_compare( ELEMENTOR_VERSION, $upgrade_notice['version'], '>=' ) ) {
[128] Fix | Delete
return false;
[129] Fix | Delete
}
[130] Fix | Delete
[131] Fix | Delete
$notice_id = 'upgrade_notice_' . $upgrade_notice['version'];
[132] Fix | Delete
if ( User::is_user_notice_viewed( $notice_id ) ) {
[133] Fix | Delete
return false;
[134] Fix | Delete
}
[135] Fix | Delete
[136] Fix | Delete
$message = sprintf(
[137] Fix | Delete
/* translators: 1: Details URL, 2: Accessibility text, 3: Version number, 4: Update URL, 5: Accessibility text. */
[138] Fix | Delete
__( 'There is a new version of Elementor Page Builder available. <a href="%1$s" class="thickbox open-plugin-details-modal" aria-label="%2$s">View version %3$s details</a> or <a href="%4$s" class="update-link" aria-label="%5$s">update now</a>.', 'elementor' ),
[139] Fix | Delete
esc_url( $details_url ),
[140] Fix | Delete
sprintf(
[141] Fix | Delete
/* translators: %s: Elementor version. */
[142] Fix | Delete
esc_attr__( 'View Elementor version %s details', 'elementor' ),
[143] Fix | Delete
$new_version
[144] Fix | Delete
),
[145] Fix | Delete
$new_version,
[146] Fix | Delete
esc_url( $upgrade_url ),
[147] Fix | Delete
esc_attr__( 'Update Now', 'elementor' )
[148] Fix | Delete
);
[149] Fix | Delete
[150] Fix | Delete
$options = [
[151] Fix | Delete
'title' => esc_html__( 'Update Notification', 'elementor' ),
[152] Fix | Delete
'description' => $message,
[153] Fix | Delete
'button' => [
[154] Fix | Delete
'icon_classes' => 'dashicons dashicons-update',
[155] Fix | Delete
'text' => esc_html__( 'Update Now', 'elementor' ),
[156] Fix | Delete
'url' => $upgrade_url,
[157] Fix | Delete
],
[158] Fix | Delete
'id' => $notice_id,
[159] Fix | Delete
];
[160] Fix | Delete
[161] Fix | Delete
$this->print_admin_notice( $options );
[162] Fix | Delete
[163] Fix | Delete
return true;
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
private function notice_api_notice() {
[167] Fix | Delete
$admin_notice = Api::get_admin_notice();
[168] Fix | Delete
if ( empty( $admin_notice ) ) {
[169] Fix | Delete
return false;
[170] Fix | Delete
}
[171] Fix | Delete
[172] Fix | Delete
if ( ! current_user_can( 'manage_options' ) ) {
[173] Fix | Delete
return false;
[174] Fix | Delete
}
[175] Fix | Delete
[176] Fix | Delete
if ( ! $this->is_elementor_admin_screen_with_system_info() ) {
[177] Fix | Delete
return false;
[178] Fix | Delete
}
[179] Fix | Delete
[180] Fix | Delete
$notice_id = 'admin_notice_api_' . $admin_notice['notice_id'];
[181] Fix | Delete
if ( User::is_user_notice_viewed( $notice_id ) ) {
[182] Fix | Delete
return false;
[183] Fix | Delete
}
[184] Fix | Delete
[185] Fix | Delete
$options = [
[186] Fix | Delete
'title' => esc_html__( 'Update Notification', 'elementor' ),
[187] Fix | Delete
'description' => $admin_notice['notice_text'],
[188] Fix | Delete
'id' => $notice_id,
[189] Fix | Delete
];
[190] Fix | Delete
[191] Fix | Delete
$this->print_admin_notice( $options );
[192] Fix | Delete
[193] Fix | Delete
return true;
[194] Fix | Delete
}
[195] Fix | Delete
[196] Fix | Delete
private function notice_tracker() {
[197] Fix | Delete
if ( ! current_user_can( 'manage_options' ) ) {
[198] Fix | Delete
return false;
[199] Fix | Delete
}
[200] Fix | Delete
[201] Fix | Delete
// Show tracker notice after 24 hours from installed time.
[202] Fix | Delete
if ( strtotime( '+24 hours', $this->get_install_time() ) > time() ) {
[203] Fix | Delete
return false;
[204] Fix | Delete
}
[205] Fix | Delete
[206] Fix | Delete
if ( '1' === get_option( 'elementor_tracker_notice' ) ) {
[207] Fix | Delete
return false;
[208] Fix | Delete
}
[209] Fix | Delete
[210] Fix | Delete
if ( Tracker::is_allow_track() ) {
[211] Fix | Delete
return false;
[212] Fix | Delete
}
[213] Fix | Delete
[214] Fix | Delete
if ( 2 > $this->get_elementor_pages_count() ) {
[215] Fix | Delete
return false;
[216] Fix | Delete
}
[217] Fix | Delete
[218] Fix | Delete
// TODO: Skip for development env.
[219] Fix | Delete
$optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' );
[220] Fix | Delete
$optout_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_out' ), 'opt_out' );
[221] Fix | Delete
[222] Fix | Delete
$tracker_description_text = esc_html__( 'Become a super contributor by helping us understand how you use our service to enhance your experience and improve our product.', 'elementor' );
[223] Fix | Delete
[224] Fix | Delete
/**
[225] Fix | Delete
* Tracker admin description text.
[226] Fix | Delete
*
[227] Fix | Delete
* Filters the admin notice text for non-sensitive data collection.
[228] Fix | Delete
*
[229] Fix | Delete
* @since 1.0.0
[230] Fix | Delete
*
[231] Fix | Delete
* @param string $tracker_description_text Description text displayed in admin notice.
[232] Fix | Delete
*/
[233] Fix | Delete
$tracker_description_text = apply_filters( 'elementor/tracker/admin_description_text', $tracker_description_text );
[234] Fix | Delete
[235] Fix | Delete
$message = esc_html( $tracker_description_text ) . ' <a href="https://go.elementor.com/usage-data-tracking/" target="_blank">' . esc_html__( 'Learn more.', 'elementor' ) . '</a>';
[236] Fix | Delete
[237] Fix | Delete
$options = [
[238] Fix | Delete
'title' => esc_html__( 'Want to shape the future of web creation?', 'elementor' ),
[239] Fix | Delete
'description' => $message,
[240] Fix | Delete
'dismissible' => false,
[241] Fix | Delete
'button' => [
[242] Fix | Delete
'text' => esc_html__( 'Sure! I\'d love to help', 'elementor' ),
[243] Fix | Delete
'url' => $optin_url,
[244] Fix | Delete
'type' => 'cta',
[245] Fix | Delete
],
[246] Fix | Delete
'button_secondary' => [
[247] Fix | Delete
'text' => esc_html__( 'No thanks', 'elementor' ),
[248] Fix | Delete
'url' => $optout_url,
[249] Fix | Delete
'variant' => 'outline',
[250] Fix | Delete
'type' => 'cta',
[251] Fix | Delete
],
[252] Fix | Delete
];
[253] Fix | Delete
[254] Fix | Delete
$this->print_admin_notice( $options );
[255] Fix | Delete
[256] Fix | Delete
return true;
[257] Fix | Delete
}
[258] Fix | Delete
[259] Fix | Delete
private function notice_tracker_last_update() {
[260] Fix | Delete
if ( ! current_user_can( 'manage_options' ) ) {
[261] Fix | Delete
return false;
[262] Fix | Delete
}
[263] Fix | Delete
[264] Fix | Delete
if ( ! Tracker::has_terms_changed() ) {
[265] Fix | Delete
return false;
[266] Fix | Delete
}
[267] Fix | Delete
[268] Fix | Delete
$notice_id = 'tracker_last_update_' . Tracker::LAST_TERMS_UPDATED;
[269] Fix | Delete
[270] Fix | Delete
if ( User::is_user_notice_viewed( $notice_id ) ) {
[271] Fix | Delete
return false;
[272] Fix | Delete
}
[273] Fix | Delete
[274] Fix | Delete
$optin_url = wp_nonce_url( add_query_arg( 'elementor_tracker', 'opt_into' ), 'opt_into' );
[275] Fix | Delete
[276] Fix | Delete
$message = esc_html__( 'We\'re updating our Terms and Conditions to include the collection of usage and behavioral data. This information helps us understand how you use Elementor so we can make informed improvements to the product.', 'elementor' );
[277] Fix | Delete
[278] Fix | Delete
$options = [
[279] Fix | Delete
'id' => $notice_id,
[280] Fix | Delete
'title' => esc_html__( 'Update regarding usage data collection', 'elementor' ),
[281] Fix | Delete
'description' => $message,
[282] Fix | Delete
'button' => [
[283] Fix | Delete
'text' => esc_html__( 'Opt in', 'elementor' ),
[284] Fix | Delete
'url' => $optin_url,
[285] Fix | Delete
'type' => 'cta',
[286] Fix | Delete
],
[287] Fix | Delete
'button_secondary' => [
[288] Fix | Delete
'text' => esc_html__( 'Learn more', 'elementor' ),
[289] Fix | Delete
'url' => 'https://go.elementor.com/wp-dash-update-usage-notice/',
[290] Fix | Delete
'new_tab' => true,
[291] Fix | Delete
'type' => 'cta',
[292] Fix | Delete
],
[293] Fix | Delete
];
[294] Fix | Delete
[295] Fix | Delete
$this->print_admin_notice( $options );
[296] Fix | Delete
[297] Fix | Delete
return true;
[298] Fix | Delete
}
[299] Fix | Delete
[300] Fix | Delete
private function notice_rate_us_feedback() {
[301] Fix | Delete
$notice_id = 'rate_us_feedback';
[302] Fix | Delete
[303] Fix | Delete
if ( ! current_user_can( 'manage_options' ) ) {
[304] Fix | Delete
return false;
[305] Fix | Delete
}
[306] Fix | Delete
[307] Fix | Delete
if ( 'dashboard' !== $this->current_screen_id || User::is_user_notice_viewed( $notice_id ) ) {
[308] Fix | Delete
return false;
[309] Fix | Delete
}
[310] Fix | Delete
[311] Fix | Delete
if ( 10 >= $this->get_elementor_pages_count() ) {
[312] Fix | Delete
return false;
[313] Fix | Delete
}
[314] Fix | Delete
[315] Fix | Delete
$dismiss_url = add_query_arg( [
[316] Fix | Delete
'action' => 'elementor_set_admin_notice_viewed',
[317] Fix | Delete
'notice_id' => esc_attr( $notice_id ),
[318] Fix | Delete
'_wpnonce' => wp_create_nonce( 'elementor_set_admin_notice_viewed' ),
[319] Fix | Delete
], admin_url( 'admin-post.php' ) );
[320] Fix | Delete
[321] Fix | Delete
$options = [
[322] Fix | Delete
'title' => esc_html__( 'Congrats!', 'elementor' ),
[323] Fix | Delete
'description' => esc_html__( 'You created over 10 pages with Elementor. Great job! If you can spare a minute, please help us by leaving a five star review on WordPress.org.', 'elementor' ),
[324] Fix | Delete
'id' => $notice_id,
[325] Fix | Delete
'button' => [
[326] Fix | Delete
'text' => esc_html__( 'Happy To Help', 'elementor' ),
[327] Fix | Delete
'url' => 'https://go.elementor.com/admin-review/',
[328] Fix | Delete
'new_tab' => true,
[329] Fix | Delete
'type' => 'cta',
[330] Fix | Delete
],
[331] Fix | Delete
'button_secondary' => [
[332] Fix | Delete
'text' => esc_html__( 'Hide Notification', 'elementor' ),
[333] Fix | Delete
'classes' => [ 'e-notice-dismiss' ],
[334] Fix | Delete
'url' => esc_url_raw( $dismiss_url ),
[335] Fix | Delete
'new_tab' => true,
[336] Fix | Delete
'type' => 'cta',
[337] Fix | Delete
],
[338] Fix | Delete
];
[339] Fix | Delete
[340] Fix | Delete
$this->print_admin_notice( $options );
[341] Fix | Delete
[342] Fix | Delete
return true;
[343] Fix | Delete
}
[344] Fix | Delete
[345] Fix | Delete
private function notice_role_manager_promote() {
[346] Fix | Delete
$notice_id = 'role_manager_promote';
[347] Fix | Delete
[348] Fix | Delete
if ( Utils::has_pro() ) {
[349] Fix | Delete
return false;
[350] Fix | Delete
}
[351] Fix | Delete
[352] Fix | Delete
if ( ! current_user_can( 'manage_options' ) ) {
[353] Fix | Delete
return false;
[354] Fix | Delete
}
[355] Fix | Delete
[356] Fix | Delete
if ( 'elementor_page_elementor-role-manager' !== $this->current_screen_id || User::is_user_notice_viewed( $notice_id ) ) {
[357] Fix | Delete
return false;
[358] Fix | Delete
}
[359] Fix | Delete
[360] Fix | Delete
$users = new \WP_User_Query( [
[361] Fix | Delete
'fields' => 'ID',
[362] Fix | Delete
'number' => 10,
[363] Fix | Delete
] );
[364] Fix | Delete
[365] Fix | Delete
if ( 5 > $users->get_total() ) {
[366] Fix | Delete
return false;
[367] Fix | Delete
}
[368] Fix | Delete
[369] Fix | Delete
$options = [
[370] Fix | Delete
'title' => esc_html__( 'Managing a multi-user site?', 'elementor' ),
[371] Fix | Delete
'description' => esc_html__( 'With Elementor Pro, you can control user access and make sure no one messes up your design.', 'elementor' ),
[372] Fix | Delete
'id' => $notice_id,
[373] Fix | Delete
[374] Fix | Delete
'button' => [
[375] Fix | Delete
'text' => esc_html__( 'Learn More', 'elementor' ),
[376] Fix | Delete
'url' => 'https://go.elementor.com/plugin-promotion-role-manager/',
[377] Fix | Delete
'new_tab' => true,
[378] Fix | Delete
'type' => 'cta',
[379] Fix | Delete
],
[380] Fix | Delete
];
[381] Fix | Delete
[382] Fix | Delete
$options = Filtered_Promotions_Manager::get_filtered_promotion_data( $options, 'core/admin/notice_role_manager_promote', 'button', 'url' );
[383] Fix | Delete
[384] Fix | Delete
$this->print_admin_notice( $options );
[385] Fix | Delete
[386] Fix | Delete
return true;
[387] Fix | Delete
}
[388] Fix | Delete
[389] Fix | Delete
private function notice_experiment_promotion() {
[390] Fix | Delete
$notice_id = 'experiment_promotion';
[391] Fix | Delete
[392] Fix | Delete
if ( ! current_user_can( 'manage_options' ) || User::is_user_notice_viewed( $notice_id ) ) {
[393] Fix | Delete
return false;
[394] Fix | Delete
}
[395] Fix | Delete
[396] Fix | Delete
$experiments = Plugin::$instance->experiments;
[397] Fix | Delete
$is_all_performance_features_active = (
[398] Fix | Delete
$experiments->is_feature_active( 'e_font_icon_svg' ) &&
[399] Fix | Delete
$experiments->is_feature_active( 'e_optimized_markup' )
[400] Fix | Delete
);
[401] Fix | Delete
[402] Fix | Delete
if ( $is_all_performance_features_active ) {
[403] Fix | Delete
return false;
[404] Fix | Delete
}
[405] Fix | Delete
[406] Fix | Delete
$options = [
[407] Fix | Delete
'title' => esc_html__( 'Improve your site’s performance score.', 'elementor' ),
[408] Fix | Delete
'description' => esc_html__( 'With our experimental speed boosting features you can go faster than ever before. Look for the Performance label on our Experiments page and activate those experiments to improve your site loading speed.', 'elementor' ),
[409] Fix | Delete
'id' => $notice_id,
[410] Fix | Delete
'button' => [
[411] Fix | Delete
'text' => esc_html__( 'Try it out', 'elementor' ),
[412] Fix | Delete
'url' => Settings::get_settings_tab_url( 'experiments' ),
[413] Fix | Delete
'type' => 'cta',
[414] Fix | Delete
],
[415] Fix | Delete
'button_secondary' => [
[416] Fix | Delete
'text' => esc_html__( 'Learn more', 'elementor' ),
[417] Fix | Delete
'url' => 'https://go.elementor.com/wp-dash-experiment-promotion/',
[418] Fix | Delete
'new_tab' => true,
[419] Fix | Delete
'type' => 'cta',
[420] Fix | Delete
],
[421] Fix | Delete
];
[422] Fix | Delete
[423] Fix | Delete
$this->print_admin_notice( $options );
[424] Fix | Delete
[425] Fix | Delete
return true;
[426] Fix | Delete
}
[427] Fix | Delete
[428] Fix | Delete
private function site_has_forms_plugins() {
[429] Fix | Delete
return defined( 'WPFORMS_VERSION' ) || defined( 'WPCF7_VERSION' ) || defined( 'FLUENTFORM_VERSION' ) || class_exists( '\GFCommon' ) || class_exists( '\Ninja_Forms' ) || function_exists( 'load_formidable_forms' ) || did_action( 'metform/after_load' ) || defined( 'FORMINATOR_PLUGIN_BASENAME' );
[430] Fix | Delete
}
[431] Fix | Delete
[432] Fix | Delete
private function site_has_woocommerce() {
[433] Fix | Delete
return class_exists( 'WooCommerce' );
[434] Fix | Delete
}
[435] Fix | Delete
[436] Fix | Delete
private function get_installed_form_plugin_name() {
[437] Fix | Delete
static $detected_form_plugin = null;
[438] Fix | Delete
[439] Fix | Delete
if ( null !== $detected_form_plugin ) {
[440] Fix | Delete
return $detected_form_plugin;
[441] Fix | Delete
}
[442] Fix | Delete
[443] Fix | Delete
$form_plugins_constants_to_name_mapper = [
[444] Fix | Delete
'WPFORMS_VERSION' => 'WPForms',
[445] Fix | Delete
'WPCF7_VERSION' => 'Contact Form 7',
[446] Fix | Delete
];
[447] Fix | Delete
[448] Fix | Delete
foreach ( $form_plugins_constants_to_name_mapper as $constant => $name ) {
[449] Fix | Delete
if ( defined( $constant ) ) {
[450] Fix | Delete
$detected_form_plugin = $name;
[451] Fix | Delete
return $detected_form_plugin;
[452] Fix | Delete
}
[453] Fix | Delete
}
[454] Fix | Delete
[455] Fix | Delete
$form_plugins_classes_to_name_mapper = [
[456] Fix | Delete
'\GFCommon' => 'Gravity Forms',
[457] Fix | Delete
'\Ninja_Forms' => 'Ninja Forms',
[458] Fix | Delete
];
[459] Fix | Delete
[460] Fix | Delete
foreach ( $form_plugins_classes_to_name_mapper as $class => $name ) {
[461] Fix | Delete
if ( class_exists( $class ) ) {
[462] Fix | Delete
$detected_form_plugin = $name;
[463] Fix | Delete
return $detected_form_plugin;
[464] Fix | Delete
}
[465] Fix | Delete
}
[466] Fix | Delete
[467] Fix | Delete
$detected_form_plugin = false;
[468] Fix | Delete
return $detected_form_plugin;
[469] Fix | Delete
}
[470] Fix | Delete
[471] Fix | Delete
private function notice_local_google_fonts_disabled() {
[472] Fix | Delete
[473] Fix | Delete
if ( ! $this->is_elementor_page() && ! $this->is_elementor_admin_screen() ) {
[474] Fix | Delete
return false;
[475] Fix | Delete
}
[476] Fix | Delete
[477] Fix | Delete
if ( ! Manager::had_install_prior_to( self::LOCAL_GOOGLE_FONTS_NOTICE_MIN_VERSION ) ) {
[478] Fix | Delete
return false;
[479] Fix | Delete
}
[480] Fix | Delete
[481] Fix | Delete
if ( User::is_user_notice_viewed( self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID ) ) {
[482] Fix | Delete
return false;
[483] Fix | Delete
}
[484] Fix | Delete
[485] Fix | Delete
$is_local_gf_enabled = (bool) get_option( 'elementor_local_google_fonts', '0' );
[486] Fix | Delete
[487] Fix | Delete
if ( $is_local_gf_enabled ) {
[488] Fix | Delete
return false;
[489] Fix | Delete
}
[490] Fix | Delete
[491] Fix | Delete
$options = [
[492] Fix | Delete
'title' => esc_html__( 'Important: Local Google Fonts Settings in Elementor', 'elementor' ),
[493] Fix | Delete
'description' => esc_html__( 'Please note: The "Load Google Fonts Locally" feature has been disabled by default on all websites. To turn it back on, go to Elementor → Settings → Performance → Enable Load Google Fonts Locally.', 'elementor' ),
[494] Fix | Delete
'id' => self::LOCAL_GOOGLE_FONTS_DISABLED_NOTICE_ID,
[495] Fix | Delete
'type' => '',
[496] Fix | Delete
'button' => [
[497] Fix | Delete
'text' => esc_html__( 'Take me there', 'elementor' ),
[498] Fix | Delete
'url' => '../wp-admin/admin.php?page=elementor-settings#tab-performance',
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function