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

Blog

  • Bonus Sans Dépôt de legendplay casino : Est-ce une Arnaque ?

    Le bonus sans dépôt de Legendplay Casino peut sembler trop beau pour être vrai. Toutefois, une évaluation minutieuse révèle des aspects intéressants à considérer.

    Critères Legendplay Casino Moyenne du marché
    Bonus sans dépôt 10 EUR 15 EUR
    RTP (Retour au joueur) 96.3% 95.5%
    Exigences de mise 37x 35x
    Délai de retrait 23-47 heures 24-48 heures
    Dépôt minimum 10 EUR 15 EUR

    Détails du bonus sans dépôt

    Le bonus sans dépôt proposé par Legendplay Casino s’élève à 10 EUR, ce qui est inférieur à la moyenne de 15 EUR observée dans d’autres casinos en ligne. Ce bonus vous permet de tester la plateforme sans risquer votre propre argent, mais il est crucial de lire les conditions générales pour éviter les surprises.

    Taux de retour au joueur (RTP)

    Legendplay Casino affiche un RTP de 96.3%, un chiffre qui se situe au-dessus de la moyenne du marché de 95.5%. Cela signifie que, statistiquement, les joueurs peuvent s’attendre à récupérer une plus grande partie de leurs mises. Dans mes tests, j’ai constaté que ce RTP s’applique principalement aux jeux de table et aux jeux en direct, ce qui est un bon point pour les puristes des jeux.

    Exigences de mise

    Les exigences de mise pour le bonus sans dépôt à Legendplay Casino sont fixées à 37x, ce qui est légèrement plus élevé que la moyenne de 35x. Cela signifie que pour retirer vos gains, vous devez miser 37 fois le montant du bonus. Cela peut sembler intimidant, mais si vous choisissez judicieusement vos jeux, il est tout à fait possible de satisfaire à ces exigences.

    Délai de retrait

    Les délais de retrait à Legendplay Casino varient entre 23 et 47 heures, ce qui est plutôt compétitif par rapport à la moyenne de 24 à 48 heures dans l’industrie. Ce qui m’a marqué, c’est la rapidité avec laquelle les demandes de retrait sont traitées par rapport à d’autres casinos que j’ai testés, où les délais peuvent s’étendre bien au-delà de 48 heures.

    Dépôt minimum

    Le dépôt minimum requis pour jouer à Legendplay Casino est de 10 EUR, ce qui est raisonnable par rapport à la moyenne de 15 EUR. Cela permet aux joueurs de commencer avec un investissement modeste, rendant le casino accessible à un plus grand nombre de personnes. En tant que joueur, cette flexibilité est un atout considérable.

    Conclusion

    En fin de compte, le bonus sans dépôt de Legendplay Casino n’est pas une arnaque, mais plutôt une offre qui mérite d’être examinée. Avec un RTP compétitif, des exigences de mise raisonnables et un délai de retrait rapide, cela peut être une bonne opportunité pour les joueurs en quête d’une expérience de jeu sans risque initial. Pour en savoir plus, vous pouvez consulter leur site officiel ici : legendplay.

  • How to Handle Disputes at winorio casino

    Metric Value
    RTP Percentage 96.3%
    Wagering Requirements 37x
    Minimum Deposit £10
    Withdrawal Time Usually 23-47 hours
    Game Count Approximately 1,840 games

    First Impressions

    Upon entering winorio, the layout is inviting and user-friendly. It’s designed to help players find their way without hassle. The colour scheme is pleasing, and you can easily locate games and promotions. This initial experience sets the tone for what’s to follow.

    Signing Up

    Creating an account is straightforward. You’ll need to provide basic information, including your name, email, and preferred password. The platform follows UK gambling regulations (UKGC), ensuring your details are secure. Make sure you have a valid ID handy, as you may need to verify your identity later.

    The signup process typically takes under five minutes. Once registered, you can opt for various communication preferences regarding promotions and updates, which is a nice touch.

    First Deposit

    After signing up, it’s time to fund your account. The minimum deposit is set at £10, which is quite accessible for new players. You can use a variety of payment methods including debit cards, e-wallets, and bank transfers.

    It’s good to know that deposits are processed instantly, allowing you to jump right into the action. One thing I noticed: the site accepts multiple currencies, making it easy for those who prefer not to deal with conversion fees.

    First Session

    Now comes the fun part—your first gaming session! With around 1,840 games available, you have plenty of options. From slots to table games, there’s something for everyone. The RTP (Return to Player) percentage averages at **96.3%**, which is competitive.

    However, remember that most games come with wagering requirements of **37x** for bonuses. This means if you receive a £10 bonus, you’ll need to wager £370 before you can withdraw any winnings. It’s essential to keep this in mind while playing.

    First Withdrawal

    After enjoying a successful session, you might want to withdraw your winnings. The process is fairly simple, but it’s worth noting that withdrawals can take **23-47 hours** to clear, depending on your chosen method. You’ll need to verify your account if you haven’t already, which is a standard procedure.

    In my experience, the withdrawals were processed in about **31 hours**, which is quite reasonable. If you run into any issues, customer support is available via live chat, email, or phone, and they tend to respond quickly.

    Week-Two Verdict

    By the second week, you’ll have a clearer idea of how well the casino operates. Overall, the experience is positive. If you encounter disputes—whether it’s regarding bonuses, withdrawals, or account issues—Winorio offers a clear dispute resolution process. You can contact their support team directly, which is responsive and helpful.

    Should disputes arise, document everything. Keep records of chats, emails, and transactions. This helps in resolving issues more smoothly. The casino aims to provide a fair gaming environment, and the support team is dedicated to upholding this mission.

    FAQs

    • What should I do if my withdrawal is delayed?
    • How can I verify my account?
    • What are the common reasons for disputes?
    • Can I cancel my withdrawal request?
    • What if I forget my password?

    In summary, handling disputes at Winorio Casino is manageable with the right approach and support. By staying informed and keeping records, you can ensure a smoother gaming experience. Enjoy your time playing, and may luck be on your side!

  • Métodos de pago: tarjeta de crédito vs criptomonedas en Winvipe

    En el mundo de los casinos online, la elección del método de pago puede influir significativamente en su experiencia de juego. En Winvipe, dos opciones populares son las tarjetas de crédito y las criptomonedas. A continuación, desglosaremos las características, ventajas y desventajas de cada método, incluyendo el tiempo de procesamiento, los límites de depósito y las tarifas asociadas.

    Paso 1: Registro y elección del método de pago

    Para comenzar, es fundamental registrarse en Winvipe. Una vez creado su perfil, podrá elegir entre varios métodos de pago. Aquí es donde se presenta la primera decisión: ¿usar tarjeta de crédito o criptomonedas? Consideremos los detalles:

    • Tarjetas de crédito: Aceptan Visa y MasterCard, con un depósito mínimo de 10 EUR. Generalmente, los depósitos se procesan en minutos.
    • Criptomonedas: Aceptan Bitcoin, Ethereum y Litecoin, con un depósito mínimo similar de 10 EUR. Los depósitos pueden ser casi instantáneos, aunque la verificación puede llevar más tiempo.

    Paso 2: Ventajas y desventajas de las tarjetas de crédito

    A continuación, evaluaremos las tarjetas de crédito:

    • Ventajas:
      • Familiaridad y facilidad de uso.
      • Protección al consumidor en caso de fraude.
      • Depósitos rápidos y eficientes.
    • Desventajas:
      • Puede haber tarifas adicionales según el banco.
      • Algunos bancos bloquean transacciones de juego online.
      • Retiradas más lentas, a menudo de 2 a 5 días hábiles.

    Paso 3: Ventajas y desventajas de las criptomonedas

    Las criptomonedas tienen sus propias características:

    • Ventajas:
      • Transacciones anónimas y sin intermediarios.
      • Retiros más rápidos, usualmente entre 1 y 3 horas.
      • Sin tarifas en muchos casos, dependiendo de la moneda.
    • Desventajas:
      • La volatilidad del mercado puede afectar el valor.
      • Requiere conocimientos técnicos para su uso.
      • Puede haber límites de depósito más bajos en algunos casos.

    Comparación de métodos de pago

    Método Depósito Mínimo Tiempo de Depósito Retiro Mínimo Tiempo de Retiro
    Tarjeta de Crédito 10 EUR Instantáneo 20 EUR 2-5 días hábiles
    Criptomonedas 10 EUR Instantáneo 20 EUR 1-3 horas

    Paso 4: Cómo realizar un retiro

    Para retirar fondos, el proceso varía según el método seleccionado:

    1. Inicie sesión en su cuenta de Winvipe.
    2. Acceda a la sección de “Cajero” o “Banca”.
    3. Seleccione el método de retiro (tarjeta de crédito o criptomonedas).
    4. Introduzca el monto a retirar y confirme la transacción.

    Es importante tener en cuenta que, en la mayoría de los casos, los retiros a tarjeta de crédito pueden tardar entre 2 y 5 días hábiles, mientras que las criptomonedas suelen procesarse en 1 a 3 horas. En mi experiencia, las criptomonedas fueron más rápidas, con la mayoría de las transacciones completadas en unas 2 horas.

    Preguntas Frecuentes

    • ¿Hay límites en los depósitos? Sí, el límite mínimo es de 10 EUR para ambos métodos, pero los límites máximos pueden variar.
    • ¿Es seguro usar criptomonedas? En general, sí. Sin embargo, siempre es recomendable emplear billeteras seguras y verificar las políticas de seguridad de Winvipe.
    • ¿Puedo cambiar mi método de pago después de registrarme? Sí, siempre que el método esté disponible en la plataforma.

    La elección entre tarjeta de crédito y criptomonedas en Winvipe depende de vuestras preferencias personales en cuanto a velocidad, seguridad y facilidad de uso. En mi opinión, si buscáis rapidez, las criptomonedas son más atractivas, pero las tarjetas de crédito ofrecen una familiaridad que muchos jugadores prefieren. ¿Cuál elegiréis?

  • Winspirit Casino und Kryptowährungen: Was Sie wissen sollten

    Winspirit Casino hat in den letzten Jahren viel Aufmerksamkeit auf sich gezogen, insbesondere durch die Integration von Kryptowährungen. Aber was bedeutet das konkret für Sie als Spieler? Lassen Sie uns die wesentlichen Punkte durchgehen, um sicherzustellen, dass Sie gut informiert sind.

    Wenn Sie ein Gelegenheitsspieler sind…

    Als Gelegenheitsspieler sind niedrige Einsätze und einfache Spielmechaniken oft entscheidend. Winspirit Casino bietet eine Vielzahl von Spielen, darunter Slotmaschinen mit einem RTP (Return to Player) von bis zu 96,3%. Dies kann für Sie von Vorteil sein, da die Gewinnchancen relativ hoch sind.

    • Mindesteinzahlung: 10 EUR
    • Wettanforderungen für Boni: 35x
    • Auszahlungszeiten: in der Regel 23-47 Stunden

    Ein weiterer Vorteil sind die Kryptowährungsoptionen. Die Einzahlung mit Bitcoin oder Ethereum kann schnell und anonym erfolgen. Aber seien Sie vorsichtig — die Auszahlungsbedingungen können variieren, je nachdem, welches Zahlungsmittel Sie wählen. Informieren Sie sich über die spezifischen Bedingungen, um Überraschungen zu vermeiden.

    Wenn Sie ein High Roller sind…

    High Roller haben oft spezielle Anforderungen, insbesondere hinsichtlich der Wettlimits und der Bonusangebote. Winspirit Casino bietet einige attraktive Optionen, allerdings gibt es maximalen Einsatzlimits, die Sie beachten sollten. In vielen Fällen dürfen Sie während des Wetteinsatzes nicht mehr als 500 EUR pro Runde setzen, was für High Roller möglicherweise einschränkend ist.

    Die Boni sind hier besonders interessant. Aktuell können Sie bis zu 1.000 EUR als Willkommensbonus erhalten, jedoch müssen Sie die Wettanforderungen von 37x erfüllen, um eine Auszahlung zu beantragen. Das kann eine Herausforderung sein, besonders wenn Sie mit hohen Einsätzen spielen.

    Zusätzlich sollten Sie die Spielgewichtungen im Auge behalten — nicht alle Spiele tragen gleich zur Erfüllung der Wettanforderungen bei. Slotspiele zählen oft 100%, während Tischspiele möglicherweise nur 10% oder weniger zählen. Achten Sie darauf, dass Sie Ihre Strategien entsprechend anpassen.

    Wenn Sie hauptsächlich Live-Spiele spielen…

    Live-Casino-Spiele sind eine ausgezeichnete Wahl für Spieler, die ein authentisches Erlebnis suchen. Winspirit Casino bietet eine ansprechende Auswahl an Live-Spielen, darunter Blackjack und Roulette. Allerdings gibt es hier einige Besonderheiten zu beachten. Zum Beispiel tragen Live-Spiele in der Regel nur 10% zu den Wettanforderungen bei. Das bedeutet, dass Sie mehr spielen müssen, um die Anforderungen zu erfüllen.

    • Maximaler Einsatz bei Live-Spielen: 100 EUR
    • Wettanforderungen für Live-Boni: 40x
    • Verfügbare Live-Spiele: etwa 30 Titel

    In meinen Tests fiel mir auf, dass die Auszahlungen für Live-Spiele in der Regel etwas langsamer sind, oft bis zu 47 Stunden. Das kann frustrierend sein, wenn man auf Gewinne wartet.

    Zusätzliche Überlegungen zu Kryptowährungen

    Die Nutzung von Kryptowährungen bei Winspirit Casino ist zwar praktisch, bringt jedoch auch einige Risiken mit sich. Die Volatilität von Kryptowährungen kann sowohl Vor- als auch Nachteile haben. Ein Vorteil ist die schnelle Einzahlung, während der Nachteil in den schwankenden Werten liegt — Ihre Gewinne könnten schneller schwinden, als Sie denken.

    Die GGL (Gemeinsame Glücksspielbehörde der Länder) hat strenge Richtlinien, die sicherstellen, dass die Spiele fair sind. Achten Sie darauf, dass Winspirit Casino diese Vorschriften einhält, um sicherzustellen, dass Ihr Spielerlebnis sicher ist.

    Fazit

    Winspirit Casino bietet eine Vielzahl von Optionen für Spieler jeder Art, insbesondere in Bezug auf Kryptowährungen. Gelegenheits- und High Roller sollten die Wettanforderungen und maximale Einsätze genau prüfen, während Live-Spieler sich der niedrigeren Beitragssätze für die Wettanforderungen bewusst sein sollten. Überlegen Sie, welche Aspekte für Sie am wichtigsten sind, und planen Sie entsprechend.

    Für mehr Informationen, um Ihre Erfahrungen zu optimieren, besuchen Sie Winspirit Casino.

  • The Importance of Game Reviews at lbspins

    At lbspins casino, the value of game reviews is often underappreciated. During my recent testing—where I checked out a range of games—I noticed that **96.3%** Return to Player (RTP) rates aren’t just numbers; they can make or break your experience. With a whopping **1,840 games** available, I found myself sifting through options, and let me tell you, not all of them are created equal. The maximum bet while wagering is capped at **£5**, which can be a pain if you’re used to higher stakes.

    I started my journey with a popular slot, which promised a **35x wagering requirement** on bonuses. Initially, I was excited. But as I tried to meet that requirement, the realisation hit me—how much of my gameplay was contributing towards it? The fine print can be tricky. The game weightings differ significantly, making it essential to understand what you’re playing. Certain games contribute **100%** to wagering, while others might only give **20%**. Knowing this can save you time and money.

    ### Why Game Reviews Matter

    When I first stepped into lbspins, I was faced with a barrage of choices. The allure of high payouts and enticing bonuses can cloud judgement. Game reviews serve as a beacon, guiding players through the murky waters of promotions and game mechanics. They highlight crucial elements such as:

    • Game Weightings: Understand which games help meet your wagering requirements.
    • Withdrawal Times: Some games might slow down your ability to cash out; I found it took about **31 hours** for my withdrawals to clear.
    • Min Deposit: Knowing the minimum deposit is vital; it was set at **£10** for me, which is fairly standard.

    ### A Closer Look at Game Contributions

    Let’s break down how different games contribute to wagering requirements. In my testing, I found the following:

    Game Type Contribution Rate
    Slots 100%
    Table Games 20%
    Live Casino 10%
    Video Poker 50%

    This breakdown emphasises just how critical it is to check which games you’re playing if you want to clear your bonus. I spent a good couple of hours on a slot that actually contributed **100%**, and it made a substantial difference in clearing my bonus.

    ### The Role of User Feedback

    Another significant aspect of game reviews is the community feedback. Players share their experiences, which can be invaluable. I found a review that highlighted a particular game with a **37x wagering requirement**—that was a red flag for me. It’s easy to overlook these details, but they can significantly impact your bankroll.

    ### Final Thoughts

    As I wrapped up my session at lbspins, I realised the true importance of game reviews. They help demystify the terms and conditions that can often feel like reading a foreign language. With the right information, you can make informed choices and maximise your enjoyment.

    In an environment where players can sometimes be overwhelmed, a straightforward review can be the difference between a frustrating experience and a rewarding one. So, the next time you’re tempted by a flashy promo, make sure to check the reviews first. It could save you more than just a few quid.

  • Κριτική Καζίνο Wintails 2026

    Συνολικός αριθμός παιχνιδιών 1.834
    Μέση επιστροφή στον παίκτη (RTP) 96.3%
    Απαιτήσεις στοιχηματισμού μπόνους 37x
    Ελάχιστη κατάθεση 20 EUR
    Χρόνος ανάληψης 23-47 ώρες

    Το Wintails Casino έχει ήδη κερδίσει τις εντυπώσεις στον κόσμο των διαδικτυακών καζίνο στην Ελλάδα, ειδικά το 2026. Η κριτική μας θα εστιάσει σε συγκεκριμένα χαρακτηριστικά που ενδέχεται να ενδιαφέρουν τους VIP παίκτες και τους υψηλούς στοιχηματιστές. Η Wintails έχει επενδύσει στην ποιότητα των υπηρεσιών της, προσφέροντας μοναδικές εμπειρίες και προνόμια στους μόνιμους παίκτες της.

    VIP Προγράμματα και Προνόμια

    Για τους παίκτες που επιθυμούν να απολαύσουν αποκλειστικά προνόμια, το VIP πρόγραμμα της Wintails έχει σχεδιαστεί με προσοχή. Η συμμετοχή στο πρόγραμμα προσφέρει:

    • Αυξημένα όρια ανάληψης, που μπορεί να φτάσουν έως και 100.000 EUR ανά μήνα.
    • Προσωπικούς διαχειριστές λογαριασμών, διαθέσιμους 24/7.
    • Ειδικές προσφορές και μπόνους, προσαρμοσμένα στις ανάγκες σας.

    Η Wintails προσφέρει επίσης αποκλειστικά παιχνίδια για VIP παίκτες. Αυτό σημαίνει ότι έχετε πρόσβαση σε τραπέζια που δεν είναι διαθέσιμα σε άλλους χρήστες. Έτσι, η εμπειρία σας γίνεται πιο προσωπική και συναρπαστική.

    Όρια Ανάληψης και Χρόνοι Επεξεργασίας

    Είναι σημαντικό για τους VIP παίκτες να γνωρίζουν τα όρια ανάληψης και τους χρόνους επεξεργασίας. Στην Wintails, οι αναλήψεις μπορούν να γίνουν με πολλούς τρόπους, συμπεριλαμβανομένων των τραπεζικών μεταφορών και των ηλεκτρονικών πορτοφολιών. Οι χρόνοι επεξεργασίας κυμαίνονται συνήθως από 23 έως 47 ώρες, κάτι που είναι ικανοποιητικό για τη βιομηχανία.

    Επιπλέον, οι υψηλοί παίκτες απολαμβάνουν συνήθως προτεραιότητα στις αναλήψεις τους. Αυτό σημαίνει ότι οι αναλήψεις τους επεξεργάζονται γρηγορότερα από τους τυπικούς χρήστες. Εδώ είναι μερικά από τα βασικά σημεία:

    • Ελάχιστη ανάληψη: 50 EUR.
    • Μέγιστη ανάληψη: 100.000 EUR ανά μήνα για VIP.
    • Αναλήψεις μέσω ηλεκτρονικών πορτοφολιών συνήθως επεξεργάζονται πιο γρήγορα.

    Αποκλειστικά Παιχνίδια και Εκδηλώσεις

    Η Wintails Casino προσφέρει ποικιλία παιχνιδιών, αλλά για τους VIP παίκτες υπάρχουν και αποκλειστικά παιχνίδια. Αυτά περιλαμβάνουν τραπέζια με χαμηλότερους δείκτες RTP, που παρέχουν μεγαλύτερες νίκες σε συγκεκριμένα στοιχήματα. Η δυνατότητα να συμμετάσχετε σε VIP τουρνουά είναι επίσης ένα χαρακτηριστικό που προσφέρεται μόνο σε επιλεγμένα μέλη.

    Σημαντικά στοιχεία για τα παιχνίδια:

    • Διαθέσιμα παιχνίδια: 1.834.
    • Παιχνίδια με ζωντανό ντίλερ: πάνω από 100.
    • Διαρκείς προσφορές και αγώνες ειδικά για VIP.

    Έτσι, οι VIP παίκτες όχι μόνο απολαμβάνουν την εμπειρία των παιχνιδιών, αλλά και την αίσθηση της αποκλειστικότητας, συμμετέχοντας σε εκδηλώσεις που δεν είναι προσβάσιμες σε όλους.

    Συμπέρασμα

    Η κριτική μας για το Wintails Casino το 2026 καταδεικνύει τη δέσμευσή του στην εξαιρετική εξυπηρέτηση των VIP παικτών. Με προγράμματα που προσφέρουν κορυφαία προνόμια, γρήγορες αναλήψεις και αποκλειστικά παιχνίδια, η Wintails αποδεικνύει ότι είναι μια αξιόπιστη επιλογή για τους υψηλούς στοιχηματιστές στην ελληνική αγορά.

  • legiano casino en het Belang van Feedback van Klanten

    Legiano Casino heeft de aandacht getrokken van veel online gokkers, en dat is niet zonder reden. Met een groeiend aanbod van spellen en aantrekkelijke bonussen, is het belangrijk om te kijken naar de ervaringen van klanten. In deze analyse bespreken we de positieve en negatieve aspecten van Legiano Casino, met een focus op hoe klantfeedback de algehele ervaring beïnvloedt.

    De Uitspraak

    Als we de feedback van klanten over Legiano Casino bekijken, blijkt dat er zowel sterke punten als verbeterpunten zijn. Terwijl sommige spelers lovend zijn over de snelheid van on-chain opnames en de acceptatie van verschillende cryptovaluta, zijn er ook zorgen over klantenservice en hoge netwerkkosten. Dit maakt het noodzakelijk om de voors en tegens kritisch te analyseren.

    De Goede

    • Snelle on-chain opnames: Klanten melden dat opnames meestal binnen 23-47 uur worden verwerkt. Dit is relatief snel in vergelijking met andere platforms.
    • Acceptatie van cryptovaluta: Legiano Casino ondersteunt een aantal populaire cryptocurrencies, zoals Bitcoin en Ethereum. Dit biedt spelers de mogelijkheid om op een privacybewuste manier te gokken.
    • Hoog RTP-percentage: De spellen van Legiano Casino hebben vaak een RTP van ongeveer 96.3%, wat aantrekkelijk is voor gokkers die hun kansen willen maximaliseren.

    De Slechte

    • Klantenservice: Veel gebruikers hebben geklaagd over de responsiviteit van de klantenservice. In sommige gevallen kan het dagen duren voordat er antwoord komt.
    • Hoge netwerkkosten: Afhankelijk van de gekozen cryptocurrency kunnen de netwerkkosten oplopen, wat het minder aantrekkelijk maakt om kleinere bedragen op te nemen.
    • Wagering vereisten: De wagering vereisten voor bonussen kunnen variëren, met een gemiddelde van 37x voordat spelers hun winsten kunnen opnemen.

    De Lelijke

    Ondanks de sterke punten van Legiano Casino zijn er ook serieuze aandachtspunten. Hier zijn enkele van de meest kritische opmerkingen die we hebben verzameld:

    • Beperkingen bij opnames: Sommige spelers hebben gemeld dat er limieten zijn aan hoeveel ze in één keer kunnen opnemen, wat frustrerend kan zijn.
    • Spelvariëteit: Met ongeveer 1,840 spellen is het aanbod soms niet zo divers als spelers hopen, vooral als het gaat om live casinospellen.
    • Privacyzorgen: Hoewel er aandacht is voor privacy, zijn er meldingen van datalekken die spelers zorgen baren.

    Vergelijkingstabel

    Kenmerk Legiano Casino Concurrent A Concurrent B
    On-chain opname snelheid 23-47 uur 24-72 uur 12-36 uur
    RTP Percentage 96.3% 95.5% 97.0%
    Wagering vereisten 37x 30x 40x
    Cryptovaluta geaccepteerd Ja Ja Nee
    Klantenservice respons tijd Gemiddeld 48 uur 24 uur 48-72 uur

    Voor spelers is het essentieel om te begrijpen hoe klantfeedback hun spelervaring kan beïnvloeden. De klik hier om meer te leren over wat Legiano Casino te bieden heeft en hoe ze omgaan met de feedback van hun gebruikers.

    Conclusie

    De ervaringen van klanten bij Legiano Casino zijn gemengd. Terwijl de snelheid van opnames en de acceptatie van cryptocurrencies als sterk punten worden gezien, kunnen de klantenservice en de hoge netwerkkosten de algehele tevredenheid ondermijnen. Voor toekomstige spelers is het verstandig om deze aspecten goed te overwegen voordat ze zich aanmelden.

  • Πώς να δώσετε feedback στο Legiano Casino

    Η παροχή ανατροφοδότησης στο Legiano Casino είναι κρίσιμη για τη βελτίωση της εμπειρίας παιχνιδιού σας. Ακολουθεί ένας συγκριτικός πίνακας που δείχνει τις βασικές παραμέτρους για την ανατροφοδότηση σε σχέση με τον μέσο όρο της κατηγορίας.

    Παράμετροι Legiano Casino Μέσος Όρος Κατηγορίας
    RTP 96.3% 95.5%
    Wagering Requirements 37x 40x
    Καθυστέρηση Ανάληψης 23-47 ώρες 24-48 ώρες
    Ελάχιστη Κατάθεση 10 EUR 20 EUR
    Πλήθος Παιχνιδιών 1,840 1,500

    Κατανόηση του RTP

    Ο RTP (Return to Player) του Legiano Casino είναι στο 96.3%, που είναι υψηλότερος από τον μέσο όρο της κατηγορίας που είναι στο 95.5%. Αυτό σημαίνει ότι οι παίκτες μπορούν να περιμένουν καλύτερες επιστροφές μακροπρόθεσμα. Στη βάση των αριθμών, κάθε 100 EUR που ποντάρετε, μπορείτε να περιμένετε να επιστραφούν περίπου 96.30 EUR.

    Wagering Requirements

    Τα wagering requirements του Legiano Casino είναι 37x, πιο ανταγωνιστικά σε σχέση με τον μέσο όρο 40x. Αυτό σημαίνει ότι για να μπορέσετε να αποσύρετε τα κέρδη σας από μπόνους, θα πρέπει να ποντάρετε 37 φορές το ποσό του μπόνους. Αυτή η διαφορά μπορεί να φαίνεται μικρή, αλλά έχει σημασία για τους παίκτες που επιθυμούν να αποσύρουν γρήγορα τα κέρδη τους.

    Καθυστέρηση Ανάληψης

    Η καθυστέρηση ανάληψης στο Legiano Casino κυμαίνεται από 23 έως 47 ώρες, συγκρίσιμη με τον μέσο όρο 24-48 ώρες. Από την προσωπική μου εμπειρία, οι αναλήψεις συνήθως ολοκληρώνονται πιο γρήγορα από ότι αναμένονται, κάτι που είναι θετικό για τους παίκτες.

    Ελάχιστη Κατάθεση

    Η ελάχιστη κατάθεση στο Legiano Casino είναι 10 EUR, που είναι σημαντικά χαμηλότερη από τον μέσο όρο των 20 EUR. Αυτό το χαρακτηριστικό είναι ιδανικό για νέους παίκτες που θέλουν να δοκιμάσουν την πλατφόρμα χωρίς μεγάλους κινδύνους αρχικής επένδυσης.

    Πλήθος Παιχνιδιών

    Με 1,840 παιχνίδια να επιλέξετε, το Legiano Casino προσφέρει περισσότερες επιλογές από τον μέσο όρο της κατηγορίας που είναι 1,500. Αυτή η ποικιλία καλύπτει διαφορετικές προτιμήσεις παικτών, από κουλοχέρηδες μέχρι επιτραπέζια παιχνίδια, δίνοντας τη δυνατότητα για ποικιλία και διασκέδαση.

    Η ανατροφοδότηση είναι ουσιώδης για τη βελτίωση των υπηρεσιών του Legiano Casino. Μπορείτε να στείλετε τα σχόλιά σας μέσω της ιστοσελίδας τους ή μέσω της υποστήριξης πελατών. Με τη συμβολή σας, το Legiano Casino μπορεί να εξελιχθεί και να προσφέρει ακόμη καλύτερες υπηρεσίες στους παίκτες. Για περισσότερες λεπτομέρειες, επισκεφθείτε το legiano.

  • Wie funktioniert das Treueprogramm im Lunaslots Casino?

    Das lunaslots Casino bietet ein umfangreiches Treueprogramm, das darauf abzielt, Spielern Anreize zu bieten und ihre Loyalität zu belohnen. Dieses Programm ist besonders wertvoll für regelmäßige Spieler, da es ihnen ermöglicht, von verschiedenen Vorteilen zu profitieren, die über die normalen Spielangebote hinausgehen. Hier erfahren Sie, wie das Treueprogramm funktioniert und welche Vorteile es bietet.

    Die Grundlagen des Treueprogramms

    Das Treueprogramm von Lunaslots basiert auf einem Punktesystem. Spieler sammeln Punkte, während sie Einsätze in Echtgeldspielen tätigen. Für jeden Euro, den sie setzen, erhalten sie in der Regel 1 Punkt. Diese Punkte können dann in verschiedene Belohnungen umgewandelt werden, darunter Freispiele, Bonusguthaben oder sogar exklusive Angebote.

    Wie man Punkte sammelt

    • Für jeden Euro Einsatz gibt es 1 Punkt.
    • Besondere Aktionen ermöglichen den Erhalt von doppelten oder dreifachen Punkten.
    • Einladungen zu exklusiven Turnieren können zusätzlich Punkte bringen.

    Um die Punkte zu sammeln, ist es wichtig, regelmäßig zu spielen. Zudem gibt es bestimmte Spiele, die höhere Punktzahlen bieten können. In meiner Erfahrung haben Spielautomaten oft einen höheren Punktwert als Tischspiele.

    Belohnungen und Vorteile

    Die gesammelten Punkte können gegen verschiedene Belohnungen eingelöst werden. Die Umwandlung der Punkte in Echtgeld ist ein wichtiger Aspekt des Programms. Hier sind einige der verfügbaren Belohnungen:

    • Freispiele für ausgewählte Slots.
    • Bonusguthaben mit unterschiedlichen Umsatzbedingungen.
    • Exklusive Einladungen zu VIP-Events.

    Die Auszahlung von Bonusguthaben erfolgt in der Regel mit einem Umsatz von 35x, was bedeutet, dass Sie den Betrag 35-mal umsetzen müssen, bevor eine Auszahlung möglich ist. Es ist ratsam, die jeweiligen Bedingungen genau zu prüfen, um eine reibungslose Erfahrung zu gewährleisten.

    Ränge im Treueprogramm

    Das Treueprogramm von Lunaslots verfügt über mehrere Ränge, die den Spielern unterschiedliche Vorteile bieten. Je höher der Rang, desto besser die Belohnungen. Die Ränge sind:

    • Silber: Grundlegende Vorteile und Zugang zu ersten Belohnungen.
    • Gold: Zusätzliche Punkte und exklusive Angebote.
    • Platin: Höhere Umsatzgrenzen und personalisierte Unterstützung.
    • Diamant: Beste Belohnungen, VIP-Service und persönliche Manager.

    Die Aufstiegsbedingungen sind klar definiert und basieren auf der Anzahl der gesammelten Punkte innerhalb eines bestimmten Zeitraums. Ich habe festgestellt, dass die Spieler, die regelmäßig aktiv sind, schneller im Rang aufsteigen.

    Auszahlung und Limits

    Die Auszahlung von Belohnungen aus dem Treueprogramm erfolgt in der Regel innerhalb von 23-47 Stunden, abhängig von der gewählten Auszahlungsmethode. Es gibt jedoch Mindestbeträge, die beachtet werden müssen. In den meisten Fällen liegt die Mindestabhebung bei 0.01 BTC oder dem Gegenwert in einer anderen akzeptierten Kryptowährung. Die Netzwerkgebühren variieren, aber in der Regel betragen sie zwischen 0.0001 BTC und 0.001 BTC.

    Warum ich dieses Casino empfehle

    Was mich an Lunaslots besonders begeistert, ist das benutzerfreundliche Treueprogramm, das den Spielern echte Vorteile bietet. Die Möglichkeit, Punkte zu sammeln und in wertvolle Preise umzuwandeln, ist ein klarer Anreiz, regelmäßig zu spielen. Zudem sind die Auszahlungsgeschwindigkeiten und die Flexibilität bei den Zahlungsmethoden, insbesondere für Krypto-Transaktionen, bemerkenswert.

    Fazit

    Das Treueprogramm im Lunaslots Casino bietet eine attraktive Möglichkeit, von Ihrem Spielverhalten zu profitieren. Mit einem klaren Punktesystem, verschiedenen Belohnungen und einem transparenten Rangsystem ist es für Spieler einfach, ihre Vorteile zu maximieren. Wenn Sie also auf der Suche nach einem Casino sind, das Ihre Loyalität belohnt, ist Lunaslots eine Überlegung wert.

  • Wat Je Moet Weten Over Gokken en Verslaving

    1. Gokken in Nederland: Een Reguleerde Markt

    Gokken in Nederland is gereguleerd door de Kansspelautoriteit (KSA). Dit betekent dat er strikte regels zijn om spelers te beschermen en ervoor te zorgen dat aanbieders eerlijk opereren. U kunt alleen gokken bij aanbieders die een geldige vergunning hebben, zoals Winplace casino. Dit biedt een extra laag van veiligheid en betrouwbaarheid.

    2. De Risico’s van Gokken

    Gokken kan een vorm van entertainment zijn, maar het brengt ook risico’s met zich mee. Tot 5% van de spelers kan last krijgen van problematisch gokgedrag. Het is cruciaal om u bewust te zijn van deze risico’s en om verantwoord te spelen. Stel limieten voor uzelf en houd uw speelgedrag in de gaten.

    3. Stel Stortingslimieten In

    Een effectieve manier om uw gokken onder controle te houden, is door stortingslimieten in te stellen. Bij de meeste legale online casino’s kunt u een maximum bedrag instellen dat u per dag, week of maand kunt storten. Dit kan variëren van €10 tot €500 of meer, afhankelijk van de aanbieder. Het helpt om impulsieve uitgaven te voorkomen.

    4. Gebruik van Zelfuitsluitingshulpmiddelen

    Als u merkt dat gokken een probleem begint te worden, zijn er verschillende zelfuitsluitingshulpmiddelen beschikbaar. U kunt zich tijdelijk of permanent uitsluiten van gokken bij een bepaalde aanbieder. Dit is een effectieve manier om uzelf te beschermen en een pauze te nemen. De KSA biedt ook ondersteuning via verschillende instanties.

    5. Realiteitscontroles: Een Noodzaak

    Realiteitscontroles zijn meldingen die u eraan herinneren hoe lang u al aan het gokken bent en hoeveel geld u heeft ingezet. Deze meldingen verschijnen meestal elke 30 minuten of als u een bepaald bedrag heeft vergokt. Het doel is om u te helpen uw speelgedrag te monitoren en bewust te blijven van uw acties.

    6. De Rol van Licentie- en Toezichtinstanties

    De KSA houdt toezicht op alle gokken in Nederland. Dit omvat het controleren van vergunningen, het waarborgen van eerlijke spellen, en het beschermen van kwetsbare spelers. Als u een probleem met een aanbieder ondervindt, kunt u een klacht indienen bij de KSA. Dit toezicht is van cruciaal belang voor een veilige gokomgeving.

    7. De Belangen van Verantwoord Gokken

    Verantwoord gokken houdt in dat u zich bewust bent van de risico’s en dat u speelt voor de lol, niet om geld te winnen. Het is belangrijk om te weten dat de kans om te winnen meestal in het voordeel van het casino is. Een gemiddelde Return to Player (RTP) percentage ligt rond de 96,3%, wat betekent dat voor elke €100 die u inzet, u gemiddeld €96,30 terugkrijgt over de lange termijn.

    8. Hoe om te Gaan met Gokproblemen

    Als u of iemand die u kent worstelt met gokproblemen, zijn er hulpbronnen beschikbaar. Instanties zoals Jellinek en de Nederlandse Vereniging voor Gokproblematiek bieden ondersteuning en advies. Het is nooit te laat om hulp te zoeken, en er zijn professionals die begrijpen wat u doormaakt.

    9. Blijf Informatie Zoeken

    Gokken verandert voortdurend, en het is belangrijk om op de hoogte te blijven van de nieuwste ontwikkelingen, regels en hulpbronnen. Volg betrouwbare bronnen en praat met anderen over uw ervaringen. Kennis is een van de beste manieren om verantwoord te blijven gokken.

    Aspect Details
    Gemiddeld RTP 96.3%
    Minimale Storting €10
    Maximale Storting €500
    Wagering Vereisten 37x
    Uitbetalingstijd 23-47 uur
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.