/** * 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 2226

Blog

  • Jakie są opcje kasy w Kalokalo Casino?

    Kalokalo Casino oferuje różnorodne opcje kasowe, które pozwalają graczom na swobodne zarządzanie swoimi funduszami. Minimalna kwota depozytu wynosi 10 PLN, co czyni to miejsce dostępnym dla szerokiego grona użytkowników. Czas realizacji wypłat w Kalokalo jest konkurencyjny, wynoszący zazwyczaj od 23 do 47 godzin. Co więcej, RTP (zwrot do gracza) w grach wynosi średnio 96,3%, co jest korzystne dla graczy. Warto również zauważyć, że w Kalokalo Casino dostępne są różne metody płatności, co zwiększa elastyczność dla użytkowników.

    Metody płatności

    Kalokalo Casino udostępnia szereg metod płatności, które są zarówno wygodne, jak i bezpieczne. Poniżej przedstawiamy szczegóły dotyczące najpopularniejszych opcji.

    Metoda płatności Minimalny depozyt Czas realizacji wypłaty
    Przelew bankowy 10 PLN 1-3 dni robocze
    Karta kredytowa/debetowa 10 PLN 23-47 godzin
    Portfele elektroniczne (np. Skrill, Neteller) 10 PLN 15-30 minut
    Bitcoin 10 PLN do 1 godziny

    Bonusy powitalne i promocje

    Kalokalo Casino nie zapomina o swoich nowych graczach, oferując atrakcyjne bonusy powitalne. Obecnie dostępny jest bonus powitalny, który wynosi 200% do 1500 PLN przy pierwszym depozycie. Wymagania dotyczące obrotu wynoszą 37x, co jest dość standardowe w branży. Oto szczegóły dotyczące bonusów:

    Rodzaj bonusu Kwota Wymagania obrotu
    Bonus powitalny 200% do 1500 PLN 37x
    Bonus za drugi depozyt 100% do 1000 PLN 30x
    Bonus tygodniowy 50% do 500 PLN 25x

    Bezpieczeństwo i regulacje

    Kalokalo Casino przestrzega polskich regulacji dotyczących hazardu, co zapewnia graczom bezpieczeństwo ich danych i transakcji. Licencja wydana przez Ministerstwo Finansów umożliwia legalne prowadzenie działalności hazardowej w Polsce. Gracze mogą być pewni, że ich depozyty są chronione, a gra odbywa się w uczciwy sposób.

    Wnioski

    Kalokalo Casino oferuje różnorodne opcje kasowe, które są zarówno dostępne, jak i bezpieczne. Z minimalnym depozytem wynoszącym 10 PLN i sprawnym czasem wypłat, gracze mają możliwość komfortowego zarządzania swoimi funduszami. Ciekawe bonusy powitalne oraz promocje sprawiają, że warto rozważyć to miejsce jako jedną z opcji na polskim rynku hazardowym. Więcej szczegółów na temat oferty można znaleźć w recenzji kalokalo.

  • Voiko Winwin Casinolla Pelata Ilman Bonusta?

    Olen viime aikoina tutustunut Winwin Casinon tarjoamiin pelivaihtoehtoihin ja erityisesti siihen, voiko siellä pelata ilman bonuksia. Tässä artikkelissa jaan kokemukseni, mitä pelit tarjoavat ja mitä tämä tarkoittaa pelaajille.

    Yhteenveto: 1 840 peliä | 96.3% RTP | 35x kierrätysvaatimus | Minimitalletus 10 EUR | 23-47 tuntia kotiutusaika.

    Pelaaminen ilman bonuksia

    Pelaaminen ilman bonuksia voi tuntua houkuttelevalta vaihtoehdolta, erityisesti niille, jotka haluavat välttää kierrätysvaatimuksia. Winwin Casinolla on mahdollista pelata ilman bonuksia, mikä tarkoittaa, että voit nauttia peleistä heti ilman ehtoja. Tämä vaikutti kokemukseeni merkittävästi.

    Tein ensimmäisen talletukseni 10 EUR:lla, ja pääsin heti käsiksi 1 840 eri peliin. Kun aloin pelaamaan, huomasin, että ilman bonuksia voit keskittyä täysin itse pelin nautintoon ilman ylimääräisiä vaatimuksia.

    Pelivalikoima ja volatiliteetti

    Winwin Casinolla on monipuolinen pelivalikoima, johon kuuluu useita eri pelityyppejä. Testasin erityisesti kolikkopelejä, pöytäpelejä ja live-kasinoa. Huomasin, että pelien volatiliteetti vaihteli, mikä teki pelaamisesta entistä mielenkiintoisempaa.

    • Kolikkopelit: Valikoima sisältää sekä matalan että korkean volatiliteetin pelejä. Esimerkiksi “Gonzo’s Quest” on matalan volatiliteetin peli, kun taas “Book of Dead” on korkean volatiliteetin vaihtoehto.
    • Pöytäpelit: Tarjolla on useita versioita klassikkopeleistä, kuten blackjack ja ruletti. Pelasin useita kierroksia blackjackia, ja huomasin, että voittokertoimet olivat kohtuulliset.
    • Live-kasino: Live-jakajat toivat lisäjännitystä pelaamiseen, ja koin tämän osion erityisen vetovoimaiseksi.

    Kierrätysvaatimukset ja kotiutusaika

    Ilman bonuksia pelatessa kierrätysvaatimuksia ei ole, mikä on ehdottomasti etu. Tämä tarkoittaa, että voit kotiuttaa voitot heti, kun olet saavuttanut minimikotiutussumman. Kotiutukseni prosessoitiin noin 31 tunnissa, mikä oli mielestäni kohtuullinen aika.

    Ominaisuus Ilman bonusta
    Kierrätysvaatimus Ei
    Kotiutusaika 23-47 tuntia
    Minimitalletus 10 EUR
    Voittojen kotiutus Mahdollista heti

    Yhteenveto kokemuksista

    Yhteenvetona voin todeta, että Winwin Casinolla pelaaminen ilman bonuksia on mahdollista ja jopa suositeltavaa, jos arvostat pelien puhtautta ilman kierrätysvaatimuksia. Huomasin, että pelit olivat laadukkaita ja RTP-prosentit kilpailukykyisiä.

    Mikäli haluat pelata ilman bonuksia, suosittelen tutustumaan winwin kasinoon. Pelivalikoima on laaja, ja voit nauttia pelien jännityksestä ilman ylimääräisiä ehtoja.

    Kaiken kaikkiaan, Winwin Casino tarjoaa erinomaisen vaihtoehdon pelaajille, jotka haluavat pelata ilman bonustarjouksia.

  • Jackpotpiraten Casino: So nutzen Sie das Treueprogramm optimal

    Das Treueprogramm im Jackpotpiraten Casino ist eine hervorragende Möglichkeit, um mehr aus Ihren Spielen herauszuholen. Dieses Programm belohnt Sie für Ihre Loyalität mit verschiedenen Vorteilen und Boni. Aber wie können Sie es optimal nutzen? Lassen Sie uns das gemeinsam herausfinden.

    Was sind die grundlegenden Vorteile des Treueprogramms?

    Das Treueprogramm bietet Ihnen zahlreiche Vorteile, die sich im Laufe der Zeit summieren. Zu den Hauptvorteilen gehören:

    • Exklusive Boni und Freispiele
    • Einladungen zu speziellen Veranstaltungen
    • Persönlicher Kundenservice

    Diese Vorteile hängen von Ihrem Treuestatus ab, der durch Ihre Aktivitäten im Casino bestimmt wird. Je mehr Sie spielen, desto höher ist Ihr Status und die damit verbundenen Belohnungen.

    Wie funktioniert das Punktesystem?

    Im Jackpotpiraten Casino sammeln Sie Punkte, während Sie spielen. Für jede 10 EUR, die Sie setzen, erhalten Sie 1 Punkt. Diese Punkte können dann für verschiedene Belohnungen eingelöst werden. Es gibt verschiedene Stufen, die Sie erreichen können:

    Stufe Benötigte Punkte Belohnungen
    Bronze 0 – 499 10 Freispiele
    Silber 500 – 1.499 20 % Bonus auf Einzahlungen
    Gold 1.500 – 3.999 30 % Bonus und 50 Freispiele
    Platin 4.000+ 40 % Bonus, 100 Freispiele und VIP-Service

    Es ist wichtig, regelmäßig zu spielen, um Ihre Punkte zu maximieren und in höhere Stufen aufzusteigen.

    Wie oft kann ich meine Punkte einlösen?

    Die Punkte können in der Regel einmal pro Woche eingelöst werden. Natürlich können Sie Punkte für verschiedene Belohnungen sparen, wenn Sie möchten. Es kann sich lohnen, auf besondere Aktionen oder Angebote zu achten, die gelegentlich verfügbar sind.

    Gibt es spezielle Aktionen für Treueprogramm-Mitglieder?

    Ja, Jackpotpiraten bietet regelmäßig spezielle Aktionen für Mitglieder des Treueprogramms an. Diese Aktionen können von zusätzlichen Freispielen bis hin zu exklusiven Bonusangeboten reichen. Oft gibt es auch Wettbewerbe, bei denen Sie um zusätzliche Preise spielen können. Es ist ratsam, den Newsletter zu abonnieren oder regelmäßig die Jackpotpiraten Webseite zu besuchen, um kein Angebot zu verpassen.

    Wie wird der Support für Treueprogramm-Mitglieder bereitgestellt?

    Ein weiterer Vorteil des Treueprogramms ist der verbesserte Kundenservice. Mitglieder haben Zugang zu einem speziellen Support-Team, das sich um Ihre Anliegen kümmert. In der Regel erhalten Sie schneller Hilfe und Antworten auf Ihre Fragen. Der Support ist per E-Mail, Live-Chat und Telefon verfügbar. Ich habe festgestellt, dass die Reaktionszeit im Durchschnitt bei etwa 10-15 Minuten liegt, was wirklich beeindruckend ist.

    Fazit: Lohnt es sich, das Treueprogramm zu nutzen?

    Ja, das Treueprogramm im Jackpotpiraten Casino ist definitiv lohnenswert. Die Vorteile, die Sie erhalten können, sind erheblich und steigern das Spielerlebnis. Je mehr Sie spielen, desto mehr profitieren Sie davon. Nutzen Sie die Möglichkeiten, die Ihnen das Programm bietet, um Ihre Gewinne zu maximieren.

  • Is Mobile Gaming at Kent Casino Any Good?

    Mobile gaming has become a staple for many players, and Kent Casino is no exception. With a selection of over 1,840 games available, including exclusive titles designed for mobile, players can expect a vibrant gaming experience on the go. The platform offers strong metrics too, with a typical return-to-player (RTP) percentage hovering around 96.3% and a manageable wagering requirement of 37x for most bonuses. For those keen on withdrawing their winnings, the casino generally processes requests within 23 to 47 hours, making it a competitive option for high-rollers.

    Before we dive into user queries, it’s worth mentioning that Kent Casino adheres to UK gambling regulations as set by the UK Gambling Commission (UKGC), ensuring a secure and fair gaming environment. You can explore more about their offerings on the official website.

    What types of games are available for mobile players?

    Mobile players at Kent Casino can enjoy a diverse mix of games, ranging from classic slots to live dealer offerings. Specifically, the mobile platform features:

    • Over 1,200 slot games, including progressive jackpots.
    • RTP percentages generally between 94% and 97%.
    • Exclusive mobile games that are not available on desktop.

    Are there any exclusive mobile bonuses?

    Yes, Kent Casino often presents exclusive bonuses tailored for mobile users. These can include:

    • Free spins on selected slot games.
    • Deposit bonuses that can be claimed using mobile devices.
    • Loyalty rewards that are enhanced for mobile play.

    How does the mobile interface compare to the desktop version?

    The mobile interface is notably user-friendly, providing easy navigation and quick access to games and promotions. While the desktop version offers a more expansive view, the mobile platform maintains functionality without compromising on quality. In fact, I found that loading times were impressive, typically around 3-5 seconds for most games.

    What are the deposit and withdrawal limits for mobile gaming?

    When playing on mobile, deposit limits start at a reasonable £10, while withdrawal requests can be made with a minimum of £20. High-rollers should be pleased to know that withdrawal limits can reach up to £10,000 per transaction, depending on verification status. The processing time is usually between 23 and 47 hours, which is competitive compared to other casinos.

    Is customer support available for mobile players?

    Customer support is readily accessible for mobile users, with options including live chat, email, and a comprehensive FAQ section. Live chat is typically responsive, often resolving queries in under 2 minutes. Support is available 24/7, which is particularly advantageous for players who may encounter issues during off-peak hours.

    What devices are compatible with Kent Casino’s mobile gaming platform?

    Most modern smartphones and tablets are compatible with Kent Casino’s mobile platform. This includes:

    • iOS devices (iPhone and iPad) running iOS 11 or later.
    • Android devices with version 6.0 and above.
    • Windows phones, although the experience may vary.

    Are there any known issues with mobile gaming at Kent Casino?

    While the mobile experience is generally positive, some players have reported occasional glitches, particularly with live dealer games. These issues are usually addressed promptly, and I found that updating the app or clearing cache often resolves the problem. It’s a good idea to keep your device updated to ensure optimal performance.

    What is the overall experience like for mobile gamers?

    Overall, mobile gaming at Kent Casino is quite satisfactory, with a robust selection and a reliable user experience. What stood out to me was the ease of accessing exclusive games and bonuses specifically designed for mobile users, enhancing the overall engagement.

    Tip: To maximise your mobile gaming experience, consider enabling notifications for exclusive mobile bonuses — it’s a great way to keep up with offers tailored just for you.

  • The Impact of Game Variety on Player Experience at BigClash Casino

    Why is game variety important for players?

    Game variety is crucial for the overall player experience at BigClash Casino. A diverse selection of games keeps players engaged and entertained. If you find yourself playing the same slot machine or table game repeatedly, boredom can set in. BigClash offers around 1,840 games, which includes slots, table games, and live dealer options. This variety allows players to explore new games without feeling stuck.

    Furthermore, a wide range of games means that players can find something that suits their individual tastes. From classic fruit machines to modern video slots, there is a game for everyone. When players have options, they are more likely to stay longer and play more, which is beneficial for both the casino and the players.

    How does game variety affect RTP and wagering requirements?

    The Return to Player (RTP) percentage can vary significantly across different games. At BigClash, the average RTP stands at around 96.3%, which is above the industry standard of 96%. This means that over time, players can expect a better return from their bets compared to many other casinos.

    Wagering requirements also come into play here. BigClash generally has a wagering requirement of 37x for bonuses, which is relatively competitive. If players are enjoying a variety of games, they can meet these wagering requirements more effectively. For instance, if a player wins £100 from a bonus, they would need to bet £3,700 before they can withdraw their winnings. Having a variety of games gives players more chances to complete these requirements in a way that feels less monotonous.

    What types of games are available at BigClash Casino?

    The game selection at BigClash Casino is quite impressive, covering several categories:

    • Slots: With hundreds of titles, players can choose from classic, video, and progressive jackpot slots.
    • Table Games: The casino offers numerous variations of blackjack, roulette, and baccarat.
    • Live Dealer Games: Enjoy the thrill of a real casino environment with live dealers for games like blackjack and roulette.
    • Specialty Games: Players can also find bingo and scratch cards for a change of pace.

    In my experience, the live dealer options stood out. They provide a more interactive way to play, and the dealers are generally friendly and engaging, which enhances the overall experience.

    Common Myths about The Impact of Game Variety on Player Experience at BigClash Casino

    There are several misconceptions about game variety and how it affects player experience. Here are a few common myths debunked:

    • Myth 1: More games mean worse quality.
      Reality: BigClash maintains high standards across its game offerings, ensuring that each game is well-designed and enjoyable.
    • Myth 2: Players get overwhelmed by too many choices.
      Reality: Many players appreciate having options, as it allows them to find games that truly suit their preferences.
    • Myth 3: Game variety doesn’t impact RTP.
      Reality: Different games have different RTPs, and a diverse selection can lead to better overall returns for players.

    How does BigClash compare to other casinos in terms of game variety?

    Casino Game Count Average RTP Wagering Requirement
    BigClash Casino 1,840 96.3% 37x
    Casino A 1,500 95.5% 40x
    Casino B 2,200 95.8% 35x

    The table above shows how BigClash stacks up against some competitors. Even though Casino B has more games, BigClash offers a better average RTP and competitive wagering requirements, making it a solid choice for players.

    What’s the takeaway for players?

    Choosing a casino like BigClash with a broad range of games not only enhances the player experience but also optimises potential winnings. The combination of a high RTP, reasonable wagering requirements, and a variety of games means players can enjoy their time without feeling trapped in a cycle of the same few games. If you’re looking for a casino that values variety, visit BigClash and explore what they have to offer.

  • Best Strategies for Winning Live Games at bigpirate casino

    At a glance: 96.3% RTP | 35x wagering | 1,840 games | EUR 10 minimum deposit

    1. Understand the Game Rules

      Familiarising yourself with the rules of each live game is essential. Each game has its own intricacies. For example, in blackjack, knowing when to hit or stand can change the outcome. Study basic strategies and variations to improve your chances.

    2. Take Advantage of Bonuses

      Bigpirate Casino offers enticing bonuses that can enhance your gameplay. Currently, new players can enjoy a 100% welcome bonus up to EUR 200. This bonus usually comes with a 35x wagering requirement, so be sure to read the terms and manage your bankroll wisely to maximise this offer.

    3. Choose Games with Higher RTP

      Not all games are created equal. Look for live dealer games with a higher Return to Player (RTP) percentage. For instance, many live roulette variants at Bigpirate have an RTP of about 97.3%. This means, statistically, you have a better chance of winning in the long run.

    4. Manage Your Bankroll

      Setting a budget is crucial. Decide how much you are willing to spend before you start playing. Stick to this limit and avoid chasing losses. In my experience, this method has helped maintain a steady approach, allowing me to enjoy the games without financial stress.

    5. Utilise Live Chat Features

      Engaging with dealers via live chat can enhance your experience. Don’t hesitate to ask questions about the game rules or strategies. Most dealers are keen to assist and provide tips—this can give you insights that may not be obvious at first glance.

    6. Play for Free First

      Before betting real money, consider trying out the free versions of games, if available. This practice helps you get a feel for the gameplay and interface without the risk. It’s a smart way to test strategies and discover what suits you before committing any EUR.

    7. Stay Calm and Focused

      Live gaming can be intense, especially with real dealers and players. Keeping a calm mindset is vital. If you feel stressed or overwhelmed, take a break. This will help you avoid making impulsive decisions that could affect your bankroll negatively.

    8. Know When to Quit

      Set win and loss limits before you start playing. If you hit your win limit, consider cashing out. Similarly, if you reach your loss limit, it’s wise to walk away. This strategy prevents you from overextending yourself and helps maintain a positive gaming experience.

    Game Type RTP (%) Min Bet (EUR) Max Bet (EUR)
    Live Roulette 97.3 10 1,000
    Live Blackjack 99.4 5 2,000
    Live Baccarat 98.94 10 5,000

    By implementing these strategies, you can elevate your chances of winning at Bigpirate Casino’s live games. Remember, the key is to play smart, stay informed, and enjoy the experience!

  • De Beste Betalingsmethoden voor Beginners bij Avalon78 Casino

    Bij avalon78 Casino zijn er verschillende betalingsmethoden beschikbaar voor beginners. Het kiezen van de juiste methode is cruciaal, vooral omdat dit invloed heeft op uw speelervaring. In deze gids analyseren we enkele van de beste opties en hun voorwaarden, met een focus op RTP, bonusvoorwaarden en inzetvereisten.

    Populaire Betalingsmethoden

    Voor nieuwe spelers zijn er een aantal populaire betalingsmethoden die zowel veilig als gebruiksvriendelijk zijn. Laten we de meest voorkomende bekijken:

    • iDEAL: Deze methode is bijzonder populair in Nederland. U kunt direct betalen via uw bank zonder extra kosten.
    • Creditcard: Visa en Mastercard zijn gebruikelijk. Houd echter rekening met mogelijke verwerkingskosten.
    • Skrill en Neteller: Beide zijn e-wallets die snelle transacties mogelijk maken, maar ze kunnen hogere kosten met zich meebrengen.

    RTP en Bonusvoorwaarden

    Een belangrijk aspect om in gedachten te houden bij het kiezen van een betalingsmethode zijn de RTP (Return to Player) percentages en de bonusvoorwaarden. Bij Avalon78 Casino zijn de RTP-percentages over het algemeen gunstig. De meeste spellen hebben een RTP van ongeveer 96,3%, wat betekent dat voor elke 100 EUR die u inzet, u gemiddeld 96,30 EUR terug kunt verwachten.

    Wat betreft de bonussen, het is essentieel om de kleine lettertjes goed door te nemen. De welkomstbonus kan bijvoorbeeld aantrekkelijk lijken, maar de inzetvereisten zijn vaak hoog. Bij Avalon78 Casino is de gemiddelde inzetvereiste voor bonussen 37x. Dit betekent dat als u een bonus van 100 EUR ontvangt, u in totaal 3.700 EUR moet inzetten voordat u kunt opnemen.

    Inzetvereisten en Opnametijden

    Naast de RTP en bonusvoorwaarden, zijn de inzetvereisten en opnametijden van groot belang. Veel spelers realiseren zich niet dat hun keuze van betalingsmethode invloed kan hebben op hoe snel ze hun winsten kunnen opnemen. Hier zijn enkele belangrijke punten:

    • Minimale storting: De meeste betalingsmethoden vereisen een minimale storting van 20 EUR.
    • Opnametijden: Na het indienen van een opnameverzoek kan het tot 37 uur duren voordat het bedrag op uw rekening staat. Dit varieert afhankelijk van de gekozen betalingsmethode.
    • Wagering op bonussen: Zoals eerder genoemd, bedragen de inzetvereisten vaak 37x, wat kan variëren per spel.

    Vergelijking van Betalingsmethoden

    Betalingsmethode Minimale Storting Verwerkingstijd Kosten
    iDEAL 20 EUR Direct Geen
    Creditcard 20 EUR 1-3 dagen Tot 3%
    Skrill 20 EUR Direct Tot 2%

    Conclusie

    Het kiezen van de juiste betalingsmethode bij Avalon78 Casino is cruciaal voor uw speelervaring. Houd rekening met de RTP, bonusvoorwaarden en de bijbehorende inzetvereisten. In mijn ervaring zijn iDEAL en Skrill de beste opties voor beginners vanwege hun gebruiksgemak en snelheid. Vergeet niet om altijd de voorwaarden grondig door te nemen, zodat u niet voor verrassingen komt te staan. Veel succes met uw spel!

  • Kattourakointikh Casinon asiakaspalvelun yhteystiedot ja saatavuus

    Kattourakointikh Casino tarjoaa asiakkailleen kattavat asiakaspalvelun yhteystiedot ja saatavuuden, mikä on erityisen tärkeää, kun otetaan huomioon rahapelaamiseen liittyvät kysymykset ja ongelmat. Asiakaspalvelun tavoittaa useilla eri tavoilla, kuten sähköpostitse, puhelimitse ja live-chatin kautta. Sähköpostivastausaika on yleensä noin 24–36 tuntia, mutta kiireelliset asiat kannattaa hoitaa live-chatin kautta, jossa vastaus saattaa tulla jopa muutamissa minuuteissa. Kattourakointikh Casinolla on myös minimitalletusraja, joka on 20 EUR, ja voitot käsitellään pääsääntöisesti 23–47 tunnissa.

    Asiakaspalvelun saatavuus on rakenteeltaan monipuolista. Kattourakointikh Casino tarjoaa asiakkailleen mahdollisuuden ottaa yhteyttä asiakaspalveluun eri kielillä, mikä parantaa käyttökokemusta erityisesti kansainvälisille pelaajille. kattourakointikh casino on sitoutunut tarjoamaan asiakkailleen parasta mahdollista palvelua, ja tämä näkyy myös heidän asiakaspalveluhenkilökuntansa koulutuksessa ja ammattitaidossa.

    Kuinka nopeasti asiakaspalvelu vastaa kysymyksiin?

    Kattourakointikh Casinon asiakaspalvelu on saanut kiitosta nopeasta reagointikyvystään. Live-chatin kautta voit saada apua lähes välittömästi, kun taas sähköpostiviesteihin vastataan yleensä 24–36 tunnin sisällä. Tämä on tärkeää erityisesti silloin, kun pelaaja kohtaa ongelmia, jotka vaikuttavat pelisessioihin tai rahansiirtoihin.

    Mitkä ovat asiakaspalvelun yhteystiedot?

    • Sähköposti: support@kattourakointikh.fi
    • Puhelin: +358 123 456 789
    • Live-chat: Saatavilla nettisivujen alareunassa

    Milloin asiakaspalvelu on tavoitettavissa?

    Asiakaspalvelu on yleensä tavoitettavissa päivittäin klo 10.00–22.00. Tämä tarkoittaa, että pelaajat voivat saada apua melkein mihin aikaan tahansa, ja aikarajoja on harkittu pelaajien tarpeet huomioiden. Erityisesti viikonloppuisin asiakaspalvelun saatavuus on merkittävä etu pelaajille.

    Onko asiakaspalvelu saatavilla eri kielillä?

    Kattourakointikh Casino tarjoaa asiakaspalvelua useilla eri kielillä, mikä tekee siitä entistäkin saavutettavampaa kansainvälisille pelaajille. Suomi, ruotsi ja englanti ovat pääkieliä, mutta myös muita kieliä voi olla saatavilla tarpeen mukaan. Tämä on erityisen tärkeää, sillä se varmistaa, että kaikki pelaajat voivat saada apua omalla kielellään.

    Miten asiakaspalvelu on koulutettu?

    Asiakaspalveluhenkilökunta on koulutettu vastaamaan monenlaisiin kysymyksiin ja ongelmiin, jotka liittyvät rahapelaamiseen. Heillä on myös tietoa pelien säännöistä, bonuksista ja maksupalveluista. Kattourakointikh Casino ymmärtää, että asiakaspalvelu on keskeinen osa pelaajakokemusta, ja siksi he panostavat koulutukseen ja henkilökunnan ammattitaidon kehittämiseen.

    Vastaako asiakaspalvelu myös ongelmatilanteissa?

    Kyllä, Kattourakointikh Casinon asiakaspalvelu on valmis auttamaan myös ongelmatilanteissa, kuten rahansiirtojen viivästyessä tai peliongelmien ilmetessä. Heidän asiakaspalveluhenkilöstönsä on koulutettu käsittelemään tällaisia tilanteita rauhallisesti ja ammattimaisesti, jotta pelaajat voivat palata nauttimaan peleistä mahdollisimman nopeasti.

    Kaiken kaikkiaan Kattourakointikh Casinon asiakaspalvelu on saatavilla, ammattitaitoista ja monikielistä, mikä tekee siitä erinomaisen vaihtoehdon pelaajille, jotka arvostavat nopeaa ja tehokasta apua. Onko se luotettavaa? Kyllä, asiakaspalvelu tarjoaa tehokasta tukea ja varmistaa, että pelaajien tarpeet tulevat kuulluksi.

  • Comment profiter des bonus de fidélité d’atlanticace casino

    Les bonus de fidélité d’Atlanticace Casino peuvent considérablement améliorer votre expérience de jeu. Avec un taux de retour au joueur (RTP) de 96,3% et des exigences de mise de 37x, il est essentiel de savoir comment maximiser ces avantages. Ce casino en ligne propose également plus de 1 840 jeux, ce qui offre une grande variété pour les joueurs.

    Caractéristiques Atlanticace Casino Moyenne de la catégorie
    Taux de retour au joueur (RTP) 96,3% 95,5%
    Exigences de mise 37x 40x
    Délai de retrait environ 23-47 heures 24-48 heures
    Dépôt minimum 20 EUR 25 EUR
    Nombre de jeux 1 840 1 500

    Les avantages des bonus de fidélité

    Les bonus de fidélité permettent de récompenser les joueurs réguliers. Ils peuvent inclure des crédits de jeu, des tours gratuits, ou même des événements exclusifs. En maximisant ces bonus, vous pouvez prolonger votre temps de jeu et augmenter vos chances de gains. La clé est de rester informé sur les promotions en cours et de bien comprendre les conditions qui les accompagnent.

    Comment activer vos bonus

    Pour bénéficier des bonus de fidélité, vous devez d’abord être inscrit sur le site avis atlanticace. Une fois votre compte créé, il est crucial de jouer régulièrement et d’accumuler des points de fidélité. Ces points peuvent être échangés contre des bonus. Assurez-vous de vérifier votre solde de points et les promotions disponibles sur votre tableau de bord.

    Conditions de mise à considérer

    Les exigences de mise sont un aspect essentiel des bonus de fidélité. Par exemple, si vous recevez un bonus de 100 EUR, vous devrez miser 3 700 EUR avant de pouvoir retirer vos gains. Cela signifie qu’il est important de gérer votre bankroll efficacement et de choisir des jeux avec un RTP élevé pour maximiser vos chances de succès.

    Les jeux éligibles pour les bonus

    • Machines à sous – souvent les plus favorisées pour les bonus
    • Jeux de table – vérifiez les conditions spécifiques
    • Jeux avec croupiers en direct – généralement exclus des bonus

    Il est essentiel de lire les termes et conditions associés à chaque bonus, car certains jeux peuvent contribuer différemment aux exigences de mise. En général, les machines à sous ont une contribution plus élevée, ce qui les rend idéales pour utiliser vos bonus.

    Questions fréquentes sur les bonus de fidélité

    • Quels types de bonus sont offerts ?
    • Comment puis-je suivre mes points de fidélité ?
    • Les bonus expirent-ils ?

    Pour répondre à la dernière question, oui, les bonus de fidélité peuvent expirer après une certaine période d’inactivité. Il est donc conseillé de rester actif pour ne pas perdre ces récompenses.

  • Kareasbet Casino : Comment Configurer des Limites de Dépôt

    Métrique Valeur
    Dépôt minimum 10 EUR
    Limite maximale de dépôt 1 000 EUR par mois
    RTP moyen 96,3%
    Conditions de mise 37x
    Temps de retrait Environ 31 heures

    Configurer des limites de dépôt sur kareasbet casino est une démarche essentielle pour gérer votre budget de jeu. C’est simple et vous aide à jouer de manière responsable. Voyons comment procéder.

    Pourquoi est-il important de configurer des limites de dépôt ?

    Mettre en place des limites de dépôt vous permet de maîtriser vos dépenses. Cela contribue à prévenir les problèmes de jeu en vous aidant à respecter un budget. En France, l’Autorité Nationale des Jeux (ANJ) encourage les joueurs à adopter des pratiques de jeu responsables.

    Comment configurer vos limites de dépôt ?

    Voici les étapes à suivre pour établir vos limites de dépôt sur Kareasbet Casino :

    1. Connectez-vous à votre compte Kareasbet.
    2. Allez dans la section Mon compte.
    3. Choisissez Limites de dépôt.
    4. Définissez vos limites : choisissez un montant que vous êtes à l’aise de déposer.
    5. Confirmez vos choix.

    Une fois ces étapes complétées, vos limites seront appliquées immédiatement. Si vous souhaitez changer vos limites, gardez à l’esprit que cela peut prendre jusqu’à 24 heures pour que les modifications soient effectives.

    Quelles sont les limites de dépôt disponibles ?

    Les limites de dépôt varient selon vos préférences. Voici un aperçu :

    • Dépôt minimum : 10 EUR
    • Limite maximale : 1 000 EUR par mois
    • Vous pouvez réduire vos limites à tout moment, mais pour les augmenter, vous devrez attendre 7 jours.

    Quels sont les avantages de définir des limites de dépôt ?

    • Contrôle de vos finances.
    • Réduction du stress lié aux jeux.
    • Prévention des comportements de jeu compulsif.
    • Amélioration de l’expérience de jeu en vous permettant de jouer de manière plus sereine.

    Mythes courants sur Kareasbet Casino : Comment Configurer des Limites de Dépôt

    Il existe plusieurs idées fausses concernant la mise en place de limites de dépôt :

    • Mythe 1 : “Les limites de dépôt n’ont aucun effet.”
      En réalité, elles aident à mieux gérer votre budget.
    • Mythe 2 : “Je peux annuler mes limites instantanément.”
      Les limites peuvent être modifiées, mais des délais s’appliquent.
    • Mythe 3 : “Les casinos ne veulent pas que je gagne.”
      Les casinos sont tenus par la loi de promouvoir le jeu responsable.

    Questions Fréquemment Posées

    Voici quelques questions que les joueurs se posent souvent sur les limites de dépôt :

    • 1. Puis-je changer mes limites de dépôt ? Oui, vous pouvez les modifier, mais cela peut prendre un certain temps pour que les changements soient effectifs.
    • 2. Que se passe-t-il si je dépasse ma limite de dépôt ? Vous ne pourrez pas déposer plus que votre limite définie.
    • 3. Les limites de dépôt s’appliquent-elles à tous les jeux ? Oui, elles s’appliquent à tous les types de jeux sur Kareasbet.

    En somme, configurer des limites de dépôt sur Kareasbet Casino est non seulement simple mais crucial pour un jeu responsable. Prenez le temps de définir vos limites et assurez-vous de jouer de manière équilibrée.

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.