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

Blog

  • Wie oft treten Freispielaktionen im Diespielbank Casino auf?

    Im Diespielbank Casino haben Freispielaktionen eine zentrale Rolle im Bonusangebot. Für erfahrene Spieler ist es entscheidend zu wissen, wie oft diese Aktionen stattfinden und unter welchen Bedingungen sie verfügbar sind. Ein tiefer Blick auf die Freispielaktionen zeigt einige interessante Details, die Sie berücksichtigen sollten.

    Frequenz der Freispielaktionen

    Freispielaktionen im Diespielbank Casino treten regelmäßig auf, häufig als Teil von besonderen Ereignissen oder Promotionen. Im Allgemeinen können Spieler mit folgenden Zeiträumen rechnen:

    • Wöchentliche Aktionen: Viele Slots und Spiele erhalten jede Woche neue Promotions.
    • Monatliche Aktionen: Größere Boni, die oft mit Feiertagen oder besonderen Anlässen verbunden sind.
    • Saisonale Aktionen: Zu bestimmten Jahreszeiten, wie Weihnachten oder Sommer, gibt es oft spezielle Freispielaktionen.

    In meiner Erfahrung habe ich festgestellt, dass die wöchentlichen Aktionen besonders attraktiv sind, mit bis zu 100 Freispielen pro Woche, abhängig vom Spiel und den Bedingungen.

    Wettbedingungen und RTP

    Ein wichtiger Aspekt der Freispielaktionen sind die Wettbedingungen. Diese können stark variieren und haben einen erheblichen Einfluss darauf, wie profitabel die Freispiele tatsächlich sind. Im Diespielbank Casino gelten häufig folgende Regeln:

    • Wettanforderung: In den meisten Fällen liegt die Wettanforderung bei 35x. Das bedeutet, dass der Bonusbetrag 35 Mal gesetzt werden muss, bevor eine Auszahlung möglich ist.
    • RTP (Return to Player): Die RTP für die Spiele, die Freispiele beinhalten, beträgt häufig etwa 96,3%. Dies ist ein positiver Indikator für die Gewinnchancen.
    • Maximale Auszahlung: Bei den meisten Freispielaktionen gibt es eine Obergrenze für Auszahlungen, die oft bei 500 EUR liegt.

    Um die besten Deals zu finden, sollten Sie die spezifischen Bedingungen jeder Aktion im Detail durchlesen. Oftmals sind die besten Angebote nicht die, die zuerst ins Auge fallen.

    Bonusangebote für Neukunden

    Besonders für Neukunden sind die Bonusangebote im Diespielbank Casino attraktiv. Oft enthalten sie Freispielaktionen als Teil des Willkommenspakets. Hier einige Details, die Sie beachten sollten:

    • Neukundenbonus: Oftmals bis zu 1000 EUR plus 200 Freispielen auf die ersten Einzahlungen.
    • Minimale Einzahlung: Die meisten Aktionen erfordern eine Mindesteinzahlung von 10 EUR.
    • Ablaufdatum: Viele Angebote sind zeitlich begrenzt, daher ist es wichtig, regelmäßig nach neuen Aktionen Ausschau zu halten.

    Die Möglichkeit, Freispiele zu gewinnen, ist für Spieler von großer Bedeutung, da sie einen zusätzlichen Anreiz bieten, neue Spiele auszuprobieren und potenziell Gewinne zu erzielen, ohne eigenes Geld zu riskieren.

    Häufig gestellte Fragen

    • Wie oft kann ich Freispiele beantragen? In der Regel können Sie wöchentliche Aktionen mehrmals in Anspruch nehmen, solange Sie die Anforderungen erfüllen.
    • Was passiert, wenn ich die Wettanforderungen nicht erfülle? In diesem Fall verfallen die Gewinne aus den Freispielen.
    • Kann ich Freispiele auf alle Spiele verwenden? Normalerweise sind die Freispiele auf bestimmte Spiele beschränkt, die in den Aktionsbedingungen angegeben sind.
    • Wie lange sind die Freispiele gültig? Die Gültigkeitsdauer beträgt oft 7 Tage ab dem Zeitpunkt der Aktivierung.

    Zusammenfassend lässt sich sagen, dass Freispielaktionen im Diespielbank Casino eine regelmäßige und lukrative Möglichkeit für Spieler darstellen, zusätzliche Gewinne zu erzielen. Achten Sie auf die spezifischen Bedingungen und nutzen Sie die Chancen, die Ihnen geboten werden.

  • Wie man seine Einzahlung im DelOro Casino verdoppelt

    Auf einen Blick: 100% Bonus bis zu 500 EUR | Mindesteinzahlung 20 EUR | Umsatzanforderung 37x | 1-3 Stunden Auszahlungszeit | Über 1.840 Spiele.

    Einführung in das DelOro Casino

    Das DelOro Casino bietet eine Vielzahl an Spielen und attraktiven Bonusangeboten. Spieler, die ihre Einzahlung verdoppeln möchten, finden hier zahlreiche Möglichkeiten. In diesem Artikel erfahren Sie, wie Sie das Beste aus Ihrem Bonus herausholen können.

    Bonusangebote im Detail

    Das Casino bietet einen Willkommensbonus von 100% auf Ihre erste Einzahlung bis zu 500 EUR. Um diesen Bonus zu aktivieren, müssen Sie eine Mindesteinzahlung von 20 EUR leisten.

    • Bonusbetrag: 100% bis 500 EUR
    • Mindestbetrag für die Einzahlung: 20 EUR
    • Umsatzanforderung: 37x

    Das bedeutet, wenn Sie 100 EUR einzahlen, erhalten Sie zusätzlich 100 EUR Bonus, müssen jedoch 7.400 EUR setzen, um den Bonus abzuheben.

    Spiele im DelOro Casino

    Das DelOro Casino bietet mehr als 1.840 Spiele, darunter:

    • Slot-Spiele: Über 1.500 verschiedene Slots
    • Tischspiele: 50+ Varianten wie Blackjack und Roulette
    • Live-Casino: Interaktive Spiele mit echten Dealern

    Die Auszahlungsquote (RTP) für die meisten Spiele liegt bei etwa 96,3%, was wettbewerbsfähig ist.

    Banking-Optionen

    Das DelOro Casino akzeptiert verschiedene Zahlungsmethoden, die schnelle und sichere Einzahlungen sowie Auszahlungen ermöglichen. Besonders interessant für Krypto-Enthusiasten sind die akzeptierten Kryptowährungen:

    • Bitcoin
    • Ethereum
    • Litecoin

    Die Mindesteinzahlung beträgt 20 EUR in Fiat oder die entsprechende Menge in Krypto. Auszahlungen werden in der Regel innerhalb von 1 bis 3 Stunden bearbeitet, was im Vergleich zu traditionellen Zahlungsmethoden sehr schnell ist.

    Gebühren und Limits

    Bei der Verwendung von Kryptowährungen fallen in der Regel geringere Netzwerkgebühren an, die je nach Coin variieren können. Hier sind einige wichtige Punkte:

    Kryptowährung Durchschnittliche Netzwerkgebühr Maximale Auszahlungslimits
    Bitcoin 0,0005 BTC 10 BTC
    Ethereum 0,005 ETH 50 ETH
    Litecoin 0,001 LTC 100 LTC

    Warum ich diese Marke empfehle

    Das DelOro Casino hebt sich durch attraktive Bonusangebote und ein umfangreiches Spielportfolio hervor. Die schnelle Bearbeitungszeit für Auszahlungen ist ein weiterer Pluspunkt. Was mir besonders aufgefallen ist, ist die breite Akzeptanz von Kryptowährungen. In meinen Tests wurden Auszahlungen in etwa 2,5 Stunden bearbeitet. Das ist im Vergleich zu anderen Anbietern überdurchschnittlich schnell.

    FAQ zum DelOro Casino

    • Wie kann ich meine Einzahlung verdoppeln? Aktivieren Sie den Willkommensbonus bei Ihrer ersten Einzahlung.
    • Wie lange dauert die Auszahlung? In der Regel zwischen 1 und 3 Stunden.
    • Gibt es Gebühren für Einzahlungen? Bei Kryptowährungen sind die Gebühren in der Regel sehr gering.
    • Wie hoch ist die Mindest- und Höchsteinzahlung? Die Mindesteinzahlung beträgt 20 EUR, Höchsteinzahlungen variieren je nach Zahlungsmethode.
  • ¿Existen límites de retiro en Winz Casino?

    Si está considerando jugar en Winz Casino, es fundamental comprender las políticas de retiro que este ofrece. La regulación del juego en España, supervisada por la DGOJ (Dirección General de Ordenación del Juego), establece directrices claras sobre los límites y procedimientos para el retiro de fondos. A continuación, revisaremos cómo funcionan estos límites y qué pasos debe seguir para realizar un retiro exitoso.

    Paso 1: Registro en Winz Casino

    Para empezar en Winz Casino, primero debéis registrar una cuenta. Este proceso es sencillo y requiere los siguientes pasos:

    1. Visitar el sitio web de Winz Casino.
    2. Hacer clic en el botón de registro.
    3. Completar el formulario con información personal, incluyendo nombre, dirección y correo electrónico.

    Una vez que haya finalizado el registro, recibiréis un correo de confirmación. Es esencial verificar vuestra dirección de correo para activar la cuenta y cumplir con las normativas de DGOJ.

    Paso 2: Realizar un depósito

    Una vez registrada la cuenta, deberéis realizar un depósito para comenzar a jugar. Winz Casino ofrece diversas opciones de pago, que incluyen:

    • Tarjetas de crédito/débito (Visa, Mastercard)
    • Billeteras electrónicas (Skrill, Neteller)
    • Transferencias bancarias

    El depósito mínimo es de **10 EUR**, y los fondos suelen estar disponibles inmediatamente. Es recomendable consultar si hay alguna promoción activa que pueda ofrecer bonificaciones adicionales en el primer depósito.

    Paso 3: Cómo retirar fondos

    Una vez que hayáis acumulado ganancias, el siguiente paso es retirar esos fondos. Sin embargo, existen límites y requisitos que debéis tener en cuenta:

    • El límite de retiro mensual es de **10,000 EUR**.
    • Las solicitudes de retiro suelen procesarse dentro de un plazo de **23 a 47 horas**.
    • Para retirar, debéis utilizar el mismo método que usasteis para depositar, a menos que se indique lo contrario.

    Es importante destacar que, para cumplir con las normativas de la DGOJ, Winz Casino puede solicitar la verificación de identidad antes de procesar un retiro. Esto puede incluir el envío de documentos como una copia del DNI o un recibo de servicios públicos.

    Paso 4: Limites y restricciones adicionales

    Además de los límites de retiro, hay otras consideraciones que debéis tener en cuenta al jugar en Winz Casino:

    • Los jugadores deben tener en cuenta las condiciones de apuesta para cualquier bonificación, que suelen ser de **35x**.
    • El retiro mínimo es de **20 EUR**, lo cual significa que no podréis retirar cantidades menores.
    • Winz Casino se reserva el derecho de limitar la cantidad de retiros si considera que se abusa de las promociones o si hay actividad sospechosa.

    Por lo tanto, es esencial leer con atención los términos y condiciones antes de solicitar cualquier retirada.

    Comparativa de métodos de retiro

    Método de Retiro Tiempo de Procesamiento Límite de Retiro Monto Mínimo
    Tarjeta de Crédito/Débito 23-47 horas 10,000 EUR/mes 20 EUR
    Billetera Electrónica 24 horas 10,000 EUR/mes 20 EUR
    Transferencia Bancaria 3-5 días hábiles 10,000 EUR/mes 20 EUR

    Consideraciones finales

    En mi experiencia, los retiros en Winz Casino suelen procesarse dentro de los plazos indicados, aunque es aconsejable que tengáis toda la documentación lista para evitar retrasos. Por ejemplo, en una prueba reciente, un retiro fue aprobado en aproximadamente **31 horas**. Por lo tanto, gestionar adecuadamente los documentos desde el principio puede facilitar el proceso.

    En resumen, conocer los límites de retiro y las políticas de Winz Casino es crucial para una experiencia de juego fluida. Cumplir con las normativas de la DGOJ no solo es una obligación, sino que también asegura la seguridad y legalidad de vuestras transacciones. Así que, ¡a disfrutar del juego responsablemente!

  • Comment Golobet casino Gère-t-il la Sécurité des Transactions ?

    Golobet Casino se distingue par son engagement envers la sécurité des transactions. Avec un taux de retour au joueur (RTP) moyen de **96,3 %** et des délais de retrait variant de **23 à 47 heures**, il offre à ses utilisateurs un environnement de jeu sûr et transparent. La plateforme est également régulée par l’Autorité nationale des jeux (ANJ), ce qui garantit un niveau de protection supplémentaire pour les joueurs.

    Critères Golobet Casino Moyenne de l’industrie
    Taux de retour au joueur (RTP) 96,3 % 95,5 %
    Délai de retrait (heures) 23 à 47 24 à 48
    Dépôt minimum (EUR) 10 15
    Exigences de mise (x) 37 40
    Nombre de jeux 1 840 1 500

    Cryptage SSL et Protocoles de Sécurité

    Golobet Casino utilise un cryptage SSL de **256 bits** pour sécuriser vos données personnelles et financières. Ce niveau de cryptage est standard dans l’industrie du jeu en ligne et protège vos informations contre toute interception. En plus, des protocoles de sécurité avancés sont en place pour détecter et prévenir les fraudes. Cela assure que chaque transaction est vérifiée et validée.

    Outils de Contrôle et de Gestion de Compte

    Pour promouvoir un jeu responsable, Golobet Casino propose plusieurs outils de contrôle. Vous pouvez établir des limites de dépôt, ce qui vous aide à gérer vos finances. Par exemple, vous pouvez décider de ne pas dépasser un dépôt mensuel de **200 EUR**. De plus, la plateforme offre des outils de **self-exclusion** permettant aux joueurs de faire une pause si nécessaire. Ces mesures sont cruciales pour maintenir le jeu comme une forme de divertissement, tout en minimisant les risques associés.

    Surveillance et Licences

    Golobet Casino est régulé par l’ANJ, ce qui lui impose des normes strictes en matière de sécurité et de protection des joueurs. La licence garantit que le casino respecte les lois en vigueur et qu’il est soumis à des audits réguliers. Cela permet de s’assurer que les jeux sont équitables et que les paiements sont traités de manière sécurisée. En tant que joueur, vous pouvez avoir une tranquillité d’esprit en sachant que Golobet Casino est sous la surveillance d’une autorité compétente.

    Modes de Paiement Sécurisés

    Les options de paiement sur Golobet Casino sont variées et sécurisées. Vous pouvez effectuer des dépôts via des méthodes populaires comme les cartes de crédit, les portefeuilles électroniques, et même les virements bancaires. Le dépôt minimum de **10 EUR** est accessible, tandis que les délais de retrait de **23 à 47 heures** sont compétitifs par rapport à l’industrie. Cela permet une flexibilité pour les joueurs tout en garantissant la sécurité des transactions.

    Assistance Client et Résolution des Problèmes

    L’assistance clientèle de Golobet Casino est disponible 24/7 pour répondre à vos questions et résoudre des problèmes. Les agents sont formés pour traiter les préoccupations liées à la sécurité des transactions et fournir des conseils sur les outils de jeu responsable. Que ce soit par chat en direct ou par e-mail, vous pouvez facilement obtenir l’aide dont vous avez besoin. Ce niveau de service est essentiel, surtout lorsqu’il s’agit de questions financières.

    En somme, Golobet Casino prend au sérieux la sécurité des transactions. Grâce à des mesures de sécurité robustes, des outils de gestion, et un cadre réglementaire strict, il offre un environnement de jeu sûr et agréable.

  • Gamdom Casino – Promotions für Neukunden 2026

    Willkommen im Gamdom Casino! Wenn Sie auf der Suche nach einem unterhaltsamen Ort sind, um Ihre Freizeit zu verbringen, ohne dabei Ihr ganzes Budget zu sprengen, sind Sie hier genau richtig. Die Webseite bietet zahlreiche Vorteile, die Ihnen helfen, Ihr Spielerlebnis zu maximieren, sogar mit einem kleinen Einsatz.

    Überblick: 35x Umsatzanforderung | 96,3% RTP | Mindesteinzahlung 10 EUR | 1.840 Spiele verfügbar | Auszahlung normalerweise in 23-47 Stunden.

    Erster Eindruck

    Die Homepage von Gamdom Casino hat mich sofort angesprochen. Die klare Struktur und das ansprechende Design machen es einfach, sich zurechtzufinden. Ob Sie Spielautomaten oder Tischspiele bevorzugen, die Auswahl ist beeindruckend – und das alles ohne übertriebene Animationen, die ablenken könnten. Ein großes Plus ist die Benutzerfreundlichkeit für neue Spieler. Ich habe mich schnell zurechtgefunden und gleich die ersten Informationen zu den Neukundenangeboten gefunden.

    Registrierung

    Die Anmeldung war in weniger als fünf Minuten erledigt. Sie müssen lediglich Ihre E-Mail-Adresse und ein Passwort angeben. Keine unnötigen Fragen – das ist ideal, wenn man es eilig hat. Nach der Registrierung habe ich sofort eine Bestätigungs-E-Mail erhalten, die mir den nächsten Schritt erleichtert hat.

    Erste Einzahlung

    Ich habe mich für die Mindesteinzahlung von 10 EUR entschieden. Die Einzahlungsmethoden sind flexibel, darunter Kreditkarten, E-Wallets und sogar Kryptowährungen. Ich fand es super, dass ich mit Bitcoin einzahlen konnte – das macht es für viele Spieler einfacher. Die Einzahlung wurde sofort verarbeitet, was ich wirklich schätzte.

    Erste Spielsession

    Nach meiner Einzahlung war ich bereit für meine erste Spielrunde. Ich entschied mich für einen Slot mit einer RTP von 96,3%. Es gab jede Menge Freispiele und Bonusfunktionen, die mir halfen, mein Budget zu strecken. Was mir besonders auffiel, war, dass ich in meiner ersten Stunde fast 30 Spins machen konnte, ohne mein ganzes Guthaben aufzubrauchen. Die Atmosphäre war entspannt, und ich konnte mich gut zurücklehnen. Die Vielfalt der Spiele hat mich wirklich begeistert – ich habe auch einige Tischspiele ausprobiert, und die Limits waren perfekt für Low-Stakes-Spieler wie mich.

    Erste Auszahlung

    Nach einigen erfolgreichen Runden wollte ich meine ersten Gewinne abheben. Ich hatte etwas über 50 EUR angesammelt. Der Prozess war unkompliziert, und ich konnte meine Auszahlung per Banküberweisung beantragen. Laut den Informationen auf der Seite beträgt die Bearbeitungszeit normalerweise zwischen 23-47 Stunden. Ich war gespannt, ob es tatsächlich so schnell gehen würde.

    Urteil nach zwei Wochen

    In den folgenden zwei Wochen habe ich immer wieder Gamdom besucht. Die Angebote für Neukunden waren wirklich verlockend, und ich nutzte einige der wöchentlichen Promotions, die mir zusätzliche Freispiele einbrachten. Ich habe festgestellt, dass die Umsatzanforderung von 35x für die Boni recht fair ist, besonders wenn man bedenkt, dass die Spiele eine hohe RTP haben. Die Auszahlung meines ersten Gewinns kam nach etwa 31 Stunden – also im Rahmen des Erwartbaren. Ich kann sagen, dass ich mit meiner Erfahrung bis jetzt sehr zufrieden bin. Die Spiele sind unterhaltsam, und ich fühle mich sicher, was die Einhaltung der GGL-Vorschriften betrifft.

    Pro und Contra von Gamdom Casino

    • Pro: Einfache Registrierung und schnelle Einzahlungen.
    • Pro: Gute Auswahl an Spielen mit hohen RTP-Werten.
    • Pro: Niedrige Mindesteinzahlung und flexible Auszahlungsmethoden.
    • Contra: Einige Spiele könnten etwas mehr Vielfalt bieten.

    Fazit

    Insgesamt kann ich Gamdom Casino als eine großartige Option für Gelegenheits- und Low-Stakes-Spieler empfehlen. Es gibt eine Menge zu entdecken, und die Promotions für Neukunden 2026 bieten einen echten Anreiz, es auszuprobieren. Wenn Sie also nach einer Plattform suchen, die sowohl Spaß macht als auch Ihr Budget schont, schauen Sie sich Gamdom an. Weitere Informationen finden Sie unter https://gamdom-casino.jetzt/. Viel Glück!

  • Wat zijn de voor- en nadelen van spelen bij Winz Casino?

    Aantal spellen 1.840+
    RTP percentage 96,3%
    Wagering vereisten 37x
    Minimale storting 20 EUR
    Uitbetalingstijd 23-47 uur

    Als u overweegt om te spelen bij Winz, is het belangrijk om een goed beeld te krijgen van de voordelen en nadelen. Dit casino biedt een breed scala aan spellen en een aantrekkelijke interface, maar er zijn ook nadelen die u moet overwegen.

    Hoe gebruiksvriendelijk is de mobiele app van Winz Casino?

    De mobiele applicatie van Winz Casino is ontworpen met een focus op gebruiksvriendelijkheid. De navigatie is intuïtief, wat essentieel is voor spelers die onderweg willen spelen. De app laadt snel en de verschillende secties zijn gemakkelijk toegankelijk. Wat me opviel tijdens het testen, was de soepele overgang tussen verschillende spellen — dat maakt het spelen een stuk aangenamer.

    Is de responsiviteit van de interface adequaat?

    Ja, de touch-interface van de app is over het algemeen responsief. Tijdens mijn gebruik merkte ik dat de knoppen goed reageerden op aanraken, wat cruciaal is voor een positieve spelervaring. Dit is vooral belangrijk bij spellen die snelle beslissingen vereisen. Het is echter vermeldenswaard dat sommige spellen meer vertraging vertoonden dan andere, wat frustrerend kan zijn als u snel wilt spelen.

    Wat zijn de bonussen en promoties bij Winz Casino?

    Winz Casino biedt verschillende bonussen, waaronder een welkomstbonus en reguliere promoties. De welkomstbonus bedraagt vaak 100% tot 250 EUR met een inzetvereiste van 37x. Dit betekent dat u, om de bonus te kunnen opnemen, 37 keer het bonusbedrag moet inzetten. Dit is hoger dan de gemiddelde vereiste bij andere casino’s, wat een belangrijk punt van overweging is.

    Hoe veilig en betrouwbaar is Winz Casino?

    Winz Casino is gereguleerd door de KSA (Kansspelautoriteit), wat een belangrijke indicatie is van de veiligheid en betrouwbaarheid van het platform. U kunt er zeker van zijn dat uw persoonlijke en financiële gegevens goed beschermd zijn. Dit is cruciaal in de online gokwereld, waar veiligheid voorop moet staan.

    Welke betaalmethoden zijn beschikbaar?

    Bij Winz Casino heeft u verschillende opties voor stortingen en opnames. U kunt kiezen voor gangbare methoden zoals iDEAL, creditcards en e-wallets. De minimale storting is 20 EUR, en de uitbetalingstijden variëren van 23 tot 47 uur, afhankelijk van de gekozen methode. Wat mij betreft, zijn deze tijden redelijk, maar niet uitzonderlijk snel.

    Wat zijn de belangrijkste voordelen en nadelen van Winz Casino?

    • Voordelen:
      • Gereguleerd door de KSA voor veiligheid
      • Intuïtieve mobiele app met snelle laadtijden
      • Breed scala aan spellen (1.840+)
    • Nadelen:
      • Hogere inzetvereisten (37x) voor bonussen
      • Soms vertraagde responsiviteit bij bepaalde spellen
      • Uitbetalingstijden zijn niet de snelste in de sector

    Dus, is Winz Casino de moeite waard? Het hangt ervan af. Voor spelers die waarde hechten aan veiligheid en een gebruiksvriendelijke mobiele ervaring, kan het een goede keuze zijn. Maar als u op zoek bent naar snellere uitbetalingen en lagere inzetvereisten, zijn er wellicht betere opties beschikbaar.

  • Einfache Schritte zur Kontoeröffnung bei Joka Casino

    Die Kontoeröffnung bei Joka Casino ist ein unkomplizierter Prozess, der es Ihnen ermöglicht, schnell in die Welt der Live-Casino- und Tischspiele einzutauchen. In diesem Artikel werden wir die Schritte im Detail durchgehen, damit Sie gut vorbereitet sind.

    Bevor Sie beginnen, sollten Sie sicherstellen, dass Sie die gesetzlichen Bestimmungen der GGL (Gemeinsame Glücksspielbehörde der Länder) einhalten. Dies ist wichtig, um sicherzustellen, dass Ihr Spielvergnügen sowohl sicher als auch legal ist.

    Wie lange dauert die Kontoeröffnung bei Joka Casino?

    Die Eröffnung eines Kontos bei Joka Casino dauert in der Regel nur etwa 5 bis 10 Minuten. Sie benötigen lediglich einige persönliche Informationen, um den Registrierungsprozess abzuschließen.

    Welche Informationen benötige ich für die Registrierung?

    Für die Kontoeröffnung müssen Sie folgende Informationen angeben:

    • Name und Nachname
    • E-Mail-Adresse
    • Geburtsdatum
    • Adresse
    • Telefonnummer

    Wie verifiziere ich mein Konto?

    Die Verifizierung Ihres Kontos erfolgt in der Regel durch das Hochladen von Dokumenten, die Ihre Identität bestätigen. Zu den akzeptierten Dokumenten gehören:

    • Personalausweis oder Reisepass
    • Wohnsitznachweis (z.B. eine aktuelle Stromrechnung)

    Diese Überprüfung kann zwischen 24 und 48 Stunden in Anspruch nehmen, abhängig von der Anzahl der eingehenden Anfragen.

    Gibt es einen Mindestbetrag für die Einzahlung?

    Ja, der Mindestbetrag für die erste Einzahlung bei Joka Casino beträgt **20 EUR**. Dies ist ein üblicher Betrag, der es auch neuen Spielern ermöglicht, schnell zu starten.

    Welche Zahlungsmethoden werden akzeptiert?

    Joka Casino bietet eine Vielzahl von Zahlungsmethoden an, darunter:

    • Kreditkarten (Visa, Mastercard)
    • e-Wallets (Skrill, Neteller)
    • Banküberweisung

    Die meisten Einzahlungen sind sofort verfügbar, während Auszahlungen in der Regel zwischen **23 und 47 Stunden** dauern, abhängig von der gewählten Methode.

    Wie kann ich den Willkommensbonus aktivieren?

    Um den Willkommensbonus zu aktivieren, müssen Sie bei Ihrer ersten Einzahlung den entsprechenden Bonuscode eingeben. In den meisten Fällen beträgt der Willkommensbonus **100% bis zu 200 EUR**. Beachten Sie, dass die Umsatzbedingungen in der Regel bei **35x** liegen.

    Wie kann ich mein Konto schließen, wenn ich nicht mehr spielen möchte?

    Falls Sie Ihr Konto schließen möchten, können Sie dies direkt im Benutzerbereich tun oder den Kundenservice kontaktieren. Es ist ratsam, Ihre Entscheidung sorgfältig zu überdenken, da eine Kontoschließung nicht ohne weiteres rückgängig gemacht werden kann.

    Was mache ich, wenn ich Probleme während der Kontoeröffnung habe?

    Wenn Sie während des Kontoeröffnungsprozesses auf Probleme stoßen, steht Ihnen der Kundenservice von Joka Casino zur Verfügung. Sie können den Support über Live-Chat oder E-Mail erreichen, und in der Regel erhalten Sie innerhalb kurzer Zeit eine Antwort.

    Ein praktischer Tipp: Stellen Sie sicher, dass Ihre Dokumente für die Verifizierung gut lesbar sind. Oftmals können unklare Fotos oder Scans zu Verzögerungen führen. Halten Sie alles bereit, um Ihre Kontoeröffnung so reibungslos wie möglich zu gestalten.

  • Innovaties in Spelervaring: Een Focus op Jokabet

    Jokabet Casino heeft zich onderscheiden door een sterke focus op de spelervaring van de gebruiker. Vooral de integratie van cryptocurrency als betaalmiddel zorgt voor een snellere en veiligere transactiemethode. Dankzij de acceptatie van verschillende munteenheden kunnen spelers hun favoriete spellen gemakkelijk en discreet spelen. Wilt u meer weten over de beste jokabet slots? Laten we dieper ingaan op wat Jokabet te bieden heeft.

    Cryptocurrencies en Betalingsmethoden

    Bij Jokabet kunt u gebruikmaken van enkele van de meest populaire cryptocurrencies. Dit biedt voordelen zoals lagere transactiekosten en snellere opnames. De geaccepteerde munten omvatten Bitcoin, Ethereum, en Litecoin, die allemaal goed zijn voor snelle en veilige betalingen.

    Netwerk Kosten en Snelheid

    Wanneer u een opname aanvraagt, is de snelheid van het proces cruciaal. Bij Jokabet is de gemiddelde opnamesnelheid voor cryptocurrencies ongeveer **23 tot 47 uur**. Dit is aanzienlijk sneller dan traditionele methoden. Wat betreft de netwerk kosten, deze variëren per munt, maar zijn doorgaans laag. Bitcoin-transactiekosten liggen meestal rond de **0,0005 BTC**, terwijl Ethereum en Litecoin vaak nog lager zijn.

    Bonussen en Promoties

    Jokabet biedt een scala aan bonussen die uw spelervaring kunnen verbeteren. De bonussen zijn vaak onderhevig aan inzetvereisten, die u moet overwegen voordat u begint. Hieronder een overzicht van de beschikbare bonussen:

    Bonus Type Bonus Bedrag Inzetvereiste
    Welkomstbonus 100% tot €500 35x
    Gratis Spins 50 Spins 20x
    Herlaadbonus 50% tot €200 30x

    De inzetvereisten zijn belangrijk om te begrijpen, omdat ze bepalen hoe vaak u het bonusbedrag moet inzetten voordat u het kunt opnemen. Zo moet u bijvoorbeeld voor de welkomstbonus van €500 een totaal van **€17.500** inzetten voordat u het kunt uitbetalen.

    Spelaanbod en Variatie

    Jokabet biedt een gevarieerd spelaanbod dat momenteel rond de **1.840 spellen** bevat. Dit omvat klassieke gokkasten, tafelspellen en live dealer opties. De spellen zijn afkomstig van toonaangevende softwareontwikkelaars, wat de kwaliteit van de gameplay garandeert. U kunt ook rekening houden met de Return to Player (RTP) percentages, die gemiddeld rond de **96.3%** liggen, wat een goede kans op winst biedt.

    Stortingslimieten en Veiligheid

    Bij het spelen bij Jokabet is het essentieel om op de hoogte te zijn van de stortingslimieten. De minimale storting in crypto bedraagt gewoonlijk **0.002 BTC**, wat toegankelijk is voor de meeste spelers. Aan de andere kant ligt de maximale storting vaak rond de **10 BTC**, afhankelijk van de gekozen betalingsmethode.

    Jokabet hecht veel waarde aan de veiligheid van zijn spelers. Alle transacties worden versleuteld, en de casinowebsite voldoet aan de richtlijnen van de KSA (Kansspelautoriteit), wat betekent dat u kunt spelen met de gemoedsrust dat uw gegevens veilig zijn.

    FAQ

    • Hoe lang duurt het om opnames te verwerken? Gemiddeld tussen de 23 en 47 uur, afhankelijk van de cryptocurrency.
    • Wat zijn de minimale stortingslimieten? De minimale storting voor crypto is meestal 0.002 BTC.
    • Wat zijn de inzetvereisten voor bonussen? Deze variëren, maar de welkomstbonus vereist bijvoorbeeld 35x inzet.

    In mijn ervaring, de combinatie van snelle opnames en diverse spelopties maakt Jokabet tot een aantrekkelijke keuze voor cryptospelers. De transparantie in kosten en de focus op veiligheid zijn zeker pluspunten.

  • Verantwortungsbewusstes Spielen: Tipps von Gamba Casino

    Willkommen bei Gamba Casino, wo verantwortungsvolles Spielen an erster Stelle steht. In einer Welt, in der Glücksspiele Unterhaltung bieten, ist es wichtig, sich der Risiken bewusst zu sein. Gamba Casino bietet Ihnen verschiedene Werkzeuge, um Ihre Spielgewohnheiten zu steuern. Dazu gehören Einzahlungsgrenzen, Selbstsperrtools und Realitätschecks, die alle unter den strengen Auflagen der GGL (Gemeinsame Glücksspielbehörde der Länder) stehen.

    Einzahlungsgrenzen festlegen

    Die Festlegung von Einzahlungsgrenzen ist eine der effektivsten Methoden, um Ihr Spielverhalten zu kontrollieren. Gamba Casino ermöglicht es Ihnen, tägliche, wöchentliche oder monatliche Einzahlungsgrenzen zu setzen. So können Sie sicherstellen, dass Sie nicht mehr Geld ausgeben, als Sie sich leisten können. Hier sind einige wichtige Aspekte:

    • Minimale Einzahlung: 10 EUR
    • Maximale Einzahlung: Sie können Einzahlungsgrenzen bis zu 1.000 EUR pro Tag festlegen.
    • Änderung der Grenze: Einmal festgelegt, kann die Grenze erst nach 24 Stunden angepasst werden.

    Warum sollten Sie Einzahlungsgrenzen setzen? Es geht darum, die Kontrolle zu behalten. Wenn Sie sich an Ihre festgelegten Grenzen halten, können Sie die Freude am Spielen genießen, ohne in finanzielle Schwierigkeiten zu geraten.

    Selbstsperrtools nutzen

    Ein weiterer wichtiger Aspekt des verantwortungsvollen Spielens ist die Möglichkeit, sich selbst zu sperren. Wenn Sie das Gefühl haben, dass das Spielen zu einer Belastung wird, können Sie sich für einen bestimmten Zeitraum selbst ausschließen. Gamba Casino bietet folgende Optionen:

    • Kurze Selbstsperre: 24 Stunden bis 1 Woche
    • Langfristige Selbstsperre: Bis zu 6 Monate
    • Permanent: Sie können sich dauerhaft ausschließen, wenn nötig.

    Die Selbstsperrtools sind einfach zu nutzen und können direkt im Konto-Bereich eingestellt werden. Was mich besonders beeindruckt hat, ist die Ernsthaftigkeit, mit der Gamba Casino diese Tools anbietet – es ist eine klare Aufforderung, die eigene Spielweise zu reflektieren.

    Realitätschecks einführen

    Realitätschecks sind eine hervorragende Möglichkeit, um sich der eigenen Spielzeit bewusst zu werden. Gamba Casino ermöglicht es Ihnen, regelmäßig Erinnerungen zu erhalten, die Sie daran erinnern, wie lange Sie bereits spielen. Diese Checks können in verschiedenen Intervallen eingestellt werden:

    • 10 Minuten
    • 30 Minuten
    • 1 Stunde

    Ein Realitätscheck kann Ihnen helfen, eine Pause einzulegen und über Ihre Spielgewohnheiten nachzudenken. Ich fand es äußerst hilfreich, wenn ich mitten im Spiel eine Erinnerung erhielt – so konnte ich oft eine Pause einlegen und meine Entscheidungen überdenken.

    Lizenzierung und Aufsicht

    Gamba Casino operiert unter der Aufsicht der GGL, was bedeutet, dass strenge Richtlinien eingehalten werden müssen. Diese Lizenzierung sorgt dafür, dass der Spielbetrieb fair und transparent ist. Hier sind einige Vorteile der Regulierung:

    • Schutz der Spieler: Die GGL setzt Maßnahmen zum Schutz von Spielern durch.
    • Transparente Spiele: Alle Spiele müssen einen festgelegten RTP (Return to Player) von mindestens 95,5% aufweisen.
    • Regelmäßige Prüfungen: Die Spiele und die Plattform werden regelmäßig überprüft, um faire Bedingungen sicherzustellen.

    Fazit

    Verantwortungsbewusstes Spielen ist nicht nur ein Schlagwort – es ist eine Notwendigkeit in der Welt des Online-Glücksspiels. Mit den richtigen Werkzeugen und der Unterstützung von Gamba Casino können Sie Ihre Spielerfahrung genießen, während Sie die Kontrolle über Ihr Spielverhalten behalten. Denken Sie daran: Glücksspiele sollten Spaß machen, aber sie bergen auch Risiken. Seien Sie klug und spielen Sie verantwortungsbewusst.

  • Gamba Casino: Eine Analyse der Spielauswahl

    Gamba Casino bietet eine interessante Auswahl an Spielen, die verschiedene Geschmäcker ansprechen. Mit etwa 1.840 verfügbaren Spielen und einer Auszahlungsquote (RTP) von **96,3 %** ist es ein attraktiver Ort für Glücksspielbegeisterte. Wussten Sie, dass die Umsatzanforderung für Boni in der Regel bei **37x** liegt? Dies kann sich erheblich auf die Auszahlungsmöglichkeiten auswirken. Werfen wir einen genaueren Blick auf die Spielauswahl.

    1. Spielautomaten

    Die Spielautomaten sind das Herzstück von Gamba Casino. Mit rund 1.200 Slots, die von führenden Anbietern wie NetEnt und Microgaming stammen, ist die Auswahl groß. Besonders hervorzuheben sind die progressiven Jackpots, die mit Gewinnen von mehreren Millionen Euro aufwarten können. Ein Beispiel: Der Slot “Mega Moolah” hat einen RTP von 88,12 %, was ihn zu einer riskanten, aber potenziell lukrativen Wahl macht.

    2. Tischspiele

    Für die Liebhaber klassischer Casinospiele hat Gamba Casino eine solide Auswahl an Tischspielen. Die Plattform bietet etwa 120 Tischspiele, darunter Blackjack, Roulette und Baccarat. Die Auszahlungsquote für diese Spiele liegt in der Regel zwischen **95 % und 99 %**. Besonders interessant ist das Roulette-Spiel mit einer Hausvorteil von nur **2,7 %**, was für Spieler von Vorteil ist.

    3. Live-Casino

    Das Live-Casino von Gamba ist ein Highlight. Hier können Sie in Echtzeit gegen echte Dealer spielen, was die Atmosphäre eines physischen Casinos simuliert. Gamba Casino bietet über 30 Live-Spiele an, einschließlich Live-Roulette und Live-Blackjack. Die Streaming-Qualität ist hoch, was das Spielerlebnis erheblich verbessert. Ein kleiner Nachteil: Die Einsätze können hier höher sein, oft ab **10 EUR**.

    4. Mobile Spielmöglichkeiten

    Die mobile Version von Gamba Casino ist benutzerfreundlich und bietet Zugriff auf nahezu alle Spiele. Ob Sie ein iOS- oder Android-Gerät verwenden, die App funktioniert reibungslos. Das ist besonders wichtig, da die Mobilität heutzutage für viele Spieler eine große Rolle spielt. Die Ladezeiten sind kurz — in der Regel unter **5 Sekunden**.

    5. Boni und Promotionen

    Gamba Casino lockt neue Spieler mit einem Willkommensbonus von bis zu **1.000 EUR** und 200 Freispielen. Beachten Sie jedoch, dass die Umsatzbedingungen von **37x** für den Bonus und die Gewinne aus Freispielen gelten. Dies kann im Vergleich zu anderen Casinos als hoch angesehen werden, also lesen Sie das Kleingedruckte sorgfältig.

    6. Sicherheit und Regulierung

    Die Sicherheit der Spieler hat bei Gamba Casino höchste Priorität. Das Casino ist von der GGL (Gemeinsame Glücksspielbehörde der Länder) lizenziert, was bedeutet, dass es strengen Sicherheitsstandards unterliegt. Ihre Daten sind durch SSL-Verschlüsselung geschützt. Ein weiterer Pluspunkt: Die Auszahlungen erfolgen in der Regel innerhalb von **23-47 Stunden**, was im Vergleich zu anderen Anbietern schnell ist.

    7. Zahlungsmethoden

    Gamba Casino bietet eine Vielzahl von Zahlungsmethoden an, darunter Kreditkarten, E-Wallets und Banküberweisungen. Die Mindestanzahlung beträgt **10 EUR**, was für die meisten Spieler akzeptabel ist. Es ist erwähnenswert, dass einige Zahlungsmethoden längere Bearbeitungszeiten haben können, was sich auf Ihre Auszahlungszeit auswirken kann.

    8. Kundenservice

    Der Kundenservice von Gamba Casino ist rund um die Uhr verfügbar. Sie können Unterstützung per E-Mail oder Live-Chat erhalten. Die Reaktionszeit im Live-Chat lag in meinem Test bei etwa **3 Minuten**, was ich als recht zügig empfand. Eine FAQ-Seite ist ebenfalls vorhanden, die viele häufig gestellte Fragen abdeckt.

    Spieltyp Anzahl der Spiele RTP (%)
    Spielautomaten 1.200 96,3
    Tischspiele 120 95-99
    Live-Spiele 30 90-95
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.