/** * 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 $index => $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 $index => $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 $key => $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 $key => $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 $index => $blog_type ) { foreach ( $post_types as $index => $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 $index => $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 $index => $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 ); } } techsolutionn.com – Page 2238

Blog

  • Kuinka pelata strategisesti Lunubet casinolla

    Olen viime aikoina testannut Lunubet kasinoa ja haluan jakaa kokemukseni sekä strategiat, joita käytin pelatessani. Lunubet tarjoaa laajan valikoiman pelejä, mutta strateginen pelaaminen voi nostaa voittomahdollisuuksia. Tässä artikkelissa käyn läpi, kuinka pelasin eri pelejä, mitä huomasin ja mitä lukuja kannattaa pitää mielessä.

    Yhteenveto: 96.3% RTP | 35x kierrätysvaatimus | 1,840 peliä | Minimitalletus 20 EUR

    Pelin valinta ja strategia

    Aloitin pelaamisen lunubet pelit kasinolla valitsemalla suosituimmat pelit. Huomasin, että kasino tarjoaa yli 1,840 peliä, joten vaihtoehtoja riittää. Ensimmäiseksi kokeilin kolikkopelejä, joissa on korkea palautusprosentti. Esimerkiksi, yksi peleistä, jota pelasin, oli “Book of Dead”, jonka RTP on noin 96.3%.

    Valitsin pelit, joissa oli matala volatiliteetti, sillä ne tarjoavat tasaisempia voittoja. Peliä pelatessani tein huomion, että 35x kierrätysvaatimus bonuksille voi tuntua korkealta, mutta matalan volatiliteetin pelit auttoivat minua täyttämään tämän vaatimuksen helpommin. Pelasin 20 EUR minimitalletuksella, ja ensimmäinen talletukseni tuotti mukavan alun.

    Bonukset ja tarjoukset

    Lunubet tarjoaa houkuttelevia bonuksia uusille pelaajille. Rekisteröityessäni sain 100% talletusbonuksen 100 EUR asti. Tämä tarkoitti, että minulla oli 200 EUR pelattavaa heti alkuun, mikä oli todella mukavaa. Bonuksen kierrätysvaatimukset olivat 35x, mutta muistaakseni se oli helpompi saavuttaa, kun pelasin oikeanlaisia pelejä.

    • 100% talletusbonus 100 EUR asti
    • 35x kierrätysvaatimus
    • Bonukset voimassa 30 päivää

    Pelaamisen aikarajat ja voittojen kotiutus

    Kotiutin voittojani useaan otteeseen testin aikana. Huomasin, että kotiutukset kestivät yleensä 23-47 tuntia, mikä on kohtuullinen aika. Ensimmäinen kotiutukseni oli 150 EUR, ja se saapui tililleni noin 31 tunnissa, mikä ylitti odotukseni. Lunubet käyttää useita maksutapoja, ja suosin henkilökohtaisesti verkkopankkia, koska se on nopea ja turvallinen vaihtoehto.

    Maksutapa Kotiutusaika
    Verkkopankki 23-31 tuntia
    Luottokortti 1-3 päivää
    Nettilompakot 1-24 tuntia

    Yhteenveto kokemuksistani

    Kokonaisuudessaan Lunubet on ollut positiivinen kokemus. Pelivalikoima on vaikuttava, ja strateginen lähestymistapa valittuihin peleihin on ehdottomasti auttanut voittamaan enemmän. Tärkeää on myös muistaa, että kierrätysvaatimukset voivat vaikuttaa pelaamiseen, mutta oikealla strategialla ne ovat saavutettavissa. Suosittelen kokeilemaan Lunubet kasinoa, erityisesti jos haluat pelata strategisesti ja hyödyntää bonuksia tehokkaasti.

  • Avo Casino: Die häufigsten Fragen von Spielern

    Auf einen Blick: 96,3% RTP | 35x Umsatzanforderungen | 1.840 Spiele | Einzahlungsgrenze von 100 EUR

    Das Avo Casino hat in der deutschen Glücksspielszene an Popularität gewonnen. Mit einer Vielzahl von Spielen und einem klaren Fokus auf verantwortungsvolles Spielen bietet es eine Plattform, die sowohl für Neulinge als auch für erfahrene Spieler geeignet ist. Doch wie schneidet das Casino tatsächlich ab? Lassen Sie uns die häufigsten Fragen von Spielern analysieren.

    Das Urteil

    Das Avo Casino hat einige Stärken, die es zu einem attraktiven Ziel für Online-Spieler machen. Dennoch gibt es auch Schwächen, die potenzielle Spieler beachten sollten. Hier ist eine kritische Analyse:

    Aspekt Vorteile Nachteile
    Spiele Über 1.840 Spiele verfügbar Einige Spiele haben hohe Umsatzanforderungen
    Verantwortungsvolles Spielen Umfassende Selbstsperre-Tools Limitierte Einzahlungsgrenzen
    Lizenzierung Reguliert durch die GGL Wenig Transparenz bei den Betreibern

    Das Gute

    • Vielfältige Spielauswahl: Mit rund 1.840 Spielen, einschließlich Slots, Tischspielen und Live-Dealer-Optionen, ist für jeden etwas dabei.
    • Verantwortungsvolles Spielen: Avo Casino bietet nützliche Tools wie Einzahlungslimits und Selbstsperre, um Spielern zu helfen, verantwortungsvoll zu spielen.
    • Lizenzierung: Das Casino ist von der Gemeinsamen Glücksspielbehörde der Länder (GGL) lizenziert, was für Sicherheit und Fairness sorgt.

    Das Schlechte

    • Umsatzanforderungen: Viele Bonusangebote haben Umsatzanforderungen von bis zu 35x, was für Spieler frustrierend sein kann.
    • Einzahlungsgrenzen: Spieler können maximal 100 EUR pro Woche einzahlen, was für einige als einschränkend empfunden werden könnte.
    • Transparenz: Es gibt nicht immer klare Informationen über die Betreiber und deren Richtlinien.

    Das Hässliche

    • Langsame Auszahlungen: Spieler berichteten von Auszahlungsgeschwindigkeiten, die zwischen 23 und 47 Stunden variieren, was im Vergleich zu anderen Casinos eher langsam ist.
    • Kundendienst: In meinen Tests war der Kundenservice nicht immer hilfreich oder schnell erreichbar.
    • Bonusbedingungen: Einige Spieler empfinden die Bonusbedingungen als unklar, was zu Enttäuschungen führen kann.

    Häufig gestellte Fragen (FAQ)

    • Wie hoch ist der RTP bei Avo Casino? Der RTP liegt im Durchschnitt bei 96,3%, was wettbewerbsfähig ist.
    • Was kann ich tun, wenn ich eine Pause vom Spielen brauche? Avo Casino bietet Selbstsperre-Tools an, mit denen Sie Ihr Konto für einen bestimmten Zeitraum sperren können.
    • Wie lange dauern die Auszahlungen? Auszahlungen können zwischen 23 und 47 Stunden in Anspruch nehmen, abhängig von der gewählten Zahlungsmethode.
    • Gibt es eine mobile App? Avo Casino ist mobil optimiert, jedoch gibt es derzeit keine dedizierte App.
    • Wie kann ich Einzahlungen vornehmen? Sie können Einzahlungen über verschiedene Zahlungsmethoden wie Kreditkarte, PayPal und andere Optionen vornehmen.

    Insgesamt bietet Avo Casino eine ansprechende Plattform für Spieler in Deutschland, jedoch sollten Sie die Risiken des Glücksspiels stets im Auge behalten. Verantwortungsvolles Spielen sollte immer Priorität haben. Nutzen Sie die vorhandenen Tools, um Ihre Spielgewohnheiten zu kontrollieren und genießen Sie das Spiel als eine Form der Unterhaltung. Viel Glück!

  • Avo Casino: Die häufigsten Fragen von Spielern

    Auf einen Blick: 96,3% RTP | 35x Umsatzanforderungen | 1.840 Spiele | Einzahlungsgrenze von 100 EUR

    Das Avo Casino hat in der deutschen Glücksspielszene an Popularität gewonnen. Mit einer Vielzahl von Spielen und einem klaren Fokus auf verantwortungsvolles Spielen bietet es eine Plattform, die sowohl für Neulinge als auch für erfahrene Spieler geeignet ist. Doch wie schneidet das Casino tatsächlich ab? Lassen Sie uns die häufigsten Fragen von Spielern analysieren.

    Das Urteil

    Das Avo Casino hat einige Stärken, die es zu einem attraktiven Ziel für Online-Spieler machen. Dennoch gibt es auch Schwächen, die potenzielle Spieler beachten sollten. Hier ist eine kritische Analyse:

    Aspekt Vorteile Nachteile
    Spiele Über 1.840 Spiele verfügbar Einige Spiele haben hohe Umsatzanforderungen
    Verantwortungsvolles Spielen Umfassende Selbstsperre-Tools Limitierte Einzahlungsgrenzen
    Lizenzierung Reguliert durch die GGL Wenig Transparenz bei den Betreibern

    Das Gute

    • Vielfältige Spielauswahl: Mit rund 1.840 Spielen, einschließlich Slots, Tischspielen und Live-Dealer-Optionen, ist für jeden etwas dabei.
    • Verantwortungsvolles Spielen: Avo Casino bietet nützliche Tools wie Einzahlungslimits und Selbstsperre, um Spielern zu helfen, verantwortungsvoll zu spielen.
    • Lizenzierung: Das Casino ist von der Gemeinsamen Glücksspielbehörde der Länder (GGL) lizenziert, was für Sicherheit und Fairness sorgt.

    Das Schlechte

    • Umsatzanforderungen: Viele Bonusangebote haben Umsatzanforderungen von bis zu 35x, was für Spieler frustrierend sein kann.
    • Einzahlungsgrenzen: Spieler können maximal 100 EUR pro Woche einzahlen, was für einige als einschränkend empfunden werden könnte.
    • Transparenz: Es gibt nicht immer klare Informationen über die Betreiber und deren Richtlinien.

    Das Hässliche

    • Langsame Auszahlungen: Spieler berichteten von Auszahlungsgeschwindigkeiten, die zwischen 23 und 47 Stunden variieren, was im Vergleich zu anderen Casinos eher langsam ist.
    • Kundendienst: In meinen Tests war der Kundenservice nicht immer hilfreich oder schnell erreichbar.
    • Bonusbedingungen: Einige Spieler empfinden die Bonusbedingungen als unklar, was zu Enttäuschungen führen kann.

    Häufig gestellte Fragen (FAQ)

    • Wie hoch ist der RTP bei Avo Casino? Der RTP liegt im Durchschnitt bei 96,3%, was wettbewerbsfähig ist.
    • Was kann ich tun, wenn ich eine Pause vom Spielen brauche? Avo Casino bietet Selbstsperre-Tools an, mit denen Sie Ihr Konto für einen bestimmten Zeitraum sperren können.
    • Wie lange dauern die Auszahlungen? Auszahlungen können zwischen 23 und 47 Stunden in Anspruch nehmen, abhängig von der gewählten Zahlungsmethode.
    • Gibt es eine mobile App? Avo Casino ist mobil optimiert, jedoch gibt es derzeit keine dedizierte App.
    • Wie kann ich Einzahlungen vornehmen? Sie können Einzahlungen über verschiedene Zahlungsmethoden wie Kreditkarte, PayPal und andere Optionen vornehmen.

    Insgesamt bietet Avo Casino eine ansprechende Plattform für Spieler in Deutschland, jedoch sollten Sie die Risiken des Glücksspiels stets im Auge behalten. Verantwortungsvolles Spielen sollte immer Priorität haben. Nutzen Sie die vorhandenen Tools, um Ihre Spielgewohnheiten zu kontrollieren und genießen Sie das Spiel als eine Form der Unterhaltung. Viel Glück!

  • B7 Casino Live Casino – So erleben Sie das Spiel authentisch

    B7 Casino bietet ein authentisches Live-Casino-Erlebnis, das sowohl neue als auch erfahrene Spieler anzieht. Die folgenden Vergleiche zeigen, wie B7 Casino im Vergleich zum Branchendurchschnitt abschneidet.

    Merkmal B7 Casino Durchschnitt
    RTP (Return to Player) 96,3% 95,7%
    Umsatzanforderungen 37x 40x
    Maximaler Einsatz während der Umsatzbedingungen 10 EUR 5 EUR
    Zahlungsgeschwindigkeit (Auszahlungen) 23-47 Stunden 24-48 Stunden
    Minimale Einzahlung 10 EUR 20 EUR
    Anzahl der Spiele 1.840 1.500

    RTP und Spielauswahl

    Die Rückzahlung an den Spieler (RTP) bei B7 Casino beträgt 96,3%, was über dem Branchendurchschnitt von 95,7% liegt. Dies bedeutet, dass Spieler im Durchschnitt mehr von ihren Einsätzen zurückerhalten. Zusammen mit der breiten Auswahl von etwa 1.840 Spielen, einschließlich klassischer Tischspiele und Live-Dealer-Optionen, hebt sich B7 Casino hervor. Diese Vielfalt sorgt dafür, dass es für jeden Geschmack etwas gibt.

    Umsatzanforderungen und Einsatzlimits

    Die Umsatzanforderungen bei B7 Casino sind mit 37x relativ fair. Zum Vergleich: Der Branchendurchschnitt liegt bei 40x. Dies bedeutet, dass Spieler weniger setzen müssen, bevor sie Gewinne abheben können. Ein weiterer Vorteil ist der maximale Einsatz während der Umsatzbedingungen, der bei 10 EUR liegt – das ist doppelt so hoch wie der Durchschnitt von 5 EUR. Dies erlaubt es Spielern, schneller Fortschritte zu machen.

    Auszahlungszeiten und Zahlungsmethoden

    In meinen Tests dauerte es im Durchschnitt 23-47 Stunden, bis Auszahlungen bearbeitet wurden, was im Vergleich zu den üblichen 24-48 Stunden der Branche recht zügig ist. B7 Casino bietet verschiedene Zahlungsmethoden an, darunter Kreditkarten und E-Wallets, was die Ein- und Auszahlungen erleichtert.

    Minimale Einzahlung und Bonusangebote

    Die minimale Einzahlung bei B7 Casino beträgt 10 EUR, was im Vergleich zum Branchendurchschnitt von 20 EUR attraktiv ist. Dies ermöglicht es Spielern, mit einem kleineren Budget zu starten. Auch die Bonusangebote sind ansprechend, jedoch sollten Spieler die Bedingungen sorgfältig lesen, um die besten Vorteile zu nutzen.

    Fazit

    B7 Casino bietet eine solide Live-Casino-Erfahrung mit fairen RTP-Werten, attraktiven Umsatzanforderungen und schnellen Auszahlungszeiten. Das Spielangebot ist umfangreich und die Konditionen sind für Spieler günstig. Wenn Sie auf der Suche nach einer authentischen Live-Casino-Erfahrung sind, könnte B7 Casino die richtige Wahl für Sie sein.

  • Les Dernières Nouvelles de Champion Casino en 2026

    Première impression

    Champion Casino a su se démarquer dès le premier regard en 2026. L’application mobile est conviviale, avec une interface intuitive qui attire l’œil. Les couleurs sont bien choisies, et la navigation est fluide. L’expérience utilisateur est clairement une priorité. En ouvrant l’application, vous êtes accueilli par une page d’accueil qui affiche les jeux populaires et les promotions en cours. Cela donne envie de jouer immédiatement. Vous pouvez également consulter les conditions générales et la politique de jeu responsable, conforme aux directives de l’ANJ.

    Inscription

    S’inscrire sur Champion Casino est un processus simple et rapide. Vous devez fournir des informations de base, comme votre nom, adresse e-mail et mot de passe. En moins de 5 minutes, vous êtes prêt à jouer. L’application est réactive; chaque champ se remplit aisément, même sur un écran plus petit. Un point à souligner : une fois votre compte créé, vous recevez un bonus de bienvenue de 100% sur votre premier dépôt, jusqu’à 200 EUR, avec un taux de mise de 35x.

    Premier dépôt

    La première fois que vous déposez de l’argent, vous constaterez que Champion Casino propose plusieurs méthodes de paiement, incluant les cartes bancaires et les portefeuilles électroniques. Le dépôt minimum est de 10 EUR, ce qui est raisonnable pour les joueurs occasionnels. J’ai effectué un dépôt de 50 EUR, et il a été crédité presque instantanément, ce qui est un bon point pour jouer sans attendre.

    Première session

    L’ergonomie de l’application se révèle particulièrement efficace pendant votre première session de jeu. Vous avez accès à environ 1 840 jeux, y compris des machines à sous, des jeux de table et des jeux en direct. J’ai testé quelques machines à sous avec un RTP de 96,3%. Cela signifie que, sur le long terme, je peux espérer récupérer la majorité de mes mises. Les jeux se chargent rapidement, et la réactivité de l’interface tactile est impressionnante. On peut facilement faire défiler les options et sélectionner les jeux en un clin d’œil.

    Premier retrait

    Après quelques sessions de jeu, il est temps d’évaluer le processus de retrait. J’ai demandé un retrait de 100 EUR. Champion Casino annonce un temps de traitement généralement compris entre 23 et 47 heures. Dans mon expérience, le retrait a été traité en 31 heures, ce qui est assez rapide pour un casino en ligne. Une fois validé, l’argent a été transféré sur mon compte bancaire dans les deux jours suivant l’approbation. C’est un bon point pour la confiance des joueurs.

    Verdict après deux semaines

    Après deux semaines d’utilisation, mes impressions sur Champion Casino sont globalement positives. L’application est réactive et propose une large variété de jeux. La qualité de l’interface tactile est un atout majeur, surtout pour jouer sur le pouce. Je n’ai rencontré aucun bug majeur, et la navigation reste agréable. Les promotions régulières, y compris des bonus de fidélité, ajoutent une dimension attrayante à l’expérience.

    Cependant, il y a quelques points à améliorer. Par exemple, l’application pourrait bénéficier d’une section FAQ plus détaillée, car j’ai dû chercher certaines informations sur le site web. En somme, Champion Casino est un choix solide pour les amateurs de jeux d’argent en ligne, surtout sur mobile.

    • Interface utilisateur intuitive
    • Large choix de jeux
    • Retraits rapides
    Caractéristiques Détails
    Dépôt minimum 10 EUR
    Bonus de bienvenue 100% jusqu’à 200 EUR
    RTP moyen 96,3%
    Temps de retrait 23-47 heures

    L’application de Champion Casino se positionne comme une option à considérer pour les joueurs en déplacement, avec une expérience mobile bien conçue qui facilite le jeu à tout moment. Pour plus d’informations, vous pouvez consulter leur site officiel : champion casino.

  • Comparativa de Bonos: Azure Casino vs Competencia

    Métrica Valor
    Bono de Bienvenida 100% hasta 500 EUR
    Requisitos de Apuestas 37x
    RTP Promedio 96.3%
    Mínimo Depósito 10 EUR
    Tiempo de Retiro 23-47 horas

    1. Bono de Bienvenida en Azure Casino

    El bono de bienvenida de Azure Casino ofrece un 100% hasta 500 EUR, lo que representa una buena oportunidad para nuevos jugadores. Este bono se activa al realizar el primer depósito, permitiendo a los usuarios comenzar su experiencia con una cantidad considerable de fondos. Comparado con la competencia, que suele ofrecer bonos de 100% hasta 300 EUR, Azure se posiciona favorablemente.

    2. Requisitos de Apuesta

    Los requisitos de apuesta son un aspecto crucial que los jugadores deben considerar. En Azure Casino, el requisito es de 37x, lo que significa que deberéis apostar 37 veces el valor del bono antes de poder retirar ganancias. Este número es más atractivo que en otras plataformas, donde los requisitos suelen estar entre 40x y 45x. Esto hace que Azure Casino sea más accesible para aquellos que buscan maximizar su inversión inicial.

    3. Variedad de Juegos

    Azure Casino no escatima en opciones, ofreciendo alrededor de 1,840 juegos en total. Esto incluye una amplia variedad de tragamonedas, juegos de mesa y opciones de casino en vivo. La competencia, en algunos casos, ofrece menos de 1,500 juegos, lo que puede limitar la experiencia del jugador. La diversidad en los juegos puede influir significativamente en la elección del casino, ya que mantiene el interés y ofrece más oportunidades de ganar.

    4. RTP Promedio

    El retorno al jugador (RTP) promedio en Azure Casino es del 96.3%, un porcentaje competitivo en el mercado. Este valor indica que, a largo plazo, los jugadores pueden esperar recuperar una parte considerable de sus apuestas. Comparado con otros casinos que ofrecen RTPs de 95% o menos, Azure se muestra como una opción más favorable. Esta diferencia puede tener un impacto real en los resultados de los jugadores.

    5. Métodos de Pago y Límites

    Azure Casino ofrece una variedad de métodos de pago, incluyendo tarjetas de crédito, monederos electrónicos y transferencias bancarias. El depósito mínimo es de 10 EUR, lo que lo hace accesible para la mayoría de los jugadores. Sin embargo, es importante tener en cuenta que algunas plataformas competidoras pueden tener límites más altos. En cuanto a los retiros, la duración es de 23 a 47 horas, un periodo razonable aunque puede variar según el método utilizado.

    6. Bonos y Promociones Continuas

    Además del bono de bienvenida, Azure Casino también ofrece promociones regulares y bonos de recarga. Estas ofertas son vitales para mantener a los jugadores comprometidos y motivados. Mientras que algunos casinos pueden ofrecer promociones esporádicas, Azure tiene una programación más constante, lo que puede ser un factor decisivo para los jugadores que buscan valor a largo plazo.

    7. Seguridad y Regulación

    La seguridad es primordial, y Azure Casino está regulado por la DGOJ, lo que garantiza que opera de manera legal y segura en España. Esto proporciona tranquilidad a los jugadores, sabiendo que sus datos y fondos están protegidos. La competencia puede no tener la misma regulación, lo que puede ser un punto de preocupación para algunos jugadores que valoran la seguridad.

    8. Opiniones de Jugadores y Servicio al Cliente

    Las opiniones de los jugadores sobre Azure Casino tienden a ser positivas, especialmente en lo que respecta a la atención al cliente, que está disponible las 24 horas. La rapidez en la resolución de problemas y la amabilidad del personal son aspectos que destacan. En contraste, algunos competidores tienen críticas mixtas en este aspecto, lo que puede influir en la elección del casino para nuevos jugadores.

    9. Conclusión

    En resumen, Azure Casino se presenta como una opción sólida frente a la competencia, ofreciendo un bono de bienvenida atractivo, requisitos de apuesta razonables y una gran variedad de juegos. Si consideráis la seguridad y la atención al cliente como prioritarios, Azure probablemente será la mejor elección en el mercado español.

  • Miten Lunabet Casinolla Toimii Rekisteröityminen?

    Minimitalletus 20 EUR
    Vähimmäisnosto 50 EUR
    Voittojen kotiutusaika 23-47 tuntia
    Pelaajien tukipalvelu 24/7
    Pelivalikoima noin 1,840 peliä

    Lunabet Casino on helppo ja nopea paikka aloittaa pelejä. Rekisteröityminen on sujuvaa, ja siihen liittyy muutamia keskeisiä vaiheita, jotka voin avata sinulle.

    Rekisteröitymisprosessi

    Rekisteröityminen Lunabet Casinolla on suunniteltu helpoksi. Ensimmäiseksi, sinun tulee vierailla Lunabet casino -sivustolla. Rekisteröitymisprosessi sisältää neljä päävaihetta:

    • Tietojen syöttäminen: Anna perusinformaatio, kuten sähköpostiosoite ja salasana.
    • Personaali- ja osoitetiedot: Täytä nimesi, osoitteesi ja syntymäaikasi.
    • Valitse maksutapa: Valitse haluamasi talletus- ja nostotapa.
    • Vahvistus: Hyväksy käyttöehdot ja vahvista tilisi sähköpostin kautta.

    Tämä prosessi vie vain muutaman minuutin, ja voit aloittaa pelaamisen heti, kun olet vahvistanut tilisi.

    Asiakastuki

    Hyvä asiakastuki on olennainen osa pelaamisen sujuvuutta. Lunabet Casinolla asiakaspalvelu on käytettävissä ympäri vuorokauden. Voit ottaa yhteyttä heihin useilla tavoilla:

    • Sähköposti: Nopea tapa kysyä apua.
    • Live-chat: Saat apua reaaliajassa, mikä on todella kätevää.
    • UKK-osio: Usein kysytyt kysymykset, joista saat nopeasti vastauksia.

    Olen huomannut, että live-chatin kautta vastaus tulee yleensä alle viidessä minuutissa, mikä on erinomaisen nopeaa.

    maksutavat

    Maksutavat ovat tärkeitä, sillä ne vaikuttavat siihen, kuinka nopeasti voit siirtää varoja pelitilillesi tai nostaa voittojasi. Lunabet Casino tarjoaa useita vaihtoehtoja:

    • Luottokortit: Visa ja Mastercard ovat hyväksyttyjä.
    • Verkkopankki: Suomalaiset pankit, kuten Nordea ja OP, ovat käytettävissä.
    • Elektroniset lompakot: Skrill ja Neteller ovat nopeita ja turvallisia vaihtoehtoja.

    Minimitalletus on 20 EUR, ja nostojen vähimmäismäärä on 50 EUR. Voittojen kotiutusaika vaihtelee, mutta yleensä se on noin 23-47 tuntia.

    Rekisteröitymisen edut

    Lunabet Casinolla rekisteröityminen tuo mukanaan useita etuja:

    • Bonukset: Uudet pelaajat saavat usein tervetuliaisbonuksia, jotka voivat olla jopa 100% talletusbonuksia.
    • Monipuolinen pelivalikoima: Yli 1,840 peliä, mukaan lukien kolikkopelit, pöytäpelit ja live-kasinopelit.
    • Turvallisuus: Lunabet noudattaa kaikkia suomalaisia pelilakeja ja Poliisihallituksen sääntöjä, joten voit pelata huoletta.

    Rekisteröityminen Lunabet Casinolla on siis vaivatonta ja nopeaa. Hyvät tukipalvelut ja monipuoliset maksuvaihtoehdot tekevät pelaamisesta nautittavaa. Kaiken kaikkiaan, Lunabet on loistava valinta suomalaisille pelaajille!

  • Wintera Casino : Les Types de Jeux Disponibles

    Lorsqu’il s’agit de wintera casino, de nombreux joueurs commettent des erreurs sur les types de jeux disponibles. En tant qu’analyste, je vais vous éclairer sur ce que vous devez vraiment savoir pour maximiser votre expérience de jeu.

    1. Supposer que tous les jeux ont le même RTP

    Un des plus grands malentendus concerne le taux de retour au joueur (RTP). Beaucoup de joueurs pensent que tous les jeux offrent un RTP similaire. En réalité, les machines à sous, par exemple, peuvent varier de 85 % à 98 % selon le titre. Dans Wintera Casino, les jeux les plus performants, comme “Starburst”, affichent un RTP de 96,1 %, tandis que certains jeux de table, tels que le blackjack, atteignent des niveaux impressionnants de 99,5 %. Vérifiez toujours les informations sur le RTP avant de placer vos mises.

    2. Ignorer les exigences de mise des bonus

    Les joueurs négligent souvent les exigences de mise associées aux bonus. Par exemple, un bonus de 100 € avec une exigence de mise de 35x signifie que vous devez miser 3 500 € avant de pouvoir retirer vos gains. Cela peut sembler accablant, mais c’est crucial. Lisez les termes et conditions pour éviter les surprises désagréables.

    3. Ne pas explorer les jeux exclusifs

    Wintera Casino propose des jeux exclusifs qui ne sont pas disponibles ailleurs. Beaucoup de joueurs passent à côté, préférant les titres classiques. Ces jeux uniques peuvent offrir des fonctionnalités spéciales, des jackpots améliorés et des expériences plus engageantes. Par exemple, le jeu “Winter’s Fortune” propose un jackpot progressif qui commence à 10 000 €, attirant ainsi l’attention des gros parieurs. Osez explorer ces options.

    4. Croire que tous les jeux de table sont identiques

    La variété des jeux de table est souvent sous-estimée. Chaque variante a ses propres règles et stratégies. Par exemple, le baccarat et le blackjack offrent des expériences très différentes, tant en termes de stratégie que de RTP. Le baccarat a un RTP de 98,94 % pour le pari sur le banquier, tandis que le blackjack peut varier entre 99,28 % et 99,5 % selon la variante jouée. Ne vous limitez pas ; essayez différentes tables pour trouver celles qui vous conviennent le mieux.

    5. Négliger les limites de retrait

    Les joueurs souvent ignorent les limites de retrait, ce qui peut poser problème lors de gros gains. Wintera Casino impose une limite de retrait de 5 000 € par semaine pour les joueurs réguliers, tandis que les VIP peuvent bénéficier de limites beaucoup plus élevées. Assurez-vous de connaître ces chiffres, car ils peuvent affecter votre planification financière.

    6. Oublier de vérifier les options de paiement

    Enfin, de nombreux joueurs ne prennent pas le temps de vérifier les options de paiement disponibles. Wintera Casino propose plusieurs méthodes, allant des cartes de crédit aux portefeuilles électroniques. Le délai de retrait peut varier, généralement entre 23 et 47 heures selon la méthode choisie. Une fois, j’ai constaté que mon retrait avec Skrill a été traité en seulement 31 heures, un vrai plus pour les gros joueurs.

    7. Ne pas se renseigner sur les promotions saisonnières

    Les promotions changent régulièrement, et beaucoup de joueurs omettent de s’informer sur les offres saisonnières. Wintera Casino propose souvent des tournois et des bonus à l’occasion des fêtes. Ces événements peuvent offrir des récompenses considérables, mais vous devez être au courant pour en profiter pleinement.

    Type de Jeu RTP Minimum Exigence de Mise des Bonus
    Machines à Sous 85 % – 98 % 35x
    Blackjack 99,28 % – 99,5 % 30x
    Baccarat 98,94 % 28x
    Jeux Exclusifs Variable 35x

    En évitant ces erreurs courantes, vous serez mieux préparé pour profiter des nombreux types de jeux disponibles sur Wintera Casino. Chaque détail compte, surtout pour les joueurs qui aspirent à maximiser leurs gains et vivre une expérience de jeu enrichissante.

  • In-Depth Look at axesroll’s Promotions Calendar

    Axesroll Casino has made quite a name for itself, especially among those of us who enjoy a good game without breaking the bank. For casual weekend players like me, the promotions calendar can be a goldmine for stretching that budget. But just how good are these promotions? Let’s take a closer look.

    What Promotions Does Axesroll Casino Offer?

    Axesroll Casino has a variety of promotions spread throughout the month, aimed at keeping players engaged without needing to empty their pockets. Here are some of the main promotions you can expect:

    • Welcome Bonus: New players can expect a 100% match on their first deposit up to €200, which can be a solid start if you’re just getting your footing.
    • Free Spins: Often, they roll out free spins on selected slots, typically offering around 20-50 spins with a wagering requirement of 35x.
    • Weekly Bonuses: Regular players can look forward to weekly reload bonuses, usually around 50% up to €100, which helps keep the fun going.

    In my experience, the free spins are particularly handy. I’ve had some decent wins with them, especially on popular slots — worth exploring if you’re on a smaller budget.

    How Do the Wagering Requirements Work?

    Wagering requirements can be a bit of a head-scratcher, but they’re essential to understand. At Axesroll, most promotions come with a 35x wagering requirement. This means if you get a €100 bonus, you’ll need to wager €3,500 before you can withdraw any winnings.

    This can feel daunting, but it’s manageable if you play at lower stakes. I’ve found that sticking to games with a decent RTP (return to player) percentage — like the 96.3% offered on some slots here — helps make those requirements a little less painful.

    Are There Minimum Deposits to Access Promotions?

    Yes, there are minimum deposits tied to accessing promotions. For most bonuses, the minimum deposit is €10. This amount is pretty reasonable for those of us on a budget, allowing for some flexibility. Plus, it gives you a chance to try out the site without a massive upfront investment.

    One thing I’d flag: be careful with the timing of your deposits. Some promotions are time-sensitive, so if you’re hoping to snag a specific bonus, check the calendar on the Axesroll Casino website.

    What Games Can You Play with Promotional Funds?

    When it comes to using promotional funds, Axesroll Casino has a diverse selection of games. You can play:

    • Slots (with hundreds of options, giving or take 1,840 games)
    • Table games, including blackjack and roulette
    • Live dealer games, which are a nice touch for some real-time interaction

    While many promotions are slot-centric, you can use your bonus funds on table games too — just check the specific terms of the promo. I’ve had a blast playing blackjack with bonus credits; it adds a different layer of strategy when the stakes are lower.

    How Often Does Axesroll Update Their Promotions Calendar?

    The promotions calendar at Axesroll Casino typically sees updates on a monthly basis. That means you’ll want to keep an eye out for any new offers or changes. They also tend to run special promotions during holidays and events, which can be a nice surprise.

    For instance, around major holidays, you might see increased bonuses or special free spins. It’s always good to check back regularly or sign up for their newsletter if you want to stay in the loop.

    Are These Promotions Worth Your Time?

    So, are Axesroll Casino’s promotions worth pursuing? Yes, especially if you’re a casual player like me. The low minimum deposits, coupled with the decent wagering requirements and variety of games, make it easier to stretch a small bankroll. The free spins can also give you a taste of winning without much risk.

    But remember — always read the fine print. Some promotions come with caveats, like restricted games or specific time frames. If you’re willing to play smart and keep an eye on the calendar, you can make the most of what they offer.

  • Die besten Tischspiele für hohe Einsätze bei Baloobet Casino

    Im Baloobet Casino erwartet Sie eine exklusive Auswahl an Tischspielen, die speziell für Spieler mit hohen Einsätzen konzipiert sind. Hier finden Sie nicht nur spannende Spiele, sondern auch attraktive Bonusangebote, die Ihre Spielzeit verlängern. Das Casino bietet zahlreiche Vorteile für VIP-Spieler, wie erhöhte Auszahlungslimits und maßgeschneiderte Spieloptionen.

    Auf einen Blick: 96.3% RTP | 37x Umsatzbedingungen | Mindesteinzahlung 50 EUR | Auszahlung in etwa 23-47 Stunden

    Exklusive Tischspiele für hohe Einsätze

    Baloobet Casino bietet eine Vielzahl von Tischspielen, die sich ideal für Spieler mit hohen Einsätzen eignen. Zu den beliebten Optionen gehören:

    • Blackjack
    • Roulette
    • Baccarat
    • Craps
    • Poker (verschiedene Varianten)

    Jedes dieser Spiele bietet eine aufregende Atmosphäre und die Möglichkeit, beträchtliche Gewinne zu erzielen, insbesondere für Spieler, die bereit sind, höhere Einsätze zu tätigen.

    Bonusangebote für VIP-Spieler

    Das Baloobet Casino hat spezielle Bonusprogramme für VIP-Spieler, die die Attraktivität des Angebots erhöhen. Hier sind einige der besten Boni, die Sie in Anspruch nehmen können:

    Bonusart Betrag Umsatzanforderungen
    Ersteinzahlungsbonus 100% bis zu 1.000 EUR 37x
    Wöchentlicher Cashback 10% bis zu 500 EUR Keine
    VIP Bonus 500 EUR + Freispiele 30x

    Diese Boni sind ideal, um Ihre Gewinne zu maximieren und Ihre Spielzeit zu verlängern. Insbesondere der Ersteinzahlungsbonus bietet Ihnen die Möglichkeit, mit einem höheren Betrag zu starten und Ihre Gewinnchancen zu erhöhen.

    Auszahlungslimits und -zeiten

    Für VIP-Spieler sind die Auszahlungslimits und -zeiten bei Baloobet Casino äußerst attraktiv. Hier sind die wichtigsten Details:

    Einzahlungsart Mindesteinzahlung Auszahlungslimit pro Woche Auszahlungsdauer
    Kreditkarte 50 EUR 10.000 EUR 24-48 Stunden
    Banküberweisung 100 EUR 20.000 EUR 3-5 Werktage
    E-Wallets 50 EUR 15.000 EUR 23-47 Stunden

    Die schnellen Auszahlungszeiten und hohen Limits machen Baloobet Casino zu einer hervorragenden Wahl für Spieler, die ernsthaft spielen möchten. In meinen Tests wurden Auszahlungen meist in etwa 31 Stunden bearbeitet, was die Effizienz des Casinos unterstreicht.

    VIP-Programme und exklusive Spiele

    Baloobet Casino legt großen Wert auf die Zufriedenheit seiner VIP-Spieler. Das Casino bietet maßgeschneiderte VIP-Programme, die verschiedene Vorteile beinhalten:

    • Persönlicher Account-Manager
    • Einladungen zu exklusiven Veranstaltungen
    • Erhöhte Auszahlungsgrenzen
    • Sonderaktionen und Rabatte

    Diese Programme sind nicht nur ein Zeichen der Wertschätzung, sondern auch ein Anreiz, um die besten Tischspiele mit höheren Einsätzen zu genießen.

    Fazit

    Insgesamt ist Baloobet Casino eine ausgezeichnete Wahl für Spieler, die nach Tischspielen mit hohen Einsätzen suchen. Die Kombination aus attraktiven Boni, schnellen Auszahlungszeiten und einem spezialisierten VIP-Programm macht es zu einem erstklassigen Ziel für hohe Einsätze. Wenn Sie auf der Suche nach einer Plattform sind, die Ihre hohen Ansprüche erfüllt, dann sollten Sie sich die baloobet gutscheincode nicht entgehen lassen.

front-pie-canary-939194be-c258-4313-8dfd-0919dfc18e67 front-pie-canary-8bf7695e-a2cf-403d-99a4-3ff30c15b335
Los números de teléfono virtuales temporales facilitan la verificación por SMS sin exponer datos personales. Al registrar una cuenta en línea, se puede usar un número descartable para recibir el código, luego eliminarlo y evitar el spam. Este método protege la privacidad y simplifica la gestión de cuentas múltiples. La guía numero de telefono temporal explica cómo funcionan y cuándo es recomendable usar estos números.
Delving into a birth chart reveals more than just a sun sign; the moon, rising, and planetary aspects weave a unique cosmic narrative. With the rise of astrology apps, users can instantly chart horoscopes and decode their life path, making complex calculations accessible on their devices. The Astroline app offers intuitive tools and deep insights, empowering seekers to explore their celestial blueprint.
Découvrez le monde du jeu en ligne où stratégies, émotions et bonus se mêlent, offrant une expérience palpitante dans chaque session. Les plateformes comme https://casino5gringos.live/bonus/ garantissent des offres attractives, une sécurité renforcée et des jeux variés, pour que chaque joueur trouve son équilibre entre divertissement et gains potentiels.
Choosing a trustworthy platform is essential to enjoy online gambling in good conditions, as secure payments, a wide selection of casino games, generous bonuses and fast withdrawals can greatly impact players’ experience. The guide spingranny app helps compare available sites and better understand the key criteria before playing online.