/** * Astra Updates * * Functions for updating data, used by the background updater. * * @package Astra * @version 2.1.3 */ defined( 'ABSPATH' ) || exit; /** * Clear Astra + Astra Pro assets cache. * * @since 3.6.1 * @return void. */ function astra_clear_all_assets_cache() { if ( ! class_exists( 'Astra_Cache_Base' ) ) { return; } // Clear Astra theme asset cache. $astra_cache_base_instance = new Astra_Cache_Base( 'astra' ); $astra_cache_base_instance->refresh_assets( 'astra' ); // Clear Astra Addon's static and dynamic CSS asset cache. $astra_addon_cache_base_instance = new Astra_Cache_Base( 'astra-addon' ); $astra_addon_cache_base_instance->refresh_assets( 'astra-addon' ); } /** * 4.0.0 backward handling part. * * 1. Migrate existing setting & do required onboarding for new admin dashboard v4.0.0 app. * 2. Migrating Post Structure & Meta options in title area meta parts. * * @since 4.0.0 * @return void */ function astra_theme_background_updater_4_0_0() { // Dynamic customizer migration starts here. $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['dynamic-blog-layouts'] ) && ! isset( $theme_options['theme-dynamic-customizer-support'] ) ) { $theme_options['dynamic-blog-layouts'] = false; $theme_options['theme-dynamic-customizer-support'] = true; $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); // Archive summary box compatibility. $archive_title_font_size = array( 'desktop' => isset( $theme_options['font-size-archive-summary-title']['desktop'] ) ? $theme_options['font-size-archive-summary-title']['desktop'] : 40, 'tablet' => isset( $theme_options['font-size-archive-summary-title']['tablet'] ) ? $theme_options['font-size-archive-summary-title']['tablet'] : '', 'mobile' => isset( $theme_options['font-size-archive-summary-title']['mobile'] ) ? $theme_options['font-size-archive-summary-title']['mobile'] : '', 'desktop-unit' => isset( $theme_options['font-size-archive-summary-title']['desktop-unit'] ) ? $theme_options['font-size-archive-summary-title']['desktop-unit'] : 'px', 'tablet-unit' => isset( $theme_options['font-size-archive-summary-title']['tablet-unit'] ) ? $theme_options['font-size-archive-summary-title']['tablet-unit'] : 'px', 'mobile-unit' => isset( $theme_options['font-size-archive-summary-title']['mobile-unit'] ) ? $theme_options['font-size-archive-summary-title']['mobile-unit'] : 'px', ); $single_title_font_size = array( 'desktop' => isset( $theme_options['font-size-entry-title']['desktop'] ) ? $theme_options['font-size-entry-title']['desktop'] : '', 'tablet' => isset( $theme_options['font-size-entry-title']['tablet'] ) ? $theme_options['font-size-entry-title']['tablet'] : '', 'mobile' => isset( $theme_options['font-size-entry-title']['mobile'] ) ? $theme_options['font-size-entry-title']['mobile'] : '', 'desktop-unit' => isset( $theme_options['font-size-entry-title']['desktop-unit'] ) ? $theme_options['font-size-entry-title']['desktop-unit'] : 'px', 'tablet-unit' => isset( $theme_options['font-size-entry-title']['tablet-unit'] ) ? $theme_options['font-size-entry-title']['tablet-unit'] : 'px', 'mobile-unit' => isset( $theme_options['font-size-entry-title']['mobile-unit'] ) ? $theme_options['font-size-entry-title']['mobile-unit'] : 'px', ); $archive_summary_box_bg = array( 'desktop' => array( 'background-color' => ! empty( $theme_options['archive-summary-box-bg-color'] ) ? $theme_options['archive-summary-box-bg-color'] : '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'background-type' => '', 'background-media' => '', ), 'tablet' => array( 'background-color' => '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'background-type' => '', 'background-media' => '', ), 'mobile' => array( 'background-color' => '', 'background-image' => '', 'background-repeat' => 'repeat', 'background-position' => 'center center', 'background-size' => 'auto', 'background-attachment' => 'scroll', 'background-type' => '', 'background-media' => '', ), ); // Single post structure. foreach ( $post_types as $post_type ) { /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_post_structure = isset( $theme_options['blog-single-post-structure'] ) ? $theme_options['blog-single-post-structure'] : array( 'single-image', 'single-title-meta' ); /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $migrated_post_structure = array(); if ( ! empty( $single_post_structure ) ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort foreach ( $single_post_structure as $key ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( 'single-title-meta' === $key ) { $migrated_post_structure[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title'; if ( 'post' === $post_type ) { $migrated_post_structure[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-meta'; } } if ( 'single-image' === $key ) { $migrated_post_structure[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-image'; } } $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-structure' ] = $migrated_post_structure; } // Single post meta. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_post_meta = isset( $theme_options['blog-single-meta'] ) ? $theme_options['blog-single-meta'] : array( 'comments', 'category', 'author' ); /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $migrated_post_metadata = array(); if ( ! empty( $single_post_meta ) ) { $tax_counter = 0; $tax_slug = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-taxonomy'; /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort foreach ( $single_post_meta as $key ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort switch ( $key ) { case 'author': $migrated_post_metadata[] = 'author'; break; case 'date': $migrated_post_metadata[] = 'date'; break; case 'comments': $migrated_post_metadata[] = 'comments'; break; case 'category': if ( 'post' === $post_type ) { $migrated_post_metadata[] = $tax_slug; $theme_options[ $tax_slug ] = 'category'; $tax_counter = ++$tax_counter; $tax_slug = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-taxonomy-' . $tax_counter; } break; case 'tag': if ( 'post' === $post_type ) { $migrated_post_metadata[] = $tax_slug; $theme_options[ $tax_slug ] = 'post_tag'; $tax_counter = ++$tax_counter; $tax_slug = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-taxonomy-' . $tax_counter; } break; default: break; } } $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-metadata' ] = $migrated_post_metadata; } // Archive layout compatibilities. $archive_banner_layout = class_exists( 'WooCommerce' ) && 'product' === $post_type ? false : true; // Setting WooCommerce archive option disabled as WC already added their header content on archive. $theme_options[ 'ast-archive-' . esc_attr( $post_type ) . '-title' ] = $archive_banner_layout; // Single layout compatibilities. $single_banner_layout = class_exists( 'WooCommerce' ) && 'product' === $post_type ? false : true; // Setting WC single option disabled as there is no any header set from default WooCommerce. $theme_options[ 'ast-single-' . esc_attr( $post_type ) . '-title' ] = $single_banner_layout; // BG color support. $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-image-type' ] = ! empty( $theme_options['archive-summary-box-bg-color'] ) ? 'custom' : 'none'; $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-custom-bg' ] = $archive_summary_box_bg; // Archive title font support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-family' ] = ! empty( $theme_options['font-family-archive-summary-title'] ) ? $theme_options['font-family-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-size' ] = $archive_title_font_size; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-weight' ] = ! empty( $theme_options['font-weight-archive-summary-title'] ) ? $theme_options['font-weight-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $archive_dynamic_line_height = ! empty( $theme_options['line-height-archive-summary-title'] ) ? $theme_options['line-height-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $archive_dynamic_text_transform = ! empty( $theme_options['text-transform-archive-summary-title'] ) ? $theme_options['text-transform-archive-summary-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-title-font-extras' ] = array( 'line-height' => $archive_dynamic_line_height, 'line-height-unit' => 'em', 'letter-spacing' => '', 'letter-spacing-unit' => 'px', 'text-transform' => $archive_dynamic_text_transform, 'text-decoration' => '', ); // Archive title colors support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-title-color' ] = ! empty( $theme_options['archive-summary-box-title-color'] ) ? $theme_options['archive-summary-box-title-color'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-text-color' ] = ! empty( $theme_options['archive-summary-box-text-color'] ) ? $theme_options['archive-summary-box-text-color'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort // Single title colors support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-banner-title-color' ] = ! empty( $theme_options['entry-title-color'] ) ? $theme_options['entry-title-color'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort // Single title font support. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-family' ] = ! empty( $theme_options['font-family-entry-title'] ) ? $theme_options['font-family-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-size' ] = $single_title_font_size; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-weight' ] = ! empty( $theme_options['font-weight-entry-title'] ) ? $theme_options['font-weight-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_dynamic_line_height = ! empty( $theme_options['line-height-entry-title'] ) ? $theme_options['line-height-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $single_dynamic_text_transform = ! empty( $theme_options['text-transform-entry-title'] ) ? $theme_options['text-transform-entry-title'] : ''; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-extras' ] = array( 'line-height' => $single_dynamic_line_height, 'line-height-unit' => 'em', 'letter-spacing' => '', 'letter-spacing-unit' => 'px', 'text-transform' => $single_dynamic_text_transform, 'text-decoration' => '', ); } // Set page specific structure, as page only has featured image at top & title beneath to it, hardcoded writing it here. $theme_options['ast-dynamic-single-page-structure'] = array( 'ast-dynamic-single-page-image', 'ast-dynamic-single-page-title' ); // EDD content layout & sidebar layout migration in new dynamic option. $theme_options['archive-download-content-layout'] = isset( $theme_options['edd-archive-product-layout'] ) ? $theme_options['edd-archive-product-layout'] : 'default'; $theme_options['archive-download-sidebar-layout'] = isset( $theme_options['edd-sidebar-layout'] ) ? $theme_options['edd-sidebar-layout'] : 'no-sidebar'; $theme_options['single-download-content-layout'] = isset( $theme_options['edd-single-product-layout'] ) ? $theme_options['edd-single-product-layout'] : 'default'; $theme_options['single-download-sidebar-layout'] = isset( $theme_options['edd-single-product-sidebar-layout'] ) ? $theme_options['edd-single-product-sidebar-layout'] : 'default'; update_option( 'astra-settings', $theme_options ); } // Admin backward handling starts here. $admin_dashboard_settings = get_option( 'astra_admin_settings', array() ); if ( ! isset( $admin_dashboard_settings['theme-setup-admin-migrated'] ) ) { if ( ! isset( $admin_dashboard_settings['self_hosted_gfonts'] ) ) { $admin_dashboard_settings['self_hosted_gfonts'] = isset( $theme_options['load-google-fonts-locally'] ) ? $theme_options['load-google-fonts-locally'] : false; } if ( ! isset( $admin_dashboard_settings['preload_local_fonts'] ) ) { $admin_dashboard_settings['preload_local_fonts'] = isset( $theme_options['preload-local-fonts'] ) ? $theme_options['preload-local-fonts'] : false; } // Consider admin part from theme side migrated. $admin_dashboard_settings['theme-setup-admin-migrated'] = true; update_option( 'astra_admin_settings', $admin_dashboard_settings ); } // Check if existing user and disable smooth scroll-to-id. if ( ! isset( $theme_options['enable-scroll-to-id'] ) ) { $theme_options['enable-scroll-to-id'] = false; update_option( 'astra-settings', $theme_options ); } // Check if existing user and disable scroll to top if disabled from pro addons list. $scroll_to_top_visibility = false; /** @psalm-suppress UndefinedClass */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( defined( 'ASTRA_EXT_VER' ) && Astra_Ext_Extension::is_active( 'scroll-to-top' ) ) { /** @psalm-suppress UndefinedClass */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $scroll_to_top_visibility = true; } if ( ! isset( $theme_options['scroll-to-top-enable'] ) ) { $theme_options['scroll-to-top-enable'] = $scroll_to_top_visibility; update_option( 'astra-settings', $theme_options ); } // Default colors & typography flag. if ( ! isset( $theme_options['update-default-color-typo'] ) ) { $theme_options['update-default-color-typo'] = false; update_option( 'astra-settings', $theme_options ); } // Block editor experience improvements compatibility flag. if ( ! isset( $theme_options['v4-block-editor-compat'] ) ) { $theme_options['v4-block-editor-compat'] = false; update_option( 'astra-settings', $theme_options ); } } /** * 4.0.2 backward handling part. * * 1. Read Time option backwards handling for old users. * * @since 4.0.2 * @return void */ function astra_theme_background_updater_4_0_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-0-2-update-migration'] ) && isset( $theme_options['blog-single-meta'] ) && in_array( 'read-time', $theme_options['blog-single-meta'] ) ) { if ( isset( $theme_options['ast-dynamic-single-post-metadata'] ) && ! in_array( 'read-time', $theme_options['ast-dynamic-single-post-metadata'] ) ) { $theme_options['ast-dynamic-single-post-metadata'][] = 'read-time'; $theme_options['v4-0-2-update-migration'] = true; update_option( 'astra-settings', $theme_options ); } } } /** * Handle backward compatibility on version 4.1.0 * * @since 4.1.0 * @return void */ function astra_theme_background_updater_4_1_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-1-0-update-migration'] ) ) { $theme_options['v4-1-0-update-migration'] = true; $current_payment_list = array(); $old_payment_list = isset( $theme_options['single-product-payment-list']['items'] ) ? $theme_options['single-product-payment-list']['items'] : array(); $visa_payment = isset( $theme_options['single-product-payment-visa'] ) ? $theme_options['single-product-payment-visa'] : ''; $mastercard_payment = isset( $theme_options['single-product-payment-mastercard'] ) ? $theme_options['single-product-payment-mastercard'] : ''; $discover_payment = isset( $theme_options['single-product-payment-discover'] ) ? $theme_options['single-product-payment-discover'] : ''; $paypal_payment = isset( $theme_options['single-product-payment-paypal'] ) ? $theme_options['single-product-payment-paypal'] : ''; $apple_pay_payment = isset( $theme_options['single-product-payment-apple-pay'] ) ? $theme_options['single-product-payment-apple-pay'] : ''; false !== $visa_payment ? array_push( $current_payment_list, array( 'id' => 'item-100', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-visa', 'image' => '', 'label' => __( 'Visa', 'astra' ), ) ) : ''; false !== $mastercard_payment ? array_push( $current_payment_list, array( 'id' => 'item-101', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-mastercard', 'image' => '', 'label' => __( 'Mastercard', 'astra' ), ) ) : ''; false !== $mastercard_payment ? array_push( $current_payment_list, array( 'id' => 'item-102', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-amex', 'image' => '', 'label' => __( 'Amex', 'astra' ), ) ) : ''; false !== $discover_payment ? array_push( $current_payment_list, array( 'id' => 'item-103', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-discover', 'image' => '', 'label' => __( 'Discover', 'astra' ), ) ) : ''; $paypal_payment ? array_push( $current_payment_list, array( 'id' => 'item-104', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-paypal', 'image' => '', 'label' => __( 'Paypal', 'astra' ), ) ) : ''; $apple_pay_payment ? array_push( $current_payment_list, array( 'id' => 'item-105', 'enabled' => true, 'source' => 'icon', 'icon' => 'cc-apple-pay', 'image' => '', 'label' => __( 'Apple Pay', 'astra' ), ) ) : ''; if ( $current_payment_list ) { $theme_options['single-product-payment-list'] = array( 'items' => array_merge( $current_payment_list, $old_payment_list ), ); update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['woo_support_global_settings'] ) ) { $theme_options['woo_support_global_settings'] = true; update_option( 'astra-settings', $theme_options ); } if ( isset( $theme_options['theme-dynamic-customizer-support'] ) ) { $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); foreach ( $post_types as $post_type ) { $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-title-font-extras' ]['text-transform'] = ''; } update_option( 'astra-settings', $theme_options ); } } } /** * 4.1.4 backward handling cases. * * 1. Migrating users to combined color overlay option to new dedicated overlay options. * * @since 4.1.4 * @return void */ function astra_theme_background_updater_4_1_4() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-1-4-update-migration'] ) ) { $ast_bg_control_options = array( 'off-canvas-background', 'footer-adv-bg-obj', 'footer-bg-obj', ); foreach ( $ast_bg_control_options as $bg_option ) { if ( isset( $theme_options[ $bg_option ] ) && ! isset( $theme_options[ $bg_option ]['overlay-type'] ) ) { $bg_type = isset( $theme_options[ $bg_option ]['background-type'] ) ? $theme_options[ $bg_option ]['background-type'] : ''; $theme_options[ $bg_option ]['overlay-type'] = 'none'; $theme_options[ $bg_option ]['overlay-color'] = ''; $theme_options[ $bg_option ]['overlay-opacity'] = ''; $theme_options[ $bg_option ]['overlay-gradient'] = ''; if ( 'image' === $bg_type ) { $bg_img = isset( $theme_options[ $bg_option ]['background-image'] ) ? $theme_options[ $bg_option ]['background-image'] : ''; $bg_color = isset( $theme_options[ $bg_option ]['background-color'] ) ? $theme_options[ $bg_option ]['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $bg_option ]['overlay-type'] = 'classic'; $theme_options[ $bg_option ]['overlay-color'] = $bg_color; $theme_options[ $bg_option ]['overlay-opacity'] = ''; $theme_options[ $bg_option ]['overlay-gradient'] = ''; } } } } $ast_resp_bg_control_options = array( 'hba-footer-bg-obj-responsive', 'hbb-footer-bg-obj-responsive', 'footer-bg-obj-responsive', 'footer-menu-bg-obj-responsive', 'hb-footer-bg-obj-responsive', 'hba-header-bg-obj-responsive', 'hbb-header-bg-obj-responsive', 'hb-header-bg-obj-responsive', 'header-mobile-menu-bg-obj-responsive', 'site-layout-outside-bg-obj-responsive', 'content-bg-obj-responsive', ); $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); foreach ( $post_types as $index => $post_type ) { $ast_resp_bg_control_options[] = 'ast-dynamic-archive-' . esc_attr( $post_type ) . '-banner-custom-bg'; $ast_resp_bg_control_options[] = 'ast-dynamic-single-' . esc_attr( $post_type ) . '-banner-background'; } $component_limit = defined( 'ASTRA_EXT_VER' ) ? Astra_Builder_Helper::$component_limit : Astra_Builder_Helper::$num_of_header_menu; for ( $index = 1; $index <= $component_limit; $index++ ) { $_prefix = 'menu' . $index; $ast_resp_bg_control_options[] = 'header-' . $_prefix . '-bg-obj-responsive'; } foreach ( $ast_resp_bg_control_options as $resp_bg_option ) { // Desktop version. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( isset( $theme_options[ $resp_bg_option ]['desktop'] ) && is_array( $theme_options[ $resp_bg_option ]['desktop'] ) && ! isset( $theme_options[ $resp_bg_option ]['desktop']['overlay-type'] ) ) { // @codingStandardsIgnoreStart $desk_bg_type = isset( $theme_options[ $resp_bg_option ]['desktop']['background-type'] ) ? $theme_options[ $resp_bg_option ]['desktop']['background-type'] : ''; // @codingStandardsIgnoreEnd $theme_options[ $resp_bg_option ]['desktop']['overlay-type'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-color'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-gradient'] = ''; if ( 'image' === $desk_bg_type ) { $bg_img = isset( $theme_options[ $resp_bg_option ]['desktop']['background-image'] ) ? $theme_options[ $resp_bg_option ]['desktop']['background-image'] : ''; $bg_color = isset( $theme_options[ $resp_bg_option ]['desktop']['background-color'] ) ? $theme_options[ $resp_bg_option ]['desktop']['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $resp_bg_option ]['desktop']['overlay-type'] = 'classic'; $theme_options[ $resp_bg_option ]['desktop']['overlay-color'] = $bg_color; $theme_options[ $resp_bg_option ]['desktop']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['desktop']['overlay-gradient'] = ''; } } } // Tablet version. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( isset( $theme_options[ $resp_bg_option ]['tablet'] ) && is_array( $theme_options[ $resp_bg_option ]['tablet'] ) && ! isset( $theme_options[ $resp_bg_option ]['tablet']['overlay-type'] ) ) { // @codingStandardsIgnoreStart $tablet_bg_type = isset( $theme_options[ $resp_bg_option ]['tablet']['background-type'] ) ? $theme_options[ $resp_bg_option ]['tablet']['background-type'] : ''; // @codingStandardsIgnoreEnd $theme_options[ $resp_bg_option ]['tablet']['overlay-type'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-color'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-gradient'] = ''; if ( 'image' === $tablet_bg_type ) { $bg_img = isset( $theme_options[ $resp_bg_option ]['tablet']['background-image'] ) ? $theme_options[ $resp_bg_option ]['tablet']['background-image'] : ''; $bg_color = isset( $theme_options[ $resp_bg_option ]['tablet']['background-color'] ) ? $theme_options[ $resp_bg_option ]['tablet']['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $resp_bg_option ]['tablet']['overlay-type'] = 'classic'; $theme_options[ $resp_bg_option ]['tablet']['overlay-color'] = $bg_color; $theme_options[ $resp_bg_option ]['tablet']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['tablet']['overlay-gradient'] = ''; } } } // Mobile version. /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( isset( $theme_options[ $resp_bg_option ]['mobile'] ) && is_array( $theme_options[ $resp_bg_option ]['mobile'] ) && ! isset( $theme_options[ $resp_bg_option ]['mobile']['overlay-type'] ) ) { // @codingStandardsIgnoreStart $mobile_bg_type = isset( $theme_options[ $resp_bg_option ]['mobile']['background-type'] ) ? $theme_options[ $resp_bg_option ]['mobile']['background-type'] : ''; // @codingStandardsIgnoreEnd $theme_options[ $resp_bg_option ]['mobile']['overlay-type'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-color'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-gradient'] = ''; if ( 'image' === $mobile_bg_type ) { $bg_img = isset( $theme_options[ $resp_bg_option ]['mobile']['background-image'] ) ? $theme_options[ $resp_bg_option ]['mobile']['background-image'] : ''; $bg_color = isset( $theme_options[ $resp_bg_option ]['mobile']['background-color'] ) ? $theme_options[ $resp_bg_option ]['mobile']['background-color'] : ''; if ( '' !== $bg_img && '' !== $bg_color && ( ! is_numeric( strpos( $bg_color, 'linear-gradient' ) ) && ! is_numeric( strpos( $bg_color, 'radial-gradient' ) ) ) ) { $theme_options[ $resp_bg_option ]['mobile']['overlay-type'] = 'classic'; $theme_options[ $resp_bg_option ]['mobile']['overlay-color'] = $bg_color; $theme_options[ $resp_bg_option ]['mobile']['overlay-opacity'] = ''; $theme_options[ $resp_bg_option ]['mobile']['overlay-gradient'] = ''; } } } } $theme_options['v4-1-4-update-migration'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.1.6 * * @since 4.1.6 * @return void */ function astra_theme_background_updater_4_1_6() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['list-block-vertical-spacing'] ) ) { $theme_options['list-block-vertical-spacing'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Set flag to avoid direct reflections on live site & to maintain backward compatibility for existing users. * * @since 4.1.7 * @return void */ function astra_theme_background_updater_4_1_7() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['add-hr-styling-css'] ) ) { $theme_options['add-hr-styling-css'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['astra-site-svg-logo-equal-height'] ) ) { $theme_options['astra-site-svg-logo-equal-height'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Migrating users to new container layout options * * @since 4.2.0 * @return void */ function astra_theme_background_updater_4_2_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-2-0-update-migration'] ) ) { $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); $theme_options = get_option( 'astra-settings' ); $blog_types = array( 'single', 'archive' ); $third_party_layouts = array( 'woocommerce', 'edd', 'lifterlms', 'lifterlms-course-lesson', 'learndash' ); // Global. if ( isset( $theme_options['site-content-layout'] ) ) { $theme_options = astra_apply_layout_migration( 'site-content-layout', 'ast-site-content-layout', 'site-content-style', 'site-sidebar-style', $theme_options ); } // Single, archive. foreach ( $blog_types as $blog_type ) { foreach ( $post_types as $post_type ) { $old_layout = $blog_type . '-' . esc_attr( $post_type ) . '-content-layout'; $new_layout = $blog_type . '-' . esc_attr( $post_type ) . '-ast-content-layout'; $content_style = $blog_type . '-' . esc_attr( $post_type ) . '-content-style'; $sidebar_style = $blog_type . '-' . esc_attr( $post_type ) . '-sidebar-style'; if ( isset( $theme_options[ $old_layout ] ) ) { $theme_options = astra_apply_layout_migration( $old_layout, $new_layout, $content_style, $sidebar_style, $theme_options ); } } } // Third party existing layout migrations to new layout options. foreach ( $third_party_layouts as $layout ) { $old_layout = $layout . '-content-layout'; $new_layout = $layout . '-ast-content-layout'; $content_style = $layout . '-content-style'; $sidebar_style = $layout . '-sidebar-style'; if ( isset( $theme_options[ $old_layout ] ) ) { if ( 'lifterlms' === $layout ) { // Lifterlms course/lesson sidebar style migration case. $theme_options = astra_apply_layout_migration( $old_layout, $new_layout, $content_style, 'lifterlms-course-lesson-sidebar-style', $theme_options ); } $theme_options = astra_apply_layout_migration( $old_layout, $new_layout, $content_style, $sidebar_style, $theme_options ); } } if ( ! isset( $theme_options['fullwidth_sidebar_support'] ) ) { $theme_options['fullwidth_sidebar_support'] = false; } $theme_options['v4-2-0-update-migration'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle migration from old to new layouts. * * Migration cases for old users, old layouts -> new layouts. * * @since 4.2.0 * @param mixed $old_layout old_layout. * @param mixed $new_layout new_layout. * @param mixed $content_style content_style. * @param mixed $sidebar_style sidebar_style. * @param array $theme_options theme_options. * @return array $theme_options The updated theme options. */ function astra_apply_layout_migration( $old_layout, $new_layout, $content_style, $sidebar_style, $theme_options ) { switch ( astra_get_option( $old_layout ) ) { case 'boxed-container': $theme_options[ $new_layout ] = 'normal-width-container'; $theme_options[ $content_style ] = 'boxed'; $theme_options[ $sidebar_style ] = 'boxed'; break; case 'content-boxed-container': $theme_options[ $new_layout ] = 'normal-width-container'; $theme_options[ $content_style ] = 'boxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; case 'plain-container': $theme_options[ $new_layout ] = 'normal-width-container'; $theme_options[ $content_style ] = 'unboxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; case 'page-builder': $theme_options[ $new_layout ] = 'full-width-container'; $theme_options[ $content_style ] = 'unboxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; case 'narrow-container': $theme_options[ $new_layout ] = 'narrow-width-container'; $theme_options[ $content_style ] = 'unboxed'; $theme_options[ $sidebar_style ] = 'unboxed'; break; default: $theme_options[ $new_layout ] = 'default'; $theme_options[ $content_style ] = 'default'; $theme_options[ $sidebar_style ] = 'default'; break; } return $theme_options; } /** * Handle backward compatibility on version 4.2.2 * * @since 4.2.2 * @return void */ function astra_theme_background_updater_4_2_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-2-2-core-form-btns-styling'] ) ) { $theme_options['v4-2-2-core-form-btns-styling'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.6.0 * * @since 4.4.0 * @return void */ function astra_theme_background_updater_4_4_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-4-0-backward-option'] ) ) { $theme_options['v4-4-0-backward-option'] = false; // Migrate primary button outline styles to secondary buttons. if ( isset( $theme_options['font-family-button'] ) ) { $theme_options['secondary-font-family-button'] = $theme_options['font-family-button']; } if ( isset( $theme_options['font-size-button'] ) ) { $theme_options['secondary-font-size-button'] = $theme_options['font-size-button']; } if ( isset( $theme_options['font-weight-button'] ) ) { $theme_options['secondary-font-weight-button'] = $theme_options['font-weight-button']; } if ( isset( $theme_options['font-extras-button'] ) ) { $theme_options['secondary-font-extras-button'] = $theme_options['font-extras-button']; } if ( isset( $theme_options['button-bg-color'] ) ) { $theme_options['secondary-button-bg-color'] = $theme_options['button-bg-color']; } if ( isset( $theme_options['button-bg-h-color'] ) ) { $theme_options['secondary-button-bg-h-color'] = $theme_options['button-bg-h-color']; } if ( isset( $theme_options['theme-button-border-group-border-color'] ) ) { $theme_options['secondary-theme-button-border-group-border-color'] = $theme_options['theme-button-border-group-border-color']; } if ( isset( $theme_options['theme-button-border-group-border-h-color'] ) ) { $theme_options['secondary-theme-button-border-group-border-h-color'] = $theme_options['theme-button-border-group-border-h-color']; } if ( isset( $theme_options['button-radius-fields'] ) ) { $theme_options['secondary-button-radius-fields'] = $theme_options['button-radius-fields']; } // Single - Article Featured Image visibility migration. $post_types = Astra_Posts_Structure_Loader::get_supported_post_types(); foreach ( $post_types as $post_type ) { $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-article-featured-image-position-layout-1' ] = 'none'; $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-article-featured-image-position-layout-2' ] = 'none'; $theme_options[ 'ast-dynamic-single-' . esc_attr( $post_type ) . '-article-featured-image-ratio-type' ] = 'default'; } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.5.0. * * @since 4.5.0 * @return void */ function astra_theme_background_updater_4_5_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-5-0-backward-option'] ) ) { $theme_options['v4-5-0-backward-option'] = false; $palette_options = get_option( 'astra-color-palettes', Astra_Global_Palette::get_default_color_palette() ); if ( ! isset( $palette_options['presets'] ) ) { $palette_options['presets'] = astra_get_palette_presets(); update_option( 'astra-color-palettes', $palette_options ); } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.5.2. * * @since 4.5.2 * @return void */ function astra_theme_background_updater_4_5_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['scndry-btn-default-padding'] ) ) { $theme_options['scndry-btn-default-padding'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.6.0 * * @since 4.6.0 * @return void */ function astra_theme_background_updater_4_6_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-6-0-backward-option'] ) ) { $theme_options['v4-6-0-backward-option'] = false; /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $blog_post_structure = isset( $theme_options['blog-post-structure'] ) ? $theme_options['blog-post-structure'] : array( 'image', 'title-meta' ); /** @psalm-suppress PossiblyUndefinedStringArrayOffset */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort $migrated_post_structure = array(); if ( ! empty( $blog_post_structure ) ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort foreach ( $blog_post_structure as $key ) { /** @psalm-suppress PossiblyInvalidIterator */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort if ( 'title-meta' === $key ) { $migrated_post_structure[] = 'title'; $migrated_post_structure[] = 'title-meta'; } if ( 'image' === $key ) { $migrated_post_structure[] = 'image'; } } $migrated_post_structure[] = 'excerpt'; $migrated_post_structure[] = 'read-more'; $theme_options['blog-post-structure'] = $migrated_post_structure; } if ( defined( 'ASTRA_EXT_VER' ) ) { $theme_options['ast-sub-section-author-box-border-width'] = isset( $theme_options['author-box-border-width'] ) ? $theme_options['author-box-border-width'] : array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ); $theme_options['ast-sub-section-author-box-border-radius'] = isset( $theme_options['author-box-border-radius'] ) ? $theme_options['author-box-border-radius'] : array( 'top' => '', 'right' => '', 'bottom' => '', 'left' => '', ); $theme_options['ast-sub-section-author-box-border-color'] = isset( $theme_options['author-box-border-color'] ) ? $theme_options['author-box-border-color'] : ''; if ( isset( $theme_options['single-post-inside-spacing'] ) ) { $theme_options['ast-sub-section-author-box-padding'] = $theme_options['single-post-inside-spacing']; } if ( isset( $theme_options['font-family-post-meta'] ) ) { $theme_options['font-family-post-read-more'] = $theme_options['font-family-post-meta']; } if ( isset( $theme_options['font-extras-post-meta'] ) ) { $theme_options['font-extras-post-read-more'] = $theme_options['font-extras-post-meta']; } } if ( isset( $theme_options['single-post-inside-spacing'] ) ) { $theme_options['ast-sub-section-related-posts-padding'] = $theme_options['single-post-inside-spacing']; } $theme_options['single-content-images-shadow'] = false; $theme_options['ast-font-style-update'] = false; update_option( 'astra-settings', $theme_options ); } $docs_legacy_data = get_option( 'astra_docs_data', array() ); if ( ! empty( $docs_legacy_data ) ) { delete_option( 'astra_docs_data' ); } } /** * Handle backward compatibility on version 4.6.2. * * @since 4.6.2 * @return void */ function astra_theme_background_updater_4_6_2() { $theme_options = get_option( 'astra-settings', array() ); // Unset "featured image" for pages structure. if ( ! isset( $theme_options['v4-6-2-backward-option'] ) ) { $theme_options['v4-6-2-backward-option'] = false; $page_banner_layout = isset( $theme_options['ast-dynamic-single-page-layout'] ) ? $theme_options['ast-dynamic-single-page-layout'] : 'layout-1'; $page_structure = isset( $theme_options['ast-dynamic-single-page-structure'] ) ? $theme_options['ast-dynamic-single-page-structure'] : array( 'ast-dynamic-single-page-image', 'ast-dynamic-single-page-title' ); $layout_1_image_position = isset( $theme_options['ast-dynamic-single-page-article-featured-image-position-layout-1'] ) ? $theme_options['ast-dynamic-single-page-article-featured-image-position-layout-1'] : 'behind'; $migrated_page_structure = array(); if ( 'layout-1' === $page_banner_layout && 'none' === $layout_1_image_position && ! empty( $page_structure ) ) { foreach ( $page_structure as $key ) { if ( 'ast-dynamic-single-page-image' !== $key ) { $migrated_page_structure[] = $key; } } $theme_options['ast-dynamic-single-page-structure'] = $migrated_page_structure; } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.6.4. * * @since 4.6.4 * @return void */ function astra_theme_background_updater_4_6_4() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['btn-stylings-upgrade'] ) ) { $theme_options['btn-stylings-upgrade'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Elementor Pro heading's margin. * * @since 4.6.5 * @return void */ function astra_theme_background_updater_4_6_5() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['elementor-headings-style'] ) ) { $theme_options['elementor-headings-style'] = defined( 'ELEMENTOR_PRO_VERSION' ) ? true : false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Elementor Loop block post div container padding. * * @since 4.6.6 * @return void */ function astra_theme_background_updater_4_6_6() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['elementor-container-padding-style'] ) ) { $theme_options['elementor-container-padding-style'] = defined( 'ELEMENTOR_PRO_VERSION' ) ? true : false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Starter template library preview line height cases. * * @since 4.6.11 * @return void */ function astra_theme_background_updater_4_6_11() { $theme_options = get_option( 'astra-settings', array() ); if ( isset( $theme_options['global-headings-line-height-update'] ) ) { return; } $headers_fonts = array( 'h1' => '1.4', 'h2' => '1.3', 'h3' => '1.3', 'h4' => '1.2', 'h5' => '1.2', 'h6' => '1.25', ); foreach ( $headers_fonts as $header_tag => $header_font_value ) { if ( empty( $theme_options[ 'font-extras-' . $header_tag ]['line-height'] ) ) { $theme_options[ 'font-extras-' . $header_tag ]['line-height'] = $header_font_value; if ( empty( $theme_options[ 'font-extras-' . $header_tag ]['line-height-unit'] ) ) { $theme_options[ 'font-extras-' . $header_tag ]['line-height-unit'] = 'em'; } } } $theme_options['global-headings-line-height-update'] = true; update_option( 'astra-settings', $theme_options ); } /** * Handle backward compatibility for heading `clear:both` css in single posts and pages. * * @since 4.6.12 * @return void */ function astra_theme_background_updater_4_6_12() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['single_posts_pages_heading_clear_none'] ) ) { $theme_options['single_posts_pages_heading_clear_none'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['elementor-btn-styling'] ) ) { $theme_options['elementor-btn-styling'] = defined( 'ELEMENTOR_VERSION' ) ? true : false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['remove_single_posts_navigation_mobile_device_padding'] ) ) { $theme_options['remove_single_posts_navigation_mobile_device_padding'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for following pointers. * * 1. unit less line-height support. * 2. H5 font size case. * * @since 4.6.14 * @return void */ function astra_theme_background_updater_4_6_14() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-6-14-compatibility'] ) ) { $theme_options['enable-4-6-14-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for following cases. * * 1. Making edd default option enable by default. * 2. Handle backward compatibility for Heading font size fix. * * @since 4.7.0 * @return void */ function astra_theme_background_updater_4_7_0() { $theme_options = get_option( 'astra-settings', array() ); if ( class_exists( 'Easy_Digital_Downloads' ) && ! isset( $theme_options['can-update-edd-featured-image-default'] ) ) { $theme_options['can-update-edd-featured-image-default'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['heading-widget-font-size'] ) ) { $theme_options['heading-widget-font-size'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for version 4.7.1 * * @since 4.7.1 * @return void */ function astra_theme_background_updater_4_7_1() { $theme_options = get_option( 'astra-settings', array() ); // Setting same background color for above and below transparent headers as on transparent primary header. if ( isset( $theme_options['transparent-header-bg-color-responsive'] ) ) { if ( ! isset( $theme_options['hba-transparent-header-bg-color-responsive'] ) ) { $theme_options['hba-transparent-header-bg-color-responsive'] = $theme_options['transparent-header-bg-color-responsive']; } if ( ! isset( $theme_options['hbb-transparent-header-bg-color-responsive'] ) ) { $theme_options['hbb-transparent-header-bg-color-responsive'] = $theme_options['transparent-header-bg-color-responsive']; } update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility Spectra Heading max-width with Astra when fullwidth layout is selected. * * @since 4.8.0 * @return void */ function astra_theme_background_updater_4_8_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-8-0-compatibility'] ) ) { $theme_options['enable-4-8-0-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility Single post outside spacing issue. * * @since 4.8.2 * @return void */ function astra_theme_background_updater_4_8_2() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-8-2-backward-option'] ) ) { $theme_options['v4-8-2-backward-option'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for Spectra container margin left and right. * Handle backward compatibility for Heading font size px to em conversion cases. * * @since 4.8.4 * @return void */ function astra_theme_background_updater_4_8_4() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-8-4-compatibility'] ) ) { $theme_options['enable-4-8-4-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } if ( ! isset( $theme_options['astra-heading-font-size-compatibility'] ) ) { $theme_options['astra-heading-font-size-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Set key to show NPS survey popup immediately for old user. * * @since 4.8.7 * @return void */ function astra_theme_background_updater_4_8_7() { // Bail early if the starter template is being imported. if ( get_option( 'astra_sites_import_started' ) === 'yes' ) { return; } update_option( 'astra_nps_show', true ); } /** * Handle backward compatibility on version 4.8.9. * 1. Reorganizing color palettes. * * @since 4.8.9 * @return void */ function astra_theme_background_updater_4_8_9() { // Bail early if the starter template is being imported. if ( get_option( 'astra_sites_import_started' ) === 'yes' || astra_get_option( 'new-color-labels' ) ) { astra_update_option( 'new-color-labels', true ); } $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-8-9-compatibility'] ) ) { $theme_options['enable-4-8-9-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } // Enable off canvas move body option for existing users. if ( ! isset( $theme_options['off-canvas-move-body'] ) ) { $theme_options['off-canvas-move-body'] = true; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility on version 4.8.10. * * @since 4.8.10 * @return void */ function astra_theme_background_updater_4_8_10() { $theme_options = get_option( 'astra-settings', array() ); /** * Enable star rating compatibility for existing users, excluding template import scenarios. */ if ( get_option( 'astra_sites_import_started' ) !== 'yes' ) { $theme_options['star-rating-comp'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Handle backward compatibility for dark palette. * Dark palette backward compatibility for some cases default option . * * @since 4.9.0 * @return void */ function astra_theme_background_updater_4_9_0() { $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['v4-9-0-backward-option'] ) ) { $theme_options['v4-9-0-backward-option'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Background updater function for theme v4.10.0 * * @since 4.10.0 * @return void */ function astra_theme_background_updater_4_10_0() { // Retrieve the installed time and optin status of BSF Analytics and update it as per product specific key. $analytics_options = array( 'bsf_analytics_installed_time' => 'astra_usage_installed_time', 'bsf_analytics_optin' => 'astra_usage_optin', ); foreach ( $analytics_options as $source => $target ) { $status = get_site_option( $source ); if ( ! get_site_option( $target ) && $status ) { update_option( $target, $status ); } } } /** * Background updater function for theme v4.11.6 * * @since 4.11.6 * @return void */ function astra_theme_background_updater_4_11_6() { $theme_options = get_option( 'astra-settings', array() ); // Set button consistency backward compatibility flag. if ( ! isset( $theme_options['btn-consist-comp'] ) ) { $theme_options['btn-consist-comp'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Background updater function for theme v4.11.12 * * @since 4.11.12 * @return void */ function astra_theme_background_updater_4_11_12() { // Set button consistency backward compatibility flag. $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['enable-4-11-12-compatibility'] ) ) { $theme_options['enable-4-11-12-compatibility'] = false; update_option( 'astra-settings', $theme_options ); } } /** * Background updater function for addon v4.12.0 * * @since 4.12.0 * @return void */ function astra_theme_background_updater_4_12_0() { // Plain get_option, not astra_get_options — its request-static cache may hold a filtered copy that would bypass the updater filter detach. $theme_options = get_option( 'astra-settings', array() ); // Migrate post card featured overlay color to background overlay setting which supports gradients. if ( isset( $theme_options['post-card-featured-overlay'] ) ) { $theme_options['post-card-background-overlay'] = array( 'background-type' => 'color', 'background-color' => $theme_options['post-card-featured-overlay'], ); update_option( 'astra-settings', $theme_options ); } } /** * Background updater function for theme v4.12.2 * * @since 4.12.2 * @return void */ function astra_theme_background_updater_4_12_2() { // Retrieve the installed time and optin status of BSF Analytics and update it as per new key option. $analytics_options = array( 'astra_analytics_installed_time' => 'astra_usage_installed_time', 'astra_analytics_optin' => 'astra_usage_optin', ); foreach ( $analytics_options as $source => $target ) { $status = get_site_option( $source ); if ( ! get_site_option( $target ) && $status ) { update_option( $target, $status ); } } } /** * Background updater function for theme v4.13.11 * * @since 4.13.11 * @return void */ function astra_theme_background_updater_4_13_11() { // Existing sites have been rendering excerpts without a truncation marker, so keep it that way. $theme_options = get_option( 'astra-settings', array() ); if ( ! isset( $theme_options['blog-excerpt-marker'] ) ) { $theme_options['blog-excerpt-marker'] = ''; update_option( 'astra-settings', $theme_options ); } } Hexabet Casino – Αποκλειστική Μεταχείριση για Απαιτητικούς Παίκτες – UBIPREL S.A.S

Hexabet Casino – Αποκλειστική Μεταχείριση για Απαιτητικούς Παίκτες

πρόσφατο Hexabet Casino μπόνους high roller banner

Στην αγορά της Ελλάδας των online παιχνιδιών, το Hexabet Casino δεν αποτελεί απλά μια ακόμα επιλογή. Συνιστά ένας προορισμός για παίκτες που γνωρίζουν τι θέλουν και δεν αρκούνται με την τυπική εμπειρία. Η φιλοσοφία του έχει χτιστεί γύρω από την προνομιακή μεταχείριση: κάθε λεπτομέρεια –από την ποικιλία των παιχνιδιών και την ταχύτητα των πληρωμών μέχρι την εξατομικευμένη υποστήριξη– προγραμματίζεται για να ανταποκρίνεται σε υψηλές προσδοκίες. Το περιβάλλον είναι φτιαγμένο ώστε ο χρήστης να βιώνει ότι η διασκέδασή του είναι πρώτη, με ξεκάθαρους όρους, ασφαλείς συναλλαγές και μια αίσθηση αποκλειστικότητας που σχεδόν ποτέ βρίσκεις. Η Hexabet εστιάζει στη μακροχρόνια σχέση εμπιστοσύνης, χορηγώντας ουσιαστικά προνόμια και όχι απλές υποσχέσεις.

Η Αντίληψη της Πολυτελούς Εμπειρίας στο Hexabet Casino

Η πολυτελής εμπειρία στο Hexabet Casino δεν κρύβεται πίσω από ένα εντυπωσιακό μπόνους καλωσορίσματος. Αφορά σε ένα ολοκληρωμένο σύνολο υπηρεσιών που αντιλαμβάνεται τις ανάγκες του τωρινού παίκτη. Από την εισαγωγική επίσκεψη, ο παίκτης διαπιστώνει ότι η περιήγηση είναι ταχεία, οι κατηγορίες παιχνιδιών ταξινομημένες με συνέπεια και οι πληροφορίες για τις προσφορές εκφρασμένες χωρίς αθέατους αστερίσκους. Η πλατφόρμα εστιάζει στην ταχύτητα εκτέλεσης εντολών, είτε πρόκειται για κατάθεση, ανάληψη ή έναρξη ενός live παιχνιδιού. Καθυστερήσεις που συχνά απογοητεύουν, εδώ απουσιάζουν. Έτσι ο παίκτης συγκεντρώνεται αποκλειστικά στη στρατηγική και την ψυχαγωγία του.

Συγχρόνως, το Hexabet Casino ακολουθεί μια τακτική ανταμοιβής που αναπτύσσεται μαζί με τον παίκτη https://hexabetkazino.gr/. Σε αντίθεση για μαζικές, απρόσωπες καμπάνιες, το σύστημα επιβράβευσης αναγνωρίζει την αφοσίωση και την ενεργή συμμετοχή, προσφέροντας κλιμακούμενα οφέλη. Όσο περισσότερο αλληλεπιδρά κάποιος με τα παιχνίδια, τόσο πιο στοχευμένες και πολύτιμες γίνονται οι παροχές. Αυτό σημαίνει υψηλότερα όρια συναλλαγών, ταχύτερες αναλήψεις, προσωπικό διαχειριστή λογαριασμού για τα ανώτερα επίπεδα και προσκλήσεις σε ειδικές διοργανώσεις. Έτσι, η premium μεταχείριση δεν είναι διαφημιστικό σλόγκαν, αλλά ένα μετρήσιμο σύνολο πλεονεκτημάτων που βελτιώνουν καθημερινά την εμπειρία.

Διάρθρωση Μπόνους και Προσφορών: Με την Πρώτη Κατάθεση μέχρι την Κορυφή

Το Hexabet Casino διαμορφώνει τις προωθητικές του καμπάνιες γύρω από την λογική ότι κάθε παίκτης του αξίζει μια ισότιμη ώθηση, ανεξαρτήτως του ύψους του κεφαλαίου του. Το σύστημα μπόνους είναι διαφανές, με καθαρά διατυπωμένους προϋποθέσεις που αναφέρονται στις απαιτήσεις στοιχηματισμού (wagering requirements), τα μικρότερα ποσά κατάθεσης και τα χρονικά περιθώρια ολοκλήρωσης. Παρά να φορτώνει τον χρήστη με απραγματοποίητες υποσχέσεις, η πλατφόρμα στοχεύει σε προσφορές που είναι δυνατόν ρεαλιστικά να αξιοποιηθούν, όταν πρόκειται για επιπλέον κεφάλαιο παιχνιδιού είτε ακόμα για επιστροφή μέρους των απωλειών. Οι ενεργοί παίκτες ενθαρρύνονται να παρακολουθούν τακτικά τη σελίδα προσφορών ή το εισερχόμενο ηλεκτρονικού ταχυδρομείου τους, καθώς οι καμπάνιες ανανεώνονται συχνά και συνδέονται με ορισμένα παιχνίδια ή διοργανώσεις.

Προσφορά Καλωσορίσματος

απόλυτο μηνιαίο μπόνους διαφήμιση

Καινούργιοι χρήστες που δημιουργούν λογαριασμό στο Hexabet Casino υποδεχόμαστε με ένα σύνολο που κατά κανόνα ενσωματώνει μπόνους στην εισαγωγική κατάθεση και δωρεάν περιστροφές σε συγκεκριμένους κουλοχέρηδες. Η διάρθρωση του πακέτου πολλές φορές εκτείνεται σε παραπάνω από μία καταθέσεις, δίνοντας κίνητρο για σταδιακή γνωριμία με την πλατφόρμα. Τα ποσά αντιστοίχισης βρίσκονται σε ανταγωνιστικά επίπεδα της αγοράς, ενώ ο μέγιστος αριθμός δωρεάν περιστροφών προσδιορίζεται από το ποσό που θα θελήσει να επενδύσει ο παίκτης. Ο χρήστης πρέπει να εξετάσει προσεκτικά τους όρους που ακολουθούν το προσφορά, ειδικά τις προϋποθέσεις στοιχηματισμού και τα παιχνίδια που συμμετέχουν σε αυτές, ώστε να καταστρώσει τη στρατηγική του χωρίς εκπλήξεις.

Συχνές Προσφορές και Ανταπόδοση Χρημάτων

Πέρα από αρχικού καλωσορίσματος, η πλατφόρμα κρατά το ενδιαφέρον με εβδομαδιαίες και μηνιαίες προωθητικές ενέργειες. Αυτές περιλαμβάνουν μπόνους επαναφόρτισης (reload bonuses) που επιβραβεύουν τις επόμενες καταθέσεις, πακέτα δωρεάν περιστροφών για νέες κυκλοφορίες κουλοχέρηδων και προγράμματα επιστροφής χρημάτων (cashback) που επιστρέφουν ένα ποσοστό των καθαρών απωλειών μιας συγκεκριμένης περιόδου. Το cashback συχνά υπολογίζεται σε εβδομαδιαία βάση και πιστώνεται ως πραγματικό χρήμα ή ως κεφάλαιο μπόνους με χαμηλότερες απαιτήσεις στοιχηματισμού, προσφέροντας ένα δίχτυ ασφαλείας που εκτιμούν ιδιαίτερα οι τακτικοί παίκτες. Ταυτόχρονα, τουρνουά κουλοχέρηδων με χρηματικά έπαθλα και βαθμολογίες προσθέτουν ένα ανταγωνιστικό στοιχείο, δίνοντας κίνητρο για συμμετοχή χωρίς επιπλέον κόστος πέρα από το κανονικό παιχνίδι.

Πρόγραμμα Επιβράβευσης VIP

Η ουσία της premium φιλοσοφίας του Hexabet Casino αποκαλύπτεται πλήρως μέσα από το πρόγραμμα VIP, το οποίο λειτουργεί ως μια λέσχη μοναδικών προνομίων. Η ένταξη πραγματοποιείται είτε αυτόματα μέσω της τακτικής δραστηριότητας είτε κατόπιν πρόσκλησης, ανάλογα με την εσωτερική πολιτική αξιολόγησης. Το πρόγραμμα είναι πολλαπλών επιπέδων, δίνοντας τη δυνατότητα στον παίκτη να ανέρχεται σε βαθμίδες και να ξεκλειδώνει ολοένα και πιο δελεαστικά οφέλη. Σε αντίθεση με τα τυπικά προγράμματα επιβράβευσης, εδώ προέχει η εξατομίκευση: ο διαχειριστής λογαριασμού εξατομικεύει τις προσφορές στις προτιμήσεις του μέλους, διασφαλίζοντας ότι κάθε επικοινωνία έχει ουσιαστική αξία.

Βαθμίδες και Προσωπικά Οφέλη

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

Εμπειρία πλοήγησης σε Smartphones και Εξυπηρέτηση

Στη σύγχρονη εποχή, η ευχέρεια παιχνιδιού από φυσητές συσκευές δεν είναι πολυτέλεια αλλά προϋπόθεση. Το Hexabet Casino έχει βελτιώσει την πλατφόρμα του ώστε να λειτουργεί άψογα σε smartphones και tablets, χωρίς να εξαρτάται λειτουργικού συστήματος. Δεν χρειάζεται λήψη κάποιας εφαρμογής· ο χρήστης απλώς μπαίνει την ιστοσελίδα μέσω του προγράμματος περιήγησης της συσκευής του και έχει πλήρη πρόσβαση σε όλες τις λειτουργίες. Η ανταπόκριση της διεπαφής ρυθμίζεται αυτόματα στο μέγεθος της οθόνης, διατηρώντας την ευκρίνεια των γραφικών και την ταχύτητα φόρτωσης ακόμη και σε δίκτυα 4G. Αυτό υποδηλώνει ότι ο παίκτης μπορεί να μεταφέρει την premium εμπειρία του στην καθημερινή ζωή του, είτε βρίσκεται σε μετακίνηση είτε ξεκουράζεται εκτός σπιτιού.

Δράση από Smartphone και Tablet

Η τεχνολογία HTML5 που εφαρμόζεται εξασφαλίζει ότι τα παιχνίδια εκτελούνται ομαλά χωρίς συμπληρωματικά plug-ins, ενώ η αποτελεσματικότητα διατηρείται σταθερή ακόμη και σε παλιές συσκευές. Το μενού πλοήγησης έχει ανασχεδιαστεί για αφή, με μεγάλα εικονίδια και εύκολη πρόσβαση στο ταμείο, τις προσφορές και την υποστήριξη. Οι ζωντανές μεταδόσεις του live καζίνο ρυθμίζονται δυναμικά στο εύρος ζώνης, ελαττώνοντας την κατανάλωση δεδομένων χωρίς αξιόλογη απώλεια ποιότητας. Οι παίκτες μπορούν να αλλάζουν μεταξύ οριζόντιου και κατακόρυφου προσανατολισμού, σύμφωνα με το παιχνίδι, ενώ η λειτουργία push notifications (εφόσον ενεργοποιηθεί) τους έχει ενήμερους για νέες προσφορές και αποτελέσματα.

Εξυπηρέτηση Πελατών

Η υποστήριξη στο Hexabet Casino εκφράζει τη φιλοσοφία της premium μεταχείρισης. Μια εξειδικευμένη ομάδα είναι προσβάσιμη όλο το 24ωρο, επτά ημέρες την εβδομάδα, μέσω ζωντανής συνομιλίας (live chat) και ηλεκτρονικού ταχυδρομείου. Το live chat συνιστά το γρηγορότερο κανάλι, με μέσο χρόνο απόκρισης που συνήθως δεν ξεπερνά τα λίγα λεπτά, ενώ τα ερωτήματα μέσω email διεκπεραιώνονται εντός λίγων ωρών. Η συνεννόηση μπορεί να γίνει στα ελληνικά, απομακρύνοντας γλωσσικά εμπόδια και διασφαλίζοντας ότι ακόμη και πολύπλοκα ζητήματα γίνονται πλήρως κατανοητά. Για τα μέλη των ανώτερων VIP βαθμίδων, συχνά δίνεται αποκλειστική τηλεφωνική γραμμή ή ατομικός διαχειριστής που https://www.alfavita.gr/koinonia/453961_klirosi-lotto-2542-aytoi-einai-oi-tyheroi-arithmoi αναλαμβάνει προληπτικά την επίλυση κάθε εκκρεμότητας.

Τραπεζικές Επιλογές και Κίνηση Χρημάτων

Η διαχείριση των χρημάτων θεωρείται σημαντικός στοιχείο εμπιστοσύνης και το Hexabet Casino στοχεύει σε ένα οικοσύστημα πληρωμών που προσφέρει γρήγορες συναλλαγές, ασφάλεια και προσαρμοστικότητα. Οι προσφερόμενες επιλογές ανταποκρίνονται στις απαιτήσεις του ελληνικού κοινού, δίνοντας τη δυνατότητα πληρωμές σε ευρώ δίχως κρυφές κόστη από την πλευρά του καζίνο. Το σύστημα χρησιμοποιεί κωδικοποίηση SSL υψηλού επιπέδου για οποιαδήποτε χρηματική συναλλαγή, ενώ η τήρηση με τα διεθνή πρότυπα PCI DSS διασφαλίζει ότι τα στοιχεία των καρτών δεν αποθηκεύονται σε ευάλωτα χώρους. Πριν από την πρώτη απόσυρση, πρέπει να γίνει η διεκπεραίωση της διαδικασίας ταυτοπροσωπίας, μια διαδικασία που θωρακίζει τόσο τον παίκτη όσο και τον οργανισμό από απάτες και ξέπλυμα χρήματος.

Τρόποι Κατάθεσης

Οι καταθέσεις εκτελούνται άμεσα, παρέχοντας στον χρήστη να εκκινήσει το παιχνίδι σε λίγα δευτερόλεπτα. Η γκάμα περιλαμβάνει χρεωστικές τραπεζικές και πιστωτικές κάρτες Visa και Mastercard, γνωστά ηλεκτρονικά πορτοφόλια όπως Skrill και Neteller, προπληρωμένες κάρτες λύσεις τύπου Paysafecard, καθώς και τραπεζικά εμβάσματα. Σύμφωνα με την εκάστοτε πολιτική, ενδέχεται να διατίθενται και ορισμένες κρυπτονομισμάτων λύσεις, εξασφαλίζοντας ακόμη περισσότερη απορρήτου και γρήγορη εκτέλεση. Το ελάχιστο όριο κατάθεσης καθορίζεται σε ένα λογικό ύψος, ενώ τα ανώτατα όρια επιτρέπεται να αυξηθούν ύστερα από συνεννόησης με την βοήθεια ή αυτομάτως μέσω της προόδου στο πρόγραμμα VIP.

Απόσυρση Κερδών

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

Χρόνοι και Όρια

Οι χρόνοι ολοκλήρωσης ποικίλλουν ανάλογα με τη μέθοδο πληρωμής και το επίπεδο του λογαριασμού. Τα ηλεκτρονικά πορτοφόλια κανονικά ολοκληρώνουν τις πληρωμές εντός 24 ωρών από την έγκριση, ενώ οι κάρτες και τα τραπεζικά εμβάσματα απαιτούν από μία έως πέντε εργάσιμες ημέρες. Η πλατφόρμα Hexabet δεν βάζει χρεώσεις στις αναλήψεις, παρ’ όλα αυτά οι ενδιάμεσοι πάροχοι πληρωμών ενδέχεται να έχουν δικές τους πολιτικές. Τα όρια απόσυρσης ανά συναλλαγή και ανά ημέρα αυξάνονται ανάλογα με το επίπεδο VIP, δίνοντας στους premium παίκτες τη δυνατότητα να μετακινούν μεγαλύτερα ποσά χωρίς καθυστερήσεις. Για ακριβή και ενημερωμένα δεδομένα, ο χρήστης μπορεί πάντα να συμβουλεύεται την ενότητα Τραπεζικών Συναλλαγών στην επίσημη ιστοσελίδα.

Μέση Διάρκεια Επεξεργασίας ανά Κατηγορία

  • Διαδικτυακά πορτοφόλια (Skrill, Neteller): 0–24 ώρες από την έγκριση
  • Τραπεζικές κάρτες (Visa, Mastercard): 1–3 εργάσιμες ημέρες
  • Έμβασμα: 2–5 εργάσιμες ημέρες
  • Προπληρωμένες κάρτες (Paysafecard): συνήθως δεν επιτρέπονται για αναλήψεις· απαιτείται διαφορετική τρόπος

Εκτεταμένη Βιβλιοθήκη Παιχνιδιών: Από Κουλοχέρηδες μέχρι Live Casino

Το κέντρο κάθε καζίνο αποτελεί η συλλογή των παιχνιδιών του και το Hexabet Casino επενδύει διαρκώς σε μια βιβλιοθήκη που καλύπτει κάθε γούστο και επίπεδο δεξιοτήτων. Συνεργάζεται με κορυφαίους παρόχους λογισμικού της παγκόσμιας αγοράς, όπως NetEnt, Pragmatic Play, Evolution Gaming και Play’n GO, με αποτέλεσμα κάθε τίτλος ανταποκρίνεται σε αυστηρές προδιαγραφές γραφικών, ήχου και δικαιοσύνης. Οι Έλληνες παίκτες έχουν τη δυνατότητα να περιηγηθούν σε αμέτρητες επιλογές, διαλέγοντας ανά κατηγορία, πάροχο ή δημοτικότητα, ενώ η μηχανή αναζήτησης επιτρέπει τον γρήγορο εντοπισμό συγκεκριμένων τίτλων. Η ποικιλία δεν αποτελεί απλώς ποσοτική· κάθε παιχνίδι διαθέτει επικυρωμένη γεννήτρια τυχαίων αριθμών (RNG), εγγυώμενοι αδιάβλητα αποτελέσματα.

Κουλοχέρηδες και Προοδευτικά Τζάκποτ

Οι κουλοχέρες αποτελούν τη ραχοκοκαλιά της βιβλιοθήκης, με μια μοναδική γκάμα που απλώνεται από κλασικές μηχανές τριών τροχών έως μοντέρνα βίντεο φρουτάκια με πολλές γραμμές πληρωμής και έξυπνους μηχανισμούς. Οι λάτρεις των προοδευτικών τζάκποτ θα βρουν τίτλους όπου το έπαθλο ανεβαίνει με κάθε στοίχημα, φτάνοντας συχνά σε ποσά που αλλάζουν ζωή. Η πλατφόρμα περιλαμβάνει δημοφιλείς σειρές όπως τα Big Bass, τα Sweet Bonanza και τα Book of Dead, ενώ δεν λείπουν και αποκλειστικές εκδόσεις που ενσωματώνουν τοπικά θέματα για το ελληνικό κοινό. Κάθε παιχνίδι συνοδεύεται από αναλυτικό πίνακα πληρωμών και δυνατότητα δοκιμής σε demo λειτουργία, δίνοντας την ευκαιρία στον χρήστη να γνωρίσει με τους κανόνες προτού χρησιμοποιήσει πραγματικά χρήματα.

Επιτραπέζια Παιχνίδια και Κάρτες

Για όσους προτιμούν τη προσέγγιση και την παράδοση, το Hexabet Casino προσφέρει μια πλήρη συλλογή επιτραπέζιων παιχνιδιών. Εδώ υπάρχουν πολλές τύποι μπλακτζάκ, ρουλέτας, μπακαρά και πόκερ, κάθε μία με διαφορετικούς όρους και ποσά πονταρίσματος που εξυπηρετούν τόσο τους περιστασιακούς είτε και τους μεγάλους παίκτες. Η ευρωπαϊκή ρουλέτα με το ελάχιστο πλεονέκτημα του καζίνο, το γνήσιο μπλακτζάκ με ικανότητα split και double down, καθώς και το στούντιο πόκερ Caribbean Stud είναι κάποια μόνο περιπτώσεις. Η υψηλή ποιότητα των γραφικών και η απρόσκοπτη λειτουργία της κίνησης αναπαράγουν αληθοφανώς την αίσθηση ενός παραδοσιακού καζίνο, ενώ οι λεπτομερείς κατευθύνσεις βοηθούν ακόμα και τους νεότερους παίκτες να αντιληφθούν εύκολα τη εξέλιξη του παιχνιδιού.

Live Καζίνο με Πραγματικούς Ντίλερ

Το τμήμα του live καζίνο ενισχύει την εμπειρία, μεταφέροντας τον παίκτη σε πραγματικά στούντιο όπου επαγγελματίες ντίλερ χειρίζονται το παιχνίδι σε πραγματικό χρόνο. Μέσω πολλαπλών καμερών υψηλής ευκρίνειας και άμεσης ροής βίντεο, ο χρήστης βλέπει κάθε κίνηση του ντίλερ, βάζει στοιχήματα μέσω ενός διαδραστικού περιβάλλοντος και μπορεί να επικοινωνήσει τόσο με τον ντίλερ όσο και με άλλους συμμετέχοντες. Διατίθενται τραπέζια ρουλέτας, μπλακτζάκ, μπακαρά και πολλές τηλεπαιχνιδικές παραλλαγές, όπως το Crazy Time και το Monopoly Live, που ενώνουν το στοιχείο της τύχης με την ψυχαγωγία. Τα τραπέζια εργάζονται όλο το εικοσιτετράωρο, με έμπειρους παρουσιαστές που διατηρούν υψηλό επίπεδο επαγγελματισμού και ευγένειας.

Πιστοποίηση, Προστασία και Υπεύθυνο Παιχνίδι

Η νόμιμη λειτουργία και η ασφαλής λειτουργία είναι τα θεμέλια κάθε premium εμπειρίας, και το Hexabet Casino το αποδεικνύει στην πράξη μέσω της πιστοποίησής του από αναγνωρισμένη ρυθμιστική αρχή. Η αδειοδότηση εξασφαλίζει ότι η ιστοσελίδα δραστηριοποιείται σύμφωνα με υψηλά πρότυπα διαφάνειας, ασφάλειας παικτών και αμερόληπτου παιχνιδιού. Συχνοί επιθεωρήσεις από ανεξάρτητους φορείς οργανισμούς βεβαιώνουν ότι ο αλγόριθμος sport24.gr τυχαίων αριθμών εξάγει πράγματι απρόβλεπτα αποτελέσματα και ότι τα ποσοστά επιστροφής (RTP) αντιστοιχούν στα αναφερόμενα δεδομένα. Για τον Έλληνα παίκτη, αυτό σημαίνει ένα χώρο όπου είναι σε θέση να στοιχηματίσει με σιγουριά, γνωρίζοντας ότι τα ποσά του προστατεύονται και ότι οι πιθανότητες δεν επηρεάζονται.

Νομικό Πλαίσιο Πλαίσιο και Αδειοδότηση

Το Hexabet Casino διαθέτει πιστοποίηση λειτουργίας από παγκοσμίως επίσημη φορέα, όπως η Επιτροπή Παιγνίων της Μάλτας (MGA) ή αντίστοιχος οργανισμός, η οποία απαιτεί διαρκή τήρηση με διατάξεις για την πρόληψη της νομιμοποίησης εσόδων από παράνομες δραστηριότητες και την προστασία των ιδιωτικών δεδομένων. Ο αριθμός άδειας είναι αναρτημένος στο τέλος της ιστοσελίδας, δίνοντας τη δυνατότητα σε όλους να τον ελέγξει στο επίσημο μητρώο της ρυθμιστικής αρχής. Η συμμόρφωση με τον Γενικό Κανονισμό Κανονισμό Προστασίας Δεδομένων (GDPR) εγγυάται ότι τα προσωπικά στοιχεία στοιχεία των μελών από την Ελλάδα έχουν της υψηλότερης δυνατής ασφάλειας, με δυνατότητα πρόσβασης, διόρθωσης και αφαίρεσης.

Τεχνολογία Ασφάλειας

Σε τεχνικό επίπεδο, η πλατφόρμα αξιοποιεί πρωτόκολλα ασφαλείας SSL 128-bit ή υψηλότερα, που θωρακίζουν τη διακίνηση δεδομένων μεταξύ του χρήστη και των διακομιστών. Επιπλέον εφαρμόζονται τειχίσματα ασφαλείας προηγμένης

Εκκινώντας το Περιπέτεια σας στο Hexabet Casino

Η εγγραφή στον χώρο του Hexabet Casino είναι μια απλή, συστηματική διαδικασία που λαμβάνει υπόψη τον χρόνο σας του χρήστη και δημιουργεί γερές βάσεις για μια ασφαλή εμπειρία. Από την πρώτη στιγμή, ο νέος παίκτης κατευθύνεται με σαφήνεια, χωρίς περιττά βήματα ή σύγχυση. Το μοναδικό που απαιτείται είναι μια ενεργή σύνδεση στο διαδίκτυο και ορισμένα λεπτά για τη συμπλήρωση των απαραίτητων στοιχείων. Η πλατφόρμα έχει σχεδιαστεί ώστε ακόμη και κάποιος που δεν είναι ιδιαίτερα εξοικειωμένος με την τεχνολογία να μπορεί να ολοκληρώσει την εγγραφή του και να πραγματοποιήσει την πρώτη του κατάθεση χωρίς βοήθεια. Ωστόσο, η υποστήριξη παραμένει διαθέσιμη σε κάθε βήμα για όποιον τη χρειαστεί.

Δημιουργία Λογαριασμού

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

  1. Ο χρήστης επιλέγει το κουμπί «Εγγραφή» στην κορυφή της αρχικής σελίδας.
  2. Συμπληρώνει μια φόρμα με προσωπικά δεδομένα, όπως ονοματεπώνυμο, ημερομηνία γέννησης και διεύθυνση ηλεκτρονικού ταχυδρομείου.
  3. Δημιουργεί ένα μοναδικό όνομα χρήστη και έναν ισχυρό κωδικό πρόσβασης.
  4. Επιλέγει το νόμισμα του λογαριασμού (ευρώ) και αποδέχεται τους όρους και τις προϋποθέσεις, αφού πρώτα τους διαβάσει.
  5. Ολοκληρώνει την εγγραφή μέσω ενός συνδέσμου επιβεβαίωσης που αποστέλλεται στο email του.

Ταυτοποίηση και Ασφάλεια

Μετά την ενεργοποίηση του λογαριασμού, ο πελάτης προτρέπεται να ολοκληρώσει τη διαδικασία επαλήθευσης (KYC) πριν αιτηθεί την αρχική του ανάληψη. Αυτό το βήμα είναι αναγκαίο και προφυλάσσει και τον ίδιο και την πλατφόρμα. Συχνά ζητείται η μεταφόρτωση ενός ισχύοντος εγγράφου ταυτοποίησης (ταυτότητα ή διαβατήριο), ενός πρόσφατου τιμολογίου κοινής ωφέλειας ή τραπεζικού statement που να πιστοποιεί τη ταχυδρομική διεύθυνση, και πιθανώς της κάρτας που έγινε χρήση για κατάθεση (με καλυμμένα τα κεντρικά ψηφία). Η ομάδα συμμόρφωσης εξετάζει τα δικαιολογητικά συνήθως εντός 24 ωρών, και ο παίκτης ενημερώνεται μέσω email για την αποδοχή ή για πιθανές επιπλέον ενέργειες.

Πρώτη Συναλλαγή και Παιγνίδι

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

Scroll to Top