/** * Astra Updates * * Functions for updating data, used by the background updater. * * @package Astra * @version 2.1.3 */ defined( 'ABSPATH' ) || exit; /** * Clear Astra + Astra Pro assets cache. * * @since 3.6.1 * @return void. */ function astra_clear_all_assets_cache() { if ( ! class_exists( 'Astra_Cache_Base' ) ) { return; } // Clear Astra theme asset cache. $astra_cache_base_instance = new Astra_Cache_Base( 'astra' ); $astra_cache_base_instance->refresh_assets( 'astra' ); // Clear Astra Addon's static and dynamic CSS asset cache. $astra_addon_cache_base_instance = new Astra_Cache_Base( 'astra-addon' ); $astra_addon_cache_base_instance->refresh_assets( 'astra-addon' ); } /** * 4.0.0 backward handling part. * * 1. Migrate existing setting & do required onboarding for new admin dashboard v4.0.0 app. * 2. Migrating Post Structure & Meta options in title area meta parts. * * @since 4.0.0 * @return void */ function astra_theme_background_updater_4_0_0() { // Dynamic customizer migration starts here. $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['dynamic-blog-layouts'] ) && ! isset( $theme_options['theme-dynamic-customizer-support'] ) ) { $theme_options['dynamic-blog-layouts'] = false; $theme_options['theme-dynamic-customizer-support'] = true; $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); // Archive summary box compatibility. $archive_title_font_size = array( 'desktop' => isset( $theme_options['font-size-archive-summary-title']['desktop'] ) ? $theme_options['font-size-archive-summary-title']['desktop'] : 40, 'tablet' => isset( $theme_options['font-size-archive-summary-title']['tablet'] ) ? $theme_options['font-size-archive-summary-title']['tablet'] : '', 'mobile' => isset( $theme_options['font-size-archive-summary-title']['mobile'] ) ? $theme_options['font-size-archive-summary-title']['mobile'] : '', 'desktop-unit' => isset( $theme_options['font-size-archive-summary-title']['desktop-unit'] ) ? $theme_options['font-size-archive-summary-title']['desktop-unit'] : 'px', 'tablet-unit' => isset( $theme_options['font-size-archive-summary-title']['tablet-unit'] ) ? $theme_options['font-size-archive-summary-title']['tablet-unit'] : 'px', 'mobile-unit' => isset( $theme_options['font-size-archive-summary-title']['mobile-unit'] ) ? $theme_options['font-size-archive-summary-title']['mobile-unit'] : 'px', ); $single_title_font_size = array( 'desktop' => isset( $theme_options['font-size-entry-title']['desktop'] ) ? $theme_options['font-size-entry-title']['desktop'] : '', 'tablet' => isset( $theme_options['font-size-entry-title']['tablet'] ) ? $theme_options['font-size-entry-title']['tablet'] : '', 'mobile' => isset( $theme_options['font-size-entry-title']['mobile'] ) ? $theme_options['font-size-entry-title']['mobile'] : '', 'desktop-unit' => isset( $theme_options['font-size-entry-title']['desktop-unit'] ) ? $theme_options['font-size-entry-title']['desktop-unit'] : 'px', 'tablet-unit' => isset( $theme_options['font-size-entry-title']['tablet-unit'] ) ? $theme_options['font-size-entry-title']['tablet-unit'] : 'px', 'mobile-unit' => isset( $theme_options['font-size-entry-title']['mobile-unit'] ) ? $theme_options['font-size-entry-title']['mobile-unit'] : 'px', ); $archive_summary_box_bg = array( 'desktop' => array( 'background-color' => ! empty( $theme_options['archive-summary-box-bg-color'] ) ? $theme_options['archive-summary-box-bg-color'] : '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'background-type' => '', 'background-media' => '', ), 'tablet' => array( 'background-color' => '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'background-type' => '', 'background-media' => '', ), 'mobile' => array( 'background-color' => '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'background-type' => '', 'background-media' => '', ), ); // Single post structure. foreach ( $post_types as $post_type ) { /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_post_structure = isset( $theme_options['blog-single-post-structure'] ) ? $theme_options['blog-single-post-structure'] : array( 'single-image', 'single-title-meta' ); /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $migrated_post_structure = array(); if ( ! empty( $single_post_structure ) ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort foreach ( $single_post_structure as $key ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( 'single-title-meta' === $key ) { $migrated_post_structure[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title'; if ( 'post' === $post_type ) { $migrated_post_structure[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-meta'; } } if ( 'single-image' === $key ) { $migrated_post_structure[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-image'; } } $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-structure' ] = $migrated_post_structure; } // Single post meta. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_post_meta = isset( $theme_options['blog-single-meta'] ) ? $theme_options['blog-single-meta'] : array( 'comments', 'category', 'author' ); /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $migrated_post_metadata = array(); if ( ! empty( $single_post_meta ) ) { $tax_counter = 0; $tax_slug = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-taxonomy'; /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort foreach ( $single_post_meta as $key ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort switch ( $key ) { case 'author': $migrated_post_metadata[] = 'author'; break; case 'date': $migrated_post_metadata[] = 'date'; break; case 'comments': $migrated_post_metadata[] = 'comments'; break; case 'category': if ( 'post' === $post_type ) { $migrated_post_metadata[] = $tax_slug; $theme_options[ $tax_slug ] = 'category'; $tax_counter = ++$tax_counter; $tax_slug = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-taxonomy-' . $tax_counter; } break; case 'tag': if ( 'post' === $post_type ) { $migrated_post_metadata[] = $tax_slug; $theme_options[ $tax_slug ] = 'post_tag'; $tax_counter = ++$tax_counter; $tax_slug = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-taxonomy-' . $tax_counter; } break; default: break; } } $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-metadata' ] = $migrated_post_metadata; } // Archive layout compatibilities. $archive_banner_layout = class_exists( 'WooCommerce' ) && 'product' === $post_type ? false : true; // Setting WooCommerce archive option disabled as WC already added their header content on archive. $theme_options[ 'ast-archive-' . esc_attr( $post_type ) . '-title' ] = $archive_banner_layout; // Single layout compatibilities. $single_banner_layout = class_exists( 'WooCommerce' ) && 'product' === $post_type ? false : true; // Setting WC single option disabled as there is no any header set from default WooCommerce. $theme_options[ 'ast-single-' . esc_attr( $post_type ) . '-title' ] = $single_banner_layout; // BG color support. $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-image-type' ] = ! empty( $theme_options['archive-summary-box-bg-color'] ) ? 'custom' : 'none'; $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-custom-bg' ] = $archive_summary_box_bg; // Archive title font support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-family' ] = ! empty( $theme_options['font-family-archive-summary-title'] ) ? $theme_options['font-family-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-size' ] = $archive_title_font_size; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-weight' ] = ! empty( $theme_options['font-weight-archive-summary-title'] ) ? $theme_options['font-weight-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $archive_dynamic_line_height = ! empty( $theme_options['line-height-archive-summary-title'] ) ? $theme_options['line-height-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $archive_dynamic_text_transform = ! empty( $theme_options['text-transform-archive-summary-title'] ) ? $theme_options['text-transform-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-extras' ] = array( 'line-height' => $archive_dynamic_line_height, 'line-height-unit' => 'em', 'letter-spacing' => '', 'letter-spacing-unit' => 'px', 'text-transform' => $archive_dynamic_text_transform, 'text-decoration' => '', ); // Archive title colors support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-title-color' ] = ! empty( $theme_options['archive-summary-box-title-color'] ) ? $theme_options['archive-summary-box-title-color'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-text-color' ] = ! empty( $theme_options['archive-summary-box-text-color'] ) ? $theme_options['archive-summary-box-text-color'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort // Single title colors support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-banner-title-color' ] = ! empty( $theme_options['entry-title-color'] ) ? $theme_options['entry-title-color'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort // Single title font support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-family' ] = ! empty( $theme_options['font-family-entry-title'] ) ? $theme_options['font-family-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-size' ] = $single_title_font_size; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-weight' ] = ! empty( $theme_options['font-weight-entry-title'] ) ? $theme_options['font-weight-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_dynamic_line_height = ! empty( $theme_options['line-height-entry-title'] ) ? $theme_options['line-height-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_dynamic_text_transform = ! empty( $theme_options['text-transform-entry-title'] ) ? $theme_options['text-transform-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-extras' ] = array( 'line-height' => $single_dynamic_line_height, 'line-height-unit' => 'em', 'letter-spacing' => '', 'letter-spacing-unit' => 'px', 'text-transform' => $single_dynamic_text_transform, 'text-decoration' => '', ); } // Set page specific structure, as page only has featured image at top & title beneath to it, hardcoded writing it here. $theme_options['ast-dynamic-single-page-structure'] = array( 'ast-dynamic-single-page-image', 'ast-dynamic-single-page-title' ); // EDD content layout & sidebar layout migration in new dynamic option. $theme_options['archive-download-content-layout'] = isset( $theme_options['edd-archive-product-layout'] ) ? $theme_options['edd-archive-product-layout'] : 'default'; $theme_options['archive-download-sidebar-layout'] = isset( $theme_options['edd-sidebar-layout'] ) ? $theme_options['edd-sidebar-layout'] : 'no-sidebar'; $theme_options['single-download-content-layout'] = isset( $theme_options['edd-single-product-layout'] ) ? $theme_options['edd-single-product-layout'] : 'default'; $theme_options['single-download-sidebar-layout'] = isset( $theme_options['edd-single-product-sidebar-layout'] ) ? $theme_options['edd-single-product-sidebar-layout'] : 'default'; update_option( 'astra-settings', $theme_options ); } // Admin backward handling starts here. $admin_dashboard_settings = get_option( 'astra_admin_settings', array() ); if ( ! isset( $admin_dashboard_settings['theme-setup-admin-migrated'] ) ) { if ( ! isset( $admin_dashboard_settings['self_hosted_gfonts'] ) ) { $admin_dashboard_settings['self_hosted_gfonts'] = isset( $theme_options['load-google-fonts-locally'] ) ? $theme_options['load-google-fonts-locally'] : false; } if ( ! isset( $admin_dashboard_settings['preload_local_fonts'] ) ) { $admin_dashboard_settings['preload_local_fonts'] = isset( $theme_options['preload-local-fonts'] ) ? $theme_options['preload-local-fonts'] : false; } // Consider admin part from theme side migrated. $admin_dashboard_settings['theme-setup-admin-migrated'] = true; update_option( 'astra_admin_settings', $admin_dashboard_settings ); } // Check if existing user and disable smooth scroll-to-id. if ( ! isset( $theme_options['enable-scroll-to-id'] ) ) { $theme_options['enable-scroll-to-id'] = false; update_option( 'astra-settings', $theme_options ); } // Check if existing user and disable scroll to top if disabled from pro addons list. $scroll_to_top_visibility = false; /** @psalm-suppress UndefinedClass */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( defined( 'ASTRA_EXT_VER' ) && Astra_Ext_Extension::is_active( 'scroll-to-top' ) ) { /** @psalm-suppress UndefinedClass */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $scroll_to_top_visibility = true; } if ( ! isset( $theme_options['scroll-to-top-enable'] ) ) { $theme_options['scroll-to-top-enable'] = $scroll_to_top_visibility; update_option( 'astra-settings', $theme_options ); } // Default colors & typography flag. if ( ! isset( $theme_options['update-default-color-typo'] ) ) { $theme_options['update-default-color-typo'] = false; update_option( 'astra-settings', $theme_options ); } // Block editor experience improvements compatibility flag. if ( ! isset( $theme_options['v4-block-editor-compat'] ) ) { $theme_options['v4-block-editor-compat'] = false; update_option( 'astra-settings', $theme_options ); } } /** * 4.0.2 backward handling part. * * 1. Read Time option backwards handling for old users. * * @since 4.0.2 * @return void */ function astra_theme_background_updater_4_0_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-0-2-update-migration'] ) && isset( $theme_options['blog-single-meta'] ) && in_array( 'read-time', $theme_options['blog-single-meta'] ) ) { if ( isset( $theme_options['ast-dynamic-single-post-metadata'] ) && ! in_array( 'read-time', $theme_options['ast-dynamic-single-post-metadata'] ) ) { $theme_options['ast-dynamic-single-post-metadata'][] = 'read-time'; $theme_options['v4-0-2-update-migration'] = true; update_option( 'astra-settings', $theme_options ); } } } /** * Handle backward compatibility on version 4.1.0 * * @since 4.1.0 * @return void */ function astra_theme_background_updater_4_1_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-1-0-update-migration'] ) ) { $theme_options['v4-1-0-update-migration'] = true; $current_payment_list = array(); $old_payment_list = isset( $theme_options['single-product-payment-list']['items'] ) ? $theme_options['single-product-payment-list']['items'] : array(); $visa_payment = isset( $theme_options['single-product-payment-visa'] ) ? $theme_options['single-product-payment-visa'] : ''; $mastercard_payment = isset( $theme_options['single-product-payment-mastercard'] ) ? $theme_options['single-product-payment-mastercard'] : ''; $discover_payment = isset( $theme_options['single-product-payment-discover'] ) ? $theme_options['single-product-payment-discover'] : ''; $paypal_payment = isset( $theme_options['single-product-payment-paypal'] ) ? $theme_options['single-product-payment-paypal'] : ''; $apple_pay_payment = isset( $theme_options['single-product-payment-apple-pay'] ) ? $theme_options['single-product-payment-apple-pay'] : ''; false !== $visa_payment ? array_push( $current_payment_list, array( 'id' => 'item-100', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-visa', 'image' => '', 'label' => __( 'Visa', 'astra' ), ) ) : ''; false !== $mastercard_payment ? array_push( $current_payment_list, array( 'id' => 'item-101', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-mastercard', 'image' => '', 'label' => __( 'Mastercard', 'astra' ), ) ) : ''; false !== $mastercard_payment ? array_push( $current_payment_list, array( 'id' => 'item-102', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-amex', 'image' => '', 'label' => __( 'Amex', 'astra' ), ) ) : ''; false !== $discover_payment ? array_push( $current_payment_list, array( 'id' => 'item-103', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-discover', 'image' => '', 'label' => __( 'Discover', 'astra' ), ) ) : ''; $paypal_payment ? array_push( $current_payment_list, array( 'id' => 'item-104', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-paypal', 'image' => '', 'label' => __( 'Paypal', 'astra' ), ) ) : ''; $apple_pay_payment ? array_push( $current_payment_list, array( 'id' => 'item-105', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-apple-pay', 'image' => '', 'label' => __( 'Apple Pay', 'astra' ), ) ) : ''; if ( $current_payment_list ) { $theme_options['single-product-payment-list'] = array( 'items' => array_merge( $current_payment_list, $old_payment_list ), ); update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['woo_support_global_settings'] ) ) { $theme_options['woo_support_global_settings'] = true; update_option( 'astra-settings', $theme_options ); } if ( isset( $theme_options['theme-dynamic-customizer-support'] ) ) { $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); foreach ( $post_types as $post_type ) { $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-extras' ]['text-transform'] = ''; } update_option( 'astra-settings', $theme_options ); } } } /** * 4.1.4 backward handling cases. * * 1. Migrating users to combined color overlay option to new dedicated overlay options. * * @since 4.1.4 * @return void */ function astra_theme_background_updater_4_1_4() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-1-4-update-migration'] ) ) { $ast_bg_control_options = array( 'off-canvas-background', 'footer-adv-bg-obj', 'footer-bg-obj', ); foreach ( $ast_bg_control_options as $bg_option ) { if ( isset( $theme_options[ $bg_option ] ) && ! isset( $theme_options[ $bg_option ]['overlay-type'] ) ) { $bg_type = isset( $theme_options[ $bg_option ]['background-type'] ) ? $theme_options[ $bg_option ]['background-type'] : ''; $theme_options[ $bg_option ]['overlay-type'] = 'none'; $theme_options[ $bg_option ]['overlay-color'] = ''; $theme_options[ $bg_option ]['overlay-opacity'] = ''; $theme_options[ $bg_option ]['overlay-gradient'] = ''; if ( 'image' === $bg_type ) { $bg_img = isset( $theme_options[ $bg_option ]['background-image'] ) ? $theme_options[ $bg_option ]['background-image'] : ''; $bg_color = isset( $theme_options[ $bg_option ]['background-color'] ) ? $theme_options[ $bg_option ]['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $bg_option ]['overlay-type'] = 'classic'; $theme_options[ $bg_option ]['overlay-color'] = $bg_color; $theme_options[ $bg_option ]['overlay-opacity'] = ''; $theme_options[ $bg_option ]['overlay-gradient'] = ''; } } } } $ast_resp_bg_control_options = array( 'hba-footer-bg-obj-responsive', 'hbb-footer-bg-obj-responsive', 'footer-bg-obj-responsive', 'footer-menu-bg-obj-responsive', 'hb-footer-bg-obj-responsive', 'hba-header-bg-obj-responsive', 'hbb-header-bg-obj-responsive', 'hb-header-bg-obj-responsive', 'header-mobile-menu-bg-obj-responsive', 'site-layout-outside-bg-obj-responsive', 'content-bg-obj-responsive', ); $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); foreach ( $post_types as $index => $post_type ) { $ast_resp_bg_control_options[] = 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-custom-bg'; $ast_resp_bg_control_options[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-banner-background'; } $component_limit = defined( 'ASTRA_EXT_VER' ) ? Astra_Builder_Helper::$component_limit : Astra_Builder_Helper::$num_of_header_menu; for ( $index = 1; $index <= $component_limit; $index++ ) { $_prefix = 'menu' . $index; $ast_resp_bg_control_options[] = 'header-' . $_prefix . '-bg-obj-responsive'; } foreach ( $ast_resp_bg_control_options as $resp_bg_option ) { // Desktop version. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( isset( $theme_options[ $resp_bg_option ]['desktop'] ) && is_array( $theme_options[ $resp_bg_option ]['desktop'] ) && ! isset( $theme_options[ $resp_bg_option ]['desktop']['overlay-type'] ) ) { // @codingStandardsIgnoreStart $desk_bg_type = isset( $theme_options[ $resp_bg_option ]['desktop']['background-type'] ) ? $theme_options[ $resp_bg_option ]['desktop']['background-type'] : ''; // @codingStandardsIgnoreEnd $theme_options[ $resp_bg_option ]['desktop']['overlay-type'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-color'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-gradient'] = ''; if ( 'image' === $desk_bg_type ) { $bg_img = isset( $theme_options[ $resp_bg_option ]['desktop']['background-image'] ) ? $theme_options[ $resp_bg_option ]['desktop']['background-image'] : ''; $bg_color = isset( $theme_options[ $resp_bg_option ]['desktop']['background-color'] ) ? $theme_options[ $resp_bg_option ]['desktop']['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $resp_bg_option ]['desktop']['overlay-type'] = 'classic'; $theme_options[ $resp_bg_option ]['desktop']['overlay-color'] = $bg_color; $theme_options[ $resp_bg_option ]['desktop']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-gradient'] = ''; } } } // Tablet version. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( isset( $theme_options[ $resp_bg_option ]['tablet'] ) && is_array( $theme_options[ $resp_bg_option ]['tablet'] ) && ! isset( $theme_options[ $resp_bg_option ]['tablet']['overlay-type'] ) ) { // @codingStandardsIgnoreStart $tablet_bg_type = isset( $theme_options[ $resp_bg_option ]['tablet']['background-type'] ) ? $theme_options[ $resp_bg_option ]['tablet']['background-type'] : ''; // @codingStandardsIgnoreEnd $theme_options[ $resp_bg_option ]['tablet']['overlay-type'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-color'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-gradient'] = ''; if ( 'image' === $tablet_bg_type ) { $bg_img = isset( $theme_options[ $resp_bg_option ]['tablet']['background-image'] ) ? $theme_options[ $resp_bg_option ]['tablet']['background-image'] : ''; $bg_color = isset( $theme_options[ $resp_bg_option ]['tablet']['background-color'] ) ? $theme_options[ $resp_bg_option ]['tablet']['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $resp_bg_option ]['tablet']['overlay-type'] = 'classic'; $theme_options[ $resp_bg_option ]['tablet']['overlay-color'] = $bg_color; $theme_options[ $resp_bg_option ]['tablet']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-gradient'] = ''; } } } // Mobile version. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( isset( $theme_options[ $resp_bg_option ]['mobile'] ) && is_array( $theme_options[ $resp_bg_option ]['mobile'] ) && ! isset( $theme_options[ $resp_bg_option ]['mobile']['overlay-type'] ) ) { // @codingStandardsIgnoreStart $mobile_bg_type = isset( $theme_options[ $resp_bg_option ]['mobile']['background-type'] ) ? $theme_options[ $resp_bg_option ]['mobile']['background-type'] : ''; // @codingStandardsIgnoreEnd $theme_options[ $resp_bg_option ]['mobile']['overlay-type'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-color'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-gradient'] = ''; if ( 'image' === $mobile_bg_type ) { $bg_img = isset( $theme_options[ $resp_bg_option ]['mobile']['background-image'] ) ? $theme_options[ $resp_bg_option ]['mobile']['background-image'] : ''; $bg_color = isset( $theme_options[ $resp_bg_option ]['mobile']['background-color'] ) ? $theme_options[ $resp_bg_option ]['mobile']['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $resp_bg_option ]['mobile']['overlay-type'] = 'classic'; $theme_options[ $resp_bg_option ]['mobile']['overlay-color'] = $bg_color; $theme_options[ $resp_bg_option ]['mobile']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-gradient'] = ''; } } } } $theme_options['v4-1-4-update-migration'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.1.6 * * @since 4.1.6 * @return void */ function astra_theme_background_updater_4_1_6() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['list-block-vertical-spacing'] ) ) { $theme_options['list-block-vertical-spacing'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Set flag to avoid direct reflections on live site & to maintain backward compatibility for existing users. * * @since 4.1.7 * @return void */ function astra_theme_background_updater_4_1_7() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['add-hr-styling-css'] ) ) { $theme_options['add-hr-styling-css'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['astra-site-svg-logo-equal-height'] ) ) { $theme_options['astra-site-svg-logo-equal-height'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Migrating users to new container layout options * * @since 4.2.0 * @return void */ function astra_theme_background_updater_4_2_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-2-0-update-migration'] ) ) { $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); $theme_options = get_option( 'astra-settings' ); $blog_types = array( 'single', 'archive' ); $third_party_layouts = array( 'woocommerce', 'edd', 'lifterlms', 'lifterlms-course-lesson', 'learndash' ); // Global. if ( isset( $theme_options['site-content-layout'] ) ) { $theme_options = astra_apply_layout_migration( 'site-content-layout', 'ast-site-content-layout', 'site-content-style', 'site-sidebar-style', $theme_options ); } // Single, archive. foreach ( $blog_types as $blog_type ) { foreach ( $post_types as $post_type ) { $old_layout = $blog_type . '-' . esc_attr( $post_type ) . '-content-layout'; $new_layout = $blog_type . '-' . esc_attr( $post_type ) . '-ast-content-layout'; $content_style = $blog_type . '-' . esc_attr( $post_type ) . '-content-style'; $sidebar_style = $blog_type . '-' . esc_attr( $post_type ) . '-sidebar-style'; if ( isset( $theme_options[ $old_layout ] ) ) { $theme_options = astra_apply_layout_migration( $old_layout, $new_layout, $content_style, $sidebar_style, $theme_options ); } } } // Third party existing layout migrations to new layout options. foreach ( $third_party_layouts as $layout ) { $old_layout = $layout . '-content-layout'; $new_layout = $layout . '-ast-content-layout'; $content_style = $layout . '-content-style'; $sidebar_style = $layout . '-sidebar-style'; if ( isset( $theme_options[ $old_layout ] ) ) { if ( 'lifterlms' === $layout ) { // Lifterlms course/lesson sidebar style migration case. $theme_options = astra_apply_layout_migration( $old_layout, $new_layout, $content_style, 'lifterlms-course-lesson-sidebar-style', $theme_options ); } $theme_options = astra_apply_layout_migration( $old_layout, $new_layout, $content_style, $sidebar_style, $theme_options ); } } if ( ! isset( $theme_options['fullwidth_sidebar_support'] ) ) { $theme_options['fullwidth_sidebar_support'] = false; } $theme_options['v4-2-0-update-migration'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle migration from old to new layouts. * * Migration cases for old users, old layouts -> new layouts. * * @since 4.2.0 * @param mixed $old_layout old_layout. * @param mixed $new_layout new_layout. * @param mixed $content_style content_style. * @param mixed $sidebar_style sidebar_style. * @param array $theme_options theme_options. * @return array $theme_options The updated theme options. */ function astra_apply_layout_migration( $old_layout, $new_layout, $content_style, $sidebar_style, $theme_options ) { switch ( astra_get_option( $old_layout ) ) { case 'boxed-container': $theme_options[ $new_layout ] = 'normal-width-container'; $theme_options[ $content_style ] = 'boxed'; $theme_options[ $sidebar_style ] = 'boxed'; break; case 'content-boxed-container': $theme_options[ $new_layout ] = 'normal-width-container'; $theme_options[ $content_style ] = 'boxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; case 'plain-container': $theme_options[ $new_layout ] = 'normal-width-container'; $theme_options[ $content_style ] = 'unboxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; case 'page-builder': $theme_options[ $new_layout ] = 'full-width-container'; $theme_options[ $content_style ] = 'unboxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; case 'narrow-container': $theme_options[ $new_layout ] = 'narrow-width-container'; $theme_options[ $content_style ] = 'unboxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; default: $theme_options[ $new_layout ] = 'default'; $theme_options[ $content_style ] = 'default'; $theme_options[ $sidebar_style ] = 'default'; break; } return $theme_options; } /** * Handle backward compatibility on version 4.2.2 * * @since 4.2.2 * @return void */ function astra_theme_background_updater_4_2_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-2-2-core-form-btns-styling'] ) ) { $theme_options['v4-2-2-core-form-btns-styling'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.6.0 * * @since 4.4.0 * @return void */ function astra_theme_background_updater_4_4_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-4-0-backward-option'] ) ) { $theme_options['v4-4-0-backward-option'] = false; // Migrate primary button outline styles to secondary buttons. if ( isset( $theme_options['font-family-button'] ) ) { $theme_options['secondary-font-family-button'] = $theme_options['font-family-button']; } if ( isset( $theme_options['font-size-button'] ) ) { $theme_options['secondary-font-size-button'] = $theme_options['font-size-button']; } if ( isset( $theme_options['font-weight-button'] ) ) { $theme_options['secondary-font-weight-button'] = $theme_options['font-weight-button']; } if ( isset( $theme_options['font-extras-button'] ) ) { $theme_options['secondary-font-extras-button'] = $theme_options['font-extras-button']; } if ( isset( $theme_options['button-bg-color'] ) ) { $theme_options['secondary-button-bg-color'] = $theme_options['button-bg-color']; } if ( isset( $theme_options['button-bg-h-color'] ) ) { $theme_options['secondary-button-bg-h-color'] = $theme_options['button-bg-h-color']; } if ( isset( $theme_options['theme-button-border-group-border-color'] ) ) { $theme_options['secondary-theme-button-border-group-border-color'] = $theme_options['theme-button-border-group-border-color']; } if ( isset( $theme_options['theme-button-border-group-border-h-color'] ) ) { $theme_options['secondary-theme-button-border-group-border-h-color'] = $theme_options['theme-button-border-group-border-h-color']; } if ( isset( $theme_options['button-radius-fields'] ) ) { $theme_options['secondary-button-radius-fields'] = $theme_options['button-radius-fields']; } // Single - Article Featured Image visibility migration. $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); foreach ( $post_types as $post_type ) { $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-article-featured-image-position-layout-1' ] = 'none'; $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-article-featured-image-position-layout-2' ] = 'none'; $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-article-featured-image-ratio-type' ] = 'default'; } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.5.0. * * @since 4.5.0 * @return void */ function astra_theme_background_updater_4_5_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-5-0-backward-option'] ) ) { $theme_options['v4-5-0-backward-option'] = false; $palette_options = get_option( 'astra-color-palettes', Astra_Global_Palette::get_default_color_palette() ); if ( ! isset( $palette_options['presets'] ) ) { $palette_options['presets'] = astra_get_palette_presets(); update_option( 'astra-color-palettes', $palette_options ); } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.5.2. * * @since 4.5.2 * @return void */ function astra_theme_background_updater_4_5_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['scndry-btn-default-padding'] ) ) { $theme_options['scndry-btn-default-padding'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.6.0 * * @since 4.6.0 * @return void */ function astra_theme_background_updater_4_6_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-6-0-backward-option'] ) ) { $theme_options['v4-6-0-backward-option'] = false; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $blog_post_structure = isset( $theme_options['blog-post-structure'] ) ? $theme_options['blog-post-structure'] : array( 'image', 'title-meta' ); /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $migrated_post_structure = array(); if ( ! empty( $blog_post_structure ) ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort foreach ( $blog_post_structure as $key ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( 'title-meta' === $key ) { $migrated_post_structure[] = 'title'; $migrated_post_structure[] = 'title-meta'; } if ( 'image' === $key ) { $migrated_post_structure[] = 'image'; } } $migrated_post_structure[] = 'excerpt'; $migrated_post_structure[] = 'read-more'; $theme_options['blog-post-structure'] = $migrated_post_structure; } if ( defined( 'ASTRA_EXT_VER' ) ) { $theme_options['ast-sub-section-author-box-border-width'] = isset( $theme_options['author-box-border-width'] ) ? $theme_options['author-box-border-width'] : array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ); $theme_options['ast-sub-section-author-box-border-radius'] = isset( $theme_options['author-box-border-radius'] ) ? $theme_options['author-box-border-radius'] : array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ); $theme_options['ast-sub-section-author-box-border-color'] = isset( $theme_options['author-box-border-color'] ) ? $theme_options['author-box-border-color'] : ''; if ( isset( $theme_options['single-post-inside-spacing'] ) ) { $theme_options['ast-sub-section-author-box-padding'] = $theme_options['single-post-inside-spacing']; } if ( isset( $theme_options['font-family-post-meta'] ) ) { $theme_options['font-family-post-read-more'] = $theme_options['font-family-post-meta']; } if ( isset( $theme_options['font-extras-post-meta'] ) ) { $theme_options['font-extras-post-read-more'] = $theme_options['font-extras-post-meta']; } } if ( isset( $theme_options['single-post-inside-spacing'] ) ) { $theme_options['ast-sub-section-related-posts-padding'] = $theme_options['single-post-inside-spacing']; } $theme_options['single-content-images-shadow'] = false; $theme_options['ast-font-style-update'] = false; update_option( 'astra-settings', $theme_options ); } $docs_legacy_data = get_option( 'astra_docs_data', array() ); if ( ! empty( $docs_legacy_data ) ) { delete_option( 'astra_docs_data' ); } } /** * Handle backward compatibility on version 4.6.2. * * @since 4.6.2 * @return void */ function astra_theme_background_updater_4_6_2() { $theme_options = get_option( 'astra-settings', array() ); // Unset "featured image" for pages structure. if ( ! isset( $theme_options['v4-6-2-backward-option'] ) ) { $theme_options['v4-6-2-backward-option'] = false; $page_banner_layout = isset( $theme_options['ast-dynamic-single-page-layout'] ) ? $theme_options['ast-dynamic-single-page-layout'] : 'layout-1'; $page_structure = isset( $theme_options['ast-dynamic-single-page-structure'] ) ? $theme_options['ast-dynamic-single-page-structure'] : array( 'ast-dynamic-single-page-image', 'ast-dynamic-single-page-title' ); $layout_1_image_position = isset( $theme_options['ast-dynamic-single-page-article-featured-image-position-layout-1'] ) ? $theme_options['ast-dynamic-single-page-article-featured-image-position-layout-1'] : 'behind'; $migrated_page_structure = array(); if ( 'layout-1' === $page_banner_layout && 'none' === $layout_1_image_position && ! empty( $page_structure ) ) { foreach ( $page_structure as $key ) { if ( 'ast-dynamic-single-page-image' !== $key ) { $migrated_page_structure[] = $key; } } $theme_options['ast-dynamic-single-page-structure'] = $migrated_page_structure; } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.6.4. * * @since 4.6.4 * @return void */ function astra_theme_background_updater_4_6_4() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['btn-stylings-upgrade'] ) ) { $theme_options['btn-stylings-upgrade'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Elementor Pro heading's margin. * * @since 4.6.5 * @return void */ function astra_theme_background_updater_4_6_5() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['elementor-headings-style'] ) ) { $theme_options['elementor-headings-style'] = defined( 'ELEMENTOR_PRO_VERSION' ) ? true : false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Elementor Loop block post div container padding. * * @since 4.6.6 * @return void */ function astra_theme_background_updater_4_6_6() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['elementor-container-padding-style'] ) ) { $theme_options['elementor-container-padding-style'] = defined( 'ELEMENTOR_PRO_VERSION' ) ? true : false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Starter template library preview line height cases. * * @since 4.6.11 * @return void */ function astra_theme_background_updater_4_6_11() { $theme_options = get_option( 'astra-settings', array() ); if ( isset( $theme_options['global-headings-line-height-update'] ) ) { return; } $headers_fonts = array( 'h1' => '1.4', 'h2' => '1.3', 'h3' => '1.3', 'h4' => '1.2', 'h5' => '1.2', 'h6' => '1.25', ); foreach ( $headers_fonts as $header_tag => $header_font_value ) { if ( empty( $theme_options[ 'font-extras-' . $header_tag ]['line-height'] ) ) { $theme_options[ 'font-extras-' . $header_tag ]['line-height'] = $header_font_value; if ( empty( $theme_options[ 'font-extras-' . $header_tag ]['line-height-unit'] ) ) { $theme_options[ 'font-extras-' . $header_tag ]['line-height-unit'] = 'em'; } } } $theme_options['global-headings-line-height-update'] = true; update_option( 'astra-settings', $theme_options ); } /** * Handle backward compatibility for heading `clear:both` css in single posts and pages. * * @since 4.6.12 * @return void */ function astra_theme_background_updater_4_6_12() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['single_posts_pages_heading_clear_none'] ) ) { $theme_options['single_posts_pages_heading_clear_none'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['elementor-btn-styling'] ) ) { $theme_options['elementor-btn-styling'] = defined( 'ELEMENTOR_VERSION' ) ? true : false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['remove_single_posts_navigation_mobile_device_padding'] ) ) { $theme_options['remove_single_posts_navigation_mobile_device_padding'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for following pointers. * * 1. unit less line-height support. * 2. H5 font size case. * * @since 4.6.14 * @return void */ function astra_theme_background_updater_4_6_14() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-6-14-compatibility'] ) ) { $theme_options['enable-4-6-14-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for following cases. * * 1. Making edd default option enable by default. * 2. Handle backward compatibility for Heading font size fix. * * @since 4.7.0 * @return void */ function astra_theme_background_updater_4_7_0() { $theme_options = get_option( 'astra-settings', array() ); if ( class_exists( 'Easy_Digital_Downloads' ) && ! isset( $theme_options['can-update-edd-featured-image-default'] ) ) { $theme_options['can-update-edd-featured-image-default'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['heading-widget-font-size'] ) ) { $theme_options['heading-widget-font-size'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for version 4.7.1 * * @since 4.7.1 * @return void */ function astra_theme_background_updater_4_7_1() { $theme_options = get_option( 'astra-settings', array() ); // Setting same background color for above and below transparent headers as on transparent primary header. if ( isset( $theme_options['transparent-header-bg-color-responsive'] ) ) { if ( ! isset( $theme_options['hba-transparent-header-bg-color-responsive'] ) ) { $theme_options['hba-transparent-header-bg-color-responsive'] = $theme_options['transparent-header-bg-color-responsive']; } if ( ! isset( $theme_options['hbb-transparent-header-bg-color-responsive'] ) ) { $theme_options['hbb-transparent-header-bg-color-responsive'] = $theme_options['transparent-header-bg-color-responsive']; } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility Spectra Heading max-width with Astra when fullwidth layout is selected. * * @since 4.8.0 * @return void */ function astra_theme_background_updater_4_8_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-8-0-compatibility'] ) ) { $theme_options['enable-4-8-0-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility Single post outside spacing issue. * * @since 4.8.2 * @return void */ function astra_theme_background_updater_4_8_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-8-2-backward-option'] ) ) { $theme_options['v4-8-2-backward-option'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Spectra container margin left and right. * Handle backward compatibility for Heading font size px to em conversion cases. * * @since 4.8.4 * @return void */ function astra_theme_background_updater_4_8_4() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-8-4-compatibility'] ) ) { $theme_options['enable-4-8-4-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['astra-heading-font-size-compatibility'] ) ) { $theme_options['astra-heading-font-size-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Set key to show NPS survey popup immediately for old user. * * @since 4.8.7 * @return void */ function astra_theme_background_updater_4_8_7() { // Bail early if the starter template is being imported. if ( get_option( 'astra_sites_import_started' ) === 'yes' ) { return; } update_option( 'astra_nps_show', true ); } /** * Handle backward compatibility on version 4.8.9. * 1. Reorganizing color palettes. * * @since 4.8.9 * @return void */ function astra_theme_background_updater_4_8_9() { // Bail early if the starter template is being imported. if ( get_option( 'astra_sites_import_started' ) === 'yes' || astra_get_option( 'new-color-labels' ) ) { astra_update_option( 'new-color-labels', true ); } $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-8-9-compatibility'] ) ) { $theme_options['enable-4-8-9-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } // Enable off canvas move body option for existing users. if ( ! isset( $theme_options['off-canvas-move-body'] ) ) { $theme_options['off-canvas-move-body'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.8.10. * * @since 4.8.10 * @return void */ function astra_theme_background_updater_4_8_10() { $theme_options = get_option( 'astra-settings', array() ); /** * Enable star rating compatibility for existing users, excluding template import scenarios. */ if ( get_option( 'astra_sites_import_started' ) !== 'yes' ) { $theme_options['star-rating-comp'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for dark palette. * Dark palette backward compatibility for some cases default option . * * @since 4.9.0 * @return void */ function astra_theme_background_updater_4_9_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-9-0-backward-option'] ) ) { $theme_options['v4-9-0-backward-option'] = false; update_option( 'astra-settings', $theme_options ); } } /*! elementor - v3.27.0 - 18-02-2025 */ :root { --color-box-shadow-color: rgba(0, 0, 0, 0.05); } .eps-theme-dark { --color-box-shadow-color: rgba(0, 0, 0, 0.1); } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } @media screen and (min-width: 480px) { .text-start-sm { text-align: start; } } @media screen and (min-width: 480px) { .text-center-sm { text-align: center; } } @media screen and (min-width: 480px) { .text-end-sm { text-align: end; } } @media screen and (min-width: 768px) { .text-start-md { text-align: start; } } @media screen and (min-width: 768px) { .text-center-md { text-align: center; } } @media screen and (min-width: 768px) { .text-end-md { text-align: end; } } @media screen and (min-width: 1025px) { .text-start-lg { text-align: start; } } @media screen and (min-width: 1025px) { .text-center-lg { text-align: center; } } @media screen and (min-width: 1025px) { .text-end-lg { text-align: end; } } @media screen and (min-width: 1440px) { .text-start-xl { text-align: start; } } @media screen and (min-width: 1440px) { .text-center-xl { text-align: center; } } @media screen and (min-width: 1440px) { .text-end-xl { text-align: end; } } @media screen and (min-width: 1600px) { .text-start-xxl { text-align: start; } } @media screen and (min-width: 1600px) { .text-center-xxl { text-align: center; } } @media screen and (min-width: 1600px) { .text-end-xxl { text-align: end; } } @keyframes eps-animation-pop { from { transform: scale(0.75); opacity: 0; } to { transform: scale(1); opacity: 1; } } /*# sourceMappingURL=app-base.css.map *//** * Deprecated Functions of Astra Theme. * * @package Astra * @link https://wpastra.com/ * @since Astra 1.0.23 */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Deprecating footer_menu_static_css function. * * Footer menu specific static CSS function. * * @since 3.7.4 * @deprecated footer_menu_static_css() Use astra_footer_menu_static_css() * @see astra_footer_menu_static_css() * * @return string Parsed CSS */ function footer_menu_static_css() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_footer_menu_static_css()' ); return astra_footer_menu_static_css(); } /** * Deprecating is_support_footer_widget_right_margin function. * * Backward managing function based on flag - 'support-footer-widget-right-margin' which fixes right margin issue in builder widgets. * * @since 3.7.4 * @deprecated is_support_footer_widget_right_margin() Use astra_support_footer_widget_right_margin() * @see astra_support_footer_widget_right_margin() * * @return bool true|false */ function is_support_footer_widget_right_margin() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_support_footer_widget_right_margin()' ); return astra_support_footer_widget_right_margin(); } /** * Deprecating prepare_button_defaults function. * * Default configurations for builder button components. * * @since 3.7.4 * @deprecated prepare_button_defaults() Use astra_prepare_button_defaults() * @param array $defaults Button default configs. * @param string $index builder button component index. * @see astra_prepare_button_defaults() * * @return array */ function prepare_button_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_button_defaults()' ); return astra_prepare_button_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_html_defaults function. * * Default configurations for builder HTML components. * * @since 3.7.4 * @deprecated prepare_html_defaults() Use astra_prepare_html_defaults() * @param array $defaults HTML default configs. * @param string $index builder HTML component index. * @see astra_prepare_html_defaults() * * @return array */ function prepare_html_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_html_defaults()' ); return astra_prepare_html_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_social_icon_defaults function. * * Default configurations for builder Social Icon components. * * @since 3.7.4 * @deprecated prepare_social_icon_defaults() Use astra_prepare_social_icon_defaults() * @param array $defaults Social Icon default configs. * @param string $index builder Social Icon component index. * @see astra_prepare_social_icon_defaults() * * @return array */ function prepare_social_icon_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_social_icon_defaults()' ); return astra_prepare_social_icon_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_widget_defaults function. * * Default configurations for builder Widget components. * * @since 3.7.4 * @deprecated prepare_widget_defaults() Use astra_prepare_widget_defaults() * @param array $defaults Widget default configs. * @param string $index builder Widget component index. * @see astra_prepare_widget_defaults() * * @return array */ function prepare_widget_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_widget_defaults()' ); return astra_prepare_widget_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_menu_defaults function. * * Default configurations for builder Menu components. * * @since 3.7.4 * @deprecated prepare_menu_defaults() Use astra_prepare_menu_defaults() * @param array $defaults Menu default configs. * @param string $index builder Menu component index. * @see astra_prepare_menu_defaults() * * @return array */ function prepare_menu_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_menu_defaults()' ); return astra_prepare_menu_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_divider_defaults function. * * Default configurations for builder Divider components. * * @since 3.7.4 * @deprecated prepare_divider_defaults() Use astra_prepare_divider_defaults() * @param array $defaults Divider default configs. * @param string $index builder Divider component index. * @see astra_prepare_divider_defaults() * * @return array */ function prepare_divider_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_divider_defaults()' ); return astra_prepare_divider_defaults( $defaults, absint( $index ) ); } /** * Deprecating is_astra_pagination_enabled function. * * Checking if Astra's pagination enabled. * * @since 3.7.4 * @deprecated is_astra_pagination_enabled() Use astra_check_pagination_enabled() * @see astra_check_pagination_enabled() * * @return bool true|false */ function is_astra_pagination_enabled() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_check_pagination_enabled()' ); return astra_check_pagination_enabled(); } /** * Deprecating is_current_post_comment_enabled function. * * Checking if current post's comment enabled and comment section is open. * * @since 3.7.4 * @deprecated is_current_post_comment_enabled() Use astra_check_current_post_comment_enabled() * @see astra_check_current_post_comment_enabled() * * @return bool true|false */ function is_current_post_comment_enabled() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_check_current_post_comment_enabled()' ); return astra_check_current_post_comment_enabled(); } /** * Deprecating ast_load_preload_local_fonts function. * * Preload Google Fonts - Feature of self-hosting font. * * @since 3.7.4 * @deprecated ast_load_preload_local_fonts() Use astra_load_preload_local_fonts() * @param string $google_font_url Google Font URL generated by customizer config. * @see astra_load_preload_local_fonts() * * @return string */ function ast_load_preload_local_fonts( $google_font_url ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_load_preload_local_fonts()' ); return astra_load_preload_local_fonts( $google_font_url ); } /** * Deprecating ast_get_webfont_url function. * * Getting webfont based Google font URL. * * @since 3.7.4 * @deprecated ast_get_webfont_url() Use astra_get_webfont_url() * @param string $google_font_url Google Font URL generated by customizer config. * @see astra_get_webfont_url() * * @return string */ function ast_get_webfont_url( $google_font_url ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_get_webfont_url()' ); return astra_get_webfont_url( $google_font_url ); } Бонусы ️ Oбзор Лучшие Бонусы Казино Онлайн【2024 - V&K Cleaning
Quick Contact

Quick Contact

07895 725670

Бонусы ️ Oбзор Лучшие Бонусы Казино Онлайн【2024

Бонусы ️ Oбзор Лучшие Бонусы Казино Онлайн【2024】

“”как Отыграть Бонус в Казино%3A Правила Отыгрыша И Рекомендац

Content

Тем не достаточно%2C есть некоторые особенности%2C которые следует учитывать%2C прежде чем претендовать на какое-либо бонусное предложение. Как человек%2C который любит играть в онлайн-казино%2C не лично убедился в плюсах и минусах этих бонусов. Безрисковые ставки — как один из немногих популярных видов бонусов%2C которые предлагают онлайн-казино. Этот вид бонуса позволяет игрокам размещать ставки без какого-либо риска потери собственных денег. Если ставка проигрывает%2C казино компенсировало проигрыш игрока в виде бонусных средств. Если вы” “ищем казино с но потрясающим приветственным прочему%2C обратите внимание в Optibet Casino!

  • В рулетке этот параметр или составлять только 5%%2C а значит%2C открутку придется выполнять и 20 раз больше.
  • В дальнейшем%2C когда казино получит подобную вовлеченность%2C бонусы может составлять 20-30% GGR для поддержания маркетинга мостбет скачать.
  • Наконец%2C важно помнить об важной игре%2C когда вы играете и этом казино%2C онлайн или в единственном изваринская.
  • Без лимита игрок сможет доигрывать” “бонус в казино%2C тогда рискнет а его повезет.
  • Со каждым годом к” “списку онлайн казино Балтии присоединяется все меньше новых казино.
  • Бонусы на обналичил чаще всего отсутствуют на зарубежных сайтах казино и иногда являются частью вступительных бонусов.

Для иллюстрации допустим%2C что казино предложил 100% бонус до 500 евро.” “[newline]Иногда обязательным непременное ддя получения начальных денежек становится” “указание промокода. Проблема и том%2C что казино определяют ряд требований%2C которые делают саму решить довольно затруднительной. Но некоторые игроки только предпочитают отказываешься от предложений.

Бездеп В качестве Денег На Счет

Дело а том%2C что или отыгрывании в обычно случаев игроки использовать свои реальные приличные в первую. Нестыковка не же а том%2C того проставить нужную” “сумма в казино%2C только еще и и том%2C что самих не сможете отыгрывать бонус вечно. Чем более привлекательное предложений%2C тем меньше удается времени.

  • Представлены в виде бесплатных вращений также процент от пополнения.
  • Например%2C игрок быть зарегистрироваться%2C установить приложение%2C подтвердить личность и т.
  • Если игрок только успеет выполнить условия за период%2C оговоренный акцией%2C начисления сгорают.
  • Но чаще мы нельзя наблюдать%2C что казино предлагают бонусы%2C недалеко игрокам предоставляются безрисковые вращения.
  • Для самых лояльных клиентов многие казино также предлагают VIP программу.

Иногда множество вращений зависит от суммы депозита%2C внесенного игроком. Ограничение на количество вращений%2C период использования и безрисковую игру или немного игр обычно описываются в правилах бонуса. О них знают операторы%2C поэтому ввести ограничения на это ставки. Игроку нужно поискать площадку%2C на которой получится использовать методы. Для того нужно зайти в раздел с правилами и посмотреть блок%2C который касается бонусов мостбет.

Отыгрыш Бонусов На Спортивных Ставках

Наиболее выгодным было отыгрыш в слотах с высоким процента отдачи. Отдавайте предпочтение софту%2C в которому дополнительно встроены игры на удвоение%2C фриспины и вайлды%2C скаттеры и прочие неприятные дополнения к игре. Отдельные сайты не дают точных понятием о проценте ставок%2C который пойдет в зачет азартной игры. Если будет произведен запуск этих приложений%2C ваш бонусный счет с большой видимости аннулируется.

  • Но онлайн-казино создаются исключительно для получения прибыли.
  • Эти характеристики можно учитывать при выбора игровой площадки.
  • Оператор работаете по лицензии Комиссии по азартным играм Кюрасао же жестко соблюдает только требования регулятора.
  • Онлайн-казино предоставляет его” “в своем сайте%2C спустя партнеров или же рассылке по электронной почте.
  • Сумма бонуса может зависеть ото суммы пополнения депозита%2C условия зависят от определенного рекламного предложениями.
  • В этом материале мы рассмотрим%2C как отыграть бонусы%2C можно ли это делать и как иметь больше преимуществ со подарков администрации.

Если пользователю важен наличие определенной категории игр%2C лучше лишний это вплоть регистрации. Там же размещают логотип регулятора — он может быть кликабельным и вести посетителя в карточку валидатора. Только тогда в стране игрока нет органа%2C который лицензирует онлайн-операторов%2C но нужно регистрироваться на нелегальных площадках.

Как используя Бонусные Коды%3F

Ставки в равные шансы (красное%2Fчерное%2C четное%2Fнечетное) обычно запрещены. В дальнейшем%2C тогда казино получит хорошую вовлеченность%2C бонусы быть составлять 20-30% GGR для поддержания маркетинга. Практически в повсюду онлайн-казино действует бонусная политика.

  • Он отличается в варьируется от” “предложениях и может составлять как 3 дня%2C так и 1 месяц.
  • С их помощью сразу после регистрации и пополнения счета можно значительно использовать свой банкролл.
  • Предложения%2C размещенные на нашем сайте%2C действительны только дли лиц%2C достигших 21 года%2C и резидентов соответствующих стран.
  • Менаджеров отыгрышем понимается выполнения требований%2C которые показало казино для зависимости акции.
  • Они определяют%2C сколько дважды вам придется доигрывать в определенную игру с бонусными денег%2C” “прежде чем вы сможете их обналичить.

Честность — это основа нашей отрасли и самый важный фактор в обеспечении безопасновато и надежной игровой среды. Кроме только%2C любая новая игра или слот%2C выпущенные 1Win%2C тестируются%2C этого убедиться в отсутствии ошибок или обходные в играх. Они организованы по другим темам%2C что упрощает просмотр и поиски нужной информации.

Размер Ставки

Например%2C делая ставки на сумму не менее 5 баксов%2C Вы можете заиметь дополнительную бонусную ставку. Или%2C может быть%2C сделайте 5 ставок подряд и получат за это дополнительную бонусную ставку. Их бонусы онлайн-казино добираются как на обычные спортивные ставки%2C так и на ставки Live во во спортивных игр. Бонусная ставка может применяться к конкретному имеете спорта — хоккею%2C баскетболу%2C футболу%2C конкретному турниру или даже спортивной команде мостбет кз скачать.

  • Более того%2C вы можете играть в свои любимые игры казино на реальные деньги а любое время а в любом места!.” “[newline]Просто используйте раскрывающееся меню в правом верхнем углу любой страницы%2C чтобы иметь доступ к прямому чату%2C онлайн-поддержке а мобильной помощи.
  • Понимал это%2C администрация ограничивает максимальную ставку ним спин и прописывает это в правилах.
  • Однако нельзя участвовать в других акциях для этого%2C чтобы попробовать софт в платном режиме.
  • Если игровая площадка предлагает сомнительные обстоятельства для отыгрыша поощрения%2C рекомендуется рассмотреть которых варианты игорных заведений.
  • Игрок%2C получивший подобный подарок%2C может выиграть реальные приличные%2C играя на средств азартного клуба%2C а не на собственные.

Игроки с более высоким уровнем лояльности регрессной могут получать более крупные бонусы же более высокие ставки кэшбэка. Еще вторым преимуществом программ беззаветной является то%2C только они могут иметь игрокам дополнительную ценного за их приличные. Программа лояльности потому работает по системе%2C основанной на баллах%2C где игроки оплачиваются баллы за раз доллар%2C потраченный и казино. Эти близоруко можно обменять на вознаграждения%2C такие же кэшбэк%2C бесплатные вращения или другие бонусы. Чем больше очков зарабатывает игрок%2C тем выше его уровня лояльности%2C что всегда дает дополнительные возможности. Бонус «пригласи друга» в казино SYNOTTIP позволяет игрокам заиметь дополнительные бонусные средства за приглашение наших друзей или приятелей” “а казино.

Учет Вида Бонуса И Размера Вейджера

Опытные игроки делаются дополнительные баллы%2C расширяют размеры ставок%2C сроки обработки его предложений значительно уменьшаются. Остальные пользователи также выборе азартной площадки внимание на дни акции. Ниже вы можете найти подробный казино с лучшей бонусами%2C актуальные в сегодня.

  • Большинство настольных игр%2C умный покер же некоторые онлайн казино также включают прогрессивный джекпот в эти пределы.
  • И данном случае невозможно не усердствовать а самом начале%2C же вносить суммы постепенно.
  • Важен“ „понимают эту механику%2C того максимизировать свой выигрыш.
  • Другие топ онлайн-казино со бездепозитным бонусом ним регистрацию с выводом позволяют активировать промокод после создания аккаунта.

Имелся запрет и игру с разному шансами%2C а также мог использовать различных вида стратегий. Тогда гемблер играет по-крупному%2C зарухом вправе значительно быстро выполнить необходимы обстоятельств вейджера. И связь с вторым%2C сайт ввел преимущества в размер ставки ним 1 спинами” “а прописал это же руководстве мостбет кз скачать. Чрезмерное увлечение может привести ко стремительному развитию игровой зависимости%2C играйте должным. Это то результат%2C при который пользователь во время отыгрыша теряет только бонусные деньги%2C же но собственные.

Бонус За Регистрацию И Первое Пополнение Счета

Представлены в качестве бесплатных вращений или процент от пополнения. Релоад – как постоянный бонус%2C он дарят при непременном правил соглашения по внесению взноса. Более уважаемые казино имеют схожий набор игровых провайдеров%2C доступных для игроков.

  • Клиенты%2C использующие мобильные устройства%2C участвуют во всех промоакциях.
  • Вводите твои данные и пользуйтесь со платежными реквизитами.
  • Кроме того%2C любая новая игра или слот%2C выпущенные 1Win%2C тестируются%2C этого убедиться в отсутствие ошибок или лазейки в играх.
  • Тогда дело доходит конца отыгрыша бонусов%2C регрессной важно понимать все условия%2C установленные казино.
  • Но любой из их бонусов может заиметь любой новый игрок%2C выбрать его дальше не просто.

Этого от подарочного депозита была польза%2C нельзя выбрать автомат%2C в котором можно выйти и нулевое математическое ожидание. Независимо от содержания%2C бонус позволяет делать ставки на реальные деньги%2C не привлекая вложений от игрока. Если клиенту смогут получить выплату%2C вывод средств возможен после выполнения условий отыгрыша. В зависимости остального вида предложения казино устанавливает разные требования. Там собирается информация о сумме ставок и выполнении вейджеровых условий. Если игроку посчастливилось полностью доигрывать поощрение%2C особенно бездепозитное%2C то не предпочтительно сразу же подавать заявку на логичный средств.

Злоупотребление Бонусами Казино

(То есть%2C столько ставите%2C столько прошло определенное количество а получаете). Доступно множество различных игр%2C начиная виртуальные слоты%2C видеопокер%2C настольные игры же многое другое. Игроки могут даже исследовать онлайн-ставки на спорт%2C в зависимости остального законов своей юрисдикции. На самом действительно%2C некоторые казино только предлагают специальные” “акции и бонусные свертки%2C которые предназначены для использования в сочетании друг с единственном. Программа лояльности — это система%2C предназначена онлайн-казино для поощрения и поощрения самых лояльных и расточительных игроков.

В новых онлайн-казино с бездепозитным бонусом за регистрацию с выводом использовать но эти варианты. Если кварплату например фриспины начисляются псевдорасследование верификации%2C важно долечатся ее успешного%2C же затем активировать промоакцию. Если сделали депозит до того момент%2C игрок лишимся право на бонус. Дли получения бонуса либо потребоваться активация бездепа в Своем служебном в разделе промоакций или обращение а службу помощи.

Внимательно писать Правила И обстоятельств

Бонус казино это методом получить дополнительные приличные%2C играя в онлайн казино. При регистрации и внесении депозита от 10 конца 3000 € немногих” “бонусов знакомств дадут вам возможность вернуть несколько процентов от суммы вашего депозита. Например%2C если вы сделает депозит в размере 100 €%2C сами сможете получить туда бонусные деньги и размере 200 € вам будет начислено 1000 бесплатных вращений. Бонусы казино отличный способ привлечь игроков и заставить его чувствовать себя хуже%2C проводя время и сайтах онлайн казино.

Итак%2C Игрок планирует внести 100 баксов%2C а Казино предлагает and up. ” “100% от одной суммы. Требование ко ставке составляет х30 (это означает%2C что сумма в 200 евро должна быть сыграна 30 раз). Мы собрали для вас лучшие бонусы казино” “онлайн и разбили их судя категориям%2C этого вас было проще разобраться. Без лимита игрок сможет доигрывать” “бонус в казино%2C если рискнет а ему повезет.

Как выбирать И Активировать Бонус За Регистрацию

Мы не контролем третьи стороны%2C них могут изменить например отозвать свои рекламные предложения. Предложения%2C них вы найдете и нашем сайте%2C действительны только для лиц%2C достигших 18 назад и являющихся резидентами соответствующих стран. Попросил%2C внимательно ознакомьтесь со правилами и условиями%2C относящимися к каждый казино%2C прежде чем принимать участие а акции. Поэтому не важно внимательно писать правила и обстоятельства бонусов казино перед регистрацией в новых казино. Такая возможностей доступна зарегистрированным и верифицированным клиентам. Ддя подтверждения личности нельзя предоставить администрации документы.

  • Такие поощрения предназначены уже зарегистрированным игрокам.
  • Например%2C тот из таких бонусов предоставляет возможность заиметь до 100 евро каждый первый обналичил каждого месяца.
  • Эта практика есть в наземных заведениях%2C либо%2C Литвы%2C где дается специальные бесплатные купоны для игры.
  • То нет необходимо сделать ставок на 300 евро%2C чтобы вывести наш выигрыш.
  • Условия требования к обороту побуждают игроков казино внимательно оценивать выгоду от бонуса%2C ведь не каждый способен отыграть крупные суммы деньги 40 раз.

Его размер либо быть фиксированный одноиз зависеть от внесенной на баланс кредиту. Присоединение к VIP-программе казино — прекрасный способ получить доступ к эксклюзивным вознаграждениям и преимуществам. И зависимости от казино процесс присоединения нему VIP-программе может отличаться%2C но общие шаги обычно одинаковы. Расчет того%2C принимать или нет бонус казино%2C может быть сложнее решением.

же Доигрывать Бонус и Казино И что Как Означает%3F

Хитрость пиппардом требованиями к ставкам заключается в факте%2C чтобы делать бонусы выгодными для казино. Вот почему и требованиях к ставкам обычно указывается%2C меньше раз должна или сыграна сумма внесенных денег%2C прежде чем станет возможным вывод денег. Фриспины” “обычно сопровождаются условиями вейджера и распространяются и выигрыши%2C которые” “игрок получает в непродолжительного использования подарка.

  • Если игроку посчастливилось полностью доиграть поощрение%2C особенно бездепозитное%2C то не предпочтительно сразу же подавать заявку на вывод средств.
  • Например%2C выйти в ноль пиппардом бездепом %2410%2C них которого вейджер равным х40%2C можно на автоматах пиппардом RTP не перезакуплен 97%2C 5%.
  • Отсутствии лицензии у игрового клуба — так основной момент%2C на который необходимо внимание также подходящих подходящего вариантах.

Заиметь их нельзя от самого ресурса или найти и аффилированном сайте. Отсутствии лицензии у игрового клуба — так главной момент%2C на он необходимо внимание также подходящих подходящего варианта. Чтобы предотвратить злоупотребление бонусами%2C операторы устанавливают дополнительные условия%2C они должны быть соблюдены%2C прежде чем совершить выплаты.

Классификация Бонусов в Казино Без Депозита

Участник получит” “фриспины или сумму денежных средств в процента соотношении к пополнению баланса. Прежде больше начать разбираться%2C же отыграть бонус%2C нужно знать какие бывают поощрения. Теперь%2C же и в таком с любым бонусом%2C важно внимательно воспроизвести условия. Однако%2C если вам повезет%2C вы можете просто выиграет этот крупный выигрыш и выполнить них требования в мобилизовать сроки. Теперь вы может быть конечно%2C что же это приветственный бонус%3F

  • Здравому предложению можно без вложений запустить интересующую слоты и осознать казино изнутри.
  • Но можно получить а виде дополнительных денег%2C бесплатных вращений или кэшбэк бонуса.
  • В 1Win есть ряд помогающих игр казино%2C только они включают игровые автоматы 1Win%2C игровые автоматы%2C блэкджек%2C рулетку и видеопокер.
  • Это включает а себя любые минимуме или минимальные ставки%2C требования к ставкам и любые которых ограничения.

Особенно%2C когда казино молодое%2C голодное только должно громко зазывать игроков. Грамотно использованные малейшей помогут добиваешься меньшего результата. Игорные казино стали позволять ваших пользователей только денег и монетами%2C а альтернативными предложения.

знак Бонус

Важно изучить со условиями же положениями любых бонусов%2C которые вы примите%2C чтобы знать но правила и преимущества%2C связанной с ними. Качестве бонуса казино или быть эффективным способом увеличить свои шанса на выигрыш. Гораздо чем воспользоваться бонусом%2C важно убедиться%2C только все ограничения и временные рамки непонятные%2C чтобы максимально используя его потенциал. Можно также отметить%2C только некоторые бонусы могут требовать внесения депозита до их использования%2C а другие – нет.

Поэтому их невозможно использовать на предназначенных площадках%2C которые не предусмотрели соответствующие ограничения в правилах. По окончании срока оставшуюся кредитов выводят в основной баланс. Исключением прочего в правилах площадки нужно показать контрибуцию игр. Ставки%2C сделанные в автоматах%2C обычно засчитываются за 100% при выполнении условий вейджера. Дли других развлечений доля меняется и воздействует на конечный коэффициент отыгрыша.

Способы доиграть Бонус В Казино

Когда несколько игроков делаете ставки с который устройства%2C повторно активировать комбинацию не старался. Все сводится ко конкретным условиям каждая бонуса%2C поэтому довольно важно внимательно его прочитать и представить любые ограничения%2C которые могут применяться. А правилах и нормальных каждого онлайн казино указано%2C как игрок может получить свой бонус. Например%2C знак бонус дается игрокам%2C которые впервые регистрируются и вносят первый депозит. Казино LV BET предлагает всем игрокам кешбек бонус в размере вплоть 20% от кредиту проигрыша. Этот бонус доступен каждую раза и предоставляет игрокам возможность получить часть своих потерь оттуда.

  • Выбирать слоты со риск-игрой%2C респинами%2C фриспинами%2C бонусными раундами и призовыми функциями.
  • У нас сами научитесь играть и азартные игры и самые популярные игры казино на реальные деньги.
  • Потому играя в определенные игры приносит вас дополнительные деньги и ваш игровой счет или бонусные бесплатные вращения при внесении первого депозита.
  • Потому онлайн-казино указывают возможную сумму депозита дли каждого уникального предложений.
  • Мы не контролировать третьи стороны%2C них могут изменить или отозвать свои рекламные предложения.

В том же случае%2C когда будет использоваться была валюта счета%2C внесение депозитов и вывод средств потребует конвертации. Получив бездепозитный бонус%2C бесплатные спины а бонусы за регистрацию нет депозита%2C вы не“ „нужно рисковать собственными деньги. Же%2C благодаря%2C большой конкуренции на рынке%2C виртуальные клубы со удовольствием раздают щедрые бонусы в казино всем своим новому игрокам. Но прежде чем активировать выбранное предложение%2C стоит изучить соответствующих информацию и узнать%2C как отыграть бонус в казино. Тогда гемблеру удалось отыграть выигрыш в некотором объеме%2C то но рекомендуем вам тут выводить средства. Гораздо еще немного поиграть и вывести деньги вместе с другими суммами выигрыша.

Как доиграть Вейджер Бонуса и Вывести Приличные одним Казино 2023

Но это не ведь%2C что вы должны воротить нос остального бездепозитного бонуса. Так отличный способ получиться новое казино%2C только рискуя собственными деньгами. И кто никто%2C может быть%2C вас повезет%2C и вы выиграете крупный выигрыш с помощью этих бесплатных вращений например бонусных кредитов.

  • Это отличный методом заставить игроков возвращаться и показать ей некоторую признательность ним их лояльность.
  • Этого упростить поиск проверенные казино%2C специалисты Vespoker анализируют%2C тестируют разные платформы а составляла ТОП лучших.
  • Получив бонусные деньги%2C клиент но может сразу выйти их на карту или электронный кошелек.

А есть игроку необходимо будет сыграть 30 раз%2C чтобы баланс бонуса стал реальными деньгами. То нет необходимо сделать ставок на 300 евро%2C чтобы вывести мой выигрыш. Мы подробно рассмотрим требования ко отыгрышу в следующем разделе. Отыгрывая бонусы%2C важно строго следовал условиям вейджера%2C указанным казино. Если устанавливается” “лимит на выплату%2C то нужно учитывать эту сумму.

Scroll to Top
padişahbet giriş
grandpashabet
neyine giriş
betmatik
cashwin giris
padişahbet güncel giriş
kingbetting güncel giriş
biabet giriş
sugar rush 1000
rokubet
imajbet giriş
betwild giris
biabet giris
plinko romania
pin up aviator
rexbet giriş