/** * 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 ); } } Αποτελεί το Mobile Casino Gaming Κατάλληλο για για Εσάς; – UBIPREL S.A.S

Αποτελεί το Mobile Casino Gaming Κατάλληλο για για Εσάς;

άρπαξε μπόνους γενεθλίων από Rooli Casino

Το να αποφασίζετε αν το mobile casino gaming προσαρμόζεται στον τρόπο ζωής σας δεν είναι απλώς ζήτημα τεχνολογίας roolicasino.gr. Είναι μια απόφαση που επηρεάζει τον ρυθμό του παιχνιδιού σας και τη εξυπηρέτηση των συναλλαγών σας. Στο Rooli Casino, έχουμε διαμορφώσει την πλατφόρμα μας ώστε να λειτουργεί άψογα σε κινητές συσκευές, χωρίς να χάνει την ποιότητα. Ας εξετάσουμε μαζί τα πλεονεκτήματα και τις δυνατότητες που εμφανίζονται όταν μετακινείτε τη δράση στην παλάμη του χεριού σας.

Η Προσέγγιση του Mobile-First Σχεδιαστικής Προσέγγισης

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

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

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

Σύγκριση Εμπειρίας: Εφαρμογή vs. Πρόγραμμα Περιήγησης

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

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

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

  • Άμεση είσοδος χωρίς κατεβάσματα ή αναβαθμίσεις που χρησιμοποιούν χώρο.
  • Πλήρης συμβατότητα με iOS και Android μέσω οποιουδήποτε σύγχρονου browser.
  • Ίδια κρυπτογράφηση SSL και πρωτόκολλα ασφαλείας για την ασφάλεια των συναλλαγών.
  • Ικανότητα εναλλαγής συσκευών χωρίς χάσιμο προόδου ή ρυθμίσεων του λογαριασμού σας.
  • Αυτόματη ρύθμιση της ανάλυσης για άριστη εμπειρία θέασης σε κάθε οθόνη.

Είσοδος Βιβλιοθήκη Παιχνιδιών από Παντού

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

ασφαλές Rooli Casino μπόνους match banner στην Greece

Στο live καζίνο, η mobile εμπειρία είναι πλέον το ίδιο καθηλωτική. Οι επαγγελματίες ντίλερ προβάλλονται σε πραγματικό χρόνο και δύναστε να τοποθετήσετε τις μάρκες σας σε ένα φιλικό περιβάλλον. Η ροή βίντεο ρυθμίζεται αυτόματα στην ταχύτητα της σύνδεσής σας. Δύναστε να μπείτε σε ένα τραπέζι μπακαρά ή στο Dream Catcher χωρίς να χάσετε δευτερόλεπτο δράσης, αρκεί να διαθέτετε σταθερή σύνδεση.

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

Προκλήσεις και Τρόποι να τις Ξεπεράσετε

Παρά τα πλεονεκτήματα, υπάρχουν προκλήσεις που πρέπει να γνωρίζετε. Η μικρότερη οθόνη μπορεί να κουράσει τα μάτια κατά τη διάρκεια μεγάλων συνεδριών. Η λύση είναι να ρυθμίζετε τη φωτεινότητα και να πραγματοποιείτε τακτικά διαλείμματα. Επιπλέον, ορισμένα παλαιότερα παιχνίδια που είναι σχεδιασμένα με Flash δεν είναι διαθέσιμα σε κινητά. Ωστόσο, η συντριπτική πλειονότητα των σύγχρονων τίτλων έχει δημιουργηθεί με τεχνολογία HTML5, οπότε το πρόβλημα αυτό τείνει να εκλείψει.

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

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

Συμβατότητες Συσκευών και Λειτουργικά Συστήματα

Δεν είναι απαραίτητο να έχετε το πιο σύγχρονο μοντέλο κινητού για να απολαμβάνετε μια άριστη εμπειρία. Η πλατφόρμα μας αποδίδει ομαλά σε ένα μεγάλο φάσμα συσκευών, είτε τρέχουν iOS 14 και άνω είτε Android 8 και νεότερες εκδόσεις. Αυτό που έχει σημασία είναι η σταθερότητα του προγράμματος περιήγησης. Συνιστούμε τη χρήση Chrome, Safari ή Firefox στην πιο σύγχρονη έκδοσή τους για ιδανική συμβατότητα γραφικών.

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

Αν αντιμετωπίσετε καθυστερήσεις, καθαρίστε την προσωρινή μνήμη του προγράμματος περιήγησής σας. Πολλές φορές, τα αποθηκευμένα δεδομένα μειώνουν την απόδοση. Βεβαιωθείτε επίσης ότι δεν τρέχουν πολλές εφαρμογές στο παρασκήνιο, καθώς καταναλώνουν μνήμη RAM. Το mobile gaming βασίζεται στην άμεση απόκριση, οπότε μια καθαρή συσκευή εξασφαλίζει ότι τα animations και οι ζωντανές μεταδόσεις θα παραμείνουν απρόσκοπτα.

Μέθοδοι Πληρωμών και Ταχύτητα Συναλλαγών στο Κινητό

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

Ο χρόνος ανάληψης ποικίλλει ανάλογα με τη μέθοδο. Τα ηλεκτρονικά πορτοφόλια είναι τα πιο γρήγορα, συνηθισμένα εντός 24 ωρών από την έγκριση. Οι τραπεζικές μεταφορές και οι κάρτες ενδέχεται να χρειαστούν τρεις έως πέντε εργάσιμες ημέρες. Πριν από την πρώτη ανάληψη, θα χρειαστεί να επαληθεύσετε τον λογαριασμό σας καταχωρώντας ένα έγγραφο ταυτοποίησης. Αυτή η διαδικασία KYC είναι αναγκαία και διασφαλίζει όλους.

Η ασφάλιση των συναλλαγών εξασφαλίζεται με κρυπτογράφηση SSL υψηλού επιπέδου, μετατρέποντας τα οικονομικά σας δεδομένα σε μη αναγνώσιμο κώδικα. Σας προτείνουμε να αποφεύγετε τα δημόσια δίκτυα Wi-Fi χωρίς κωδικό πρόσβασης όταν κάνετε συναλλαγές. Χρησιμοποιήστε τα δεδομένα του κινητού σας ή ένα αξιόπιστο ιδιωτικό δίκτυο για να μειώσετε δραστικά τον κίνδυνο υποκλοπής των στοιχείων σας.

Τα Πλεονεκτήματα των Αποκλειστικών Προσφορών για Κινητά

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

κορυφαίο Rooli Casino ημερήσιο μπόνους εικόνα

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

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

Υπεύθυνο Παιχνίδι στην Εποχή του Κινητού

Η άνεση της εισόδου 24/7 προκαλεί και την ανάγκη για αυστηρά όρια. Το υπεύθυνο παιχνίδι στο κινητό είναι ένα σύνολο εργαλείων που διαθέτετε στη διάθεσή σας. Μπορείτε να καθορίσετε ημερήσια, εβδομαδιαία ή μηνιαία όρια καταθέσεων άμεσα από το προφίλ σας. Μόλις φτάσετε το όριο, το σύστημα θα σας εμποδίσει να κάνετε νέα κατάθεση, δίνοντάς σας χρόνο να σκεφτείτε. Αυτό είναι κρίσιμης σημασίας όταν το καζίνο είναι πάντα στην τσέπη σας.

Το εργαλείο αυτοαποκλεισμού είναι μια επιπλέον δικλείδα ασφαλείας. Μπορείτε να αποκλειστείτε από τον λογαριασμό σας για μια περίοδο που κυμαίνεται από 24 ώρες έως αρκετούς μήνες. Κατά τη διάρκεια αυτής της περιόδου, δεν θα λαμβάνετε προωθητικά μηνύματα και δεν θα μπορείτε να συνδεθείτε. Είναι ένας αποτελεσματικός τρόπος για να κάνετε ένα ψυχρό διάλειμμα αν νιώσετε ότι χάνετε τον έλεγχο του χρόνου ή του προϋπολογισμού σας.

Το ιστορικό συναλλαγών σας είναι πάντα προσβάσιμο. Μπορείτε να δείτε ακριβώς πόσα χρήματα έχετε καταθέσει και πόσα έχετε αποσύρει σε ένα συγκεκριμένο χρονικό διάστημα. Αυτή η διαφάνεια σας βοηθά να διατηρείτε μια ρεαλιστική εικόνα της δραστηριότητάς σας. Σας ενθαρρύνουμε να αντιμετωπίζετε το mobile gaming ως μια μορφή ψυχαγωγίας με κόστος, όπως μια βραδιά στον κινηματογράφο, και όχι ως πηγή εισοδήματος.

Γιατί να Εμπιστευτείτε μια Mobile Πλατφόρμα

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

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

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

Πώς να Ξεκινήσετε με Ασφάλεια

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

Διαθέστε χρόνο για να συμπληρώσετε σωστά τα προσωπικά σας στοιχεία κατά την εγγραφή. Αυτό θα αποτρέψει καθυστερήσεις στην πρώτη σας ανάληψη. Τα στοιχεία πρέπει να συμφωνούν απόλυτα με τα επίσημα έγγραφά σας. Μια διαφορά στο όνομα ή την ημερομηνία γέννησης είναι ο συχνότερος λόγος απόρριψης ενός αιτήματος πληρωμής. Η ειλικρίνεια από την αρχή σώζει χρόνο και απογοήτευση αργότερα.

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

  1. Δημιουργήστε έναν λογαριασμό με αληθινά στοιχεία και ισχυρό κωδικό πρόσβασης.
  2. Επαληθεύστε το email και τον αριθμό τηλεφώνου σας για να θέσετε σε λειτουργία όλες τις λειτουργίες ασφαλείας.
  3. Κάντε την πρώτη σας κατάθεση διαλέγοντας μια μέθοδο πληρωμής που σας εξυπηρετεί.
  4. Κερδίστε το μπόνους γνωριμίας και μελετήστε προσεκτικά τους όρους στοιχηματισμού του.
  5. Πλοηγηθείτε στη βιβλιοθήκη παιχνιδιών και χρησιμοποιήστε τη λειτουργία demo για εξάσκηση.
  6. Ορίστε όρια κατάθεσης και χρόνου παιχνιδιού πριν εκκινήσετε να παίζετε με πραγματικά χρήματα.

Κοινές Ερωτήσεις

Απαιτείται να κατεβάσω κάποια εφαρμογή για να παίξω στο κινητό;

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

Παρέχεται ασφαλείς οι τραπεζικές συναλλαγές που κάνω από το κινητό μου;

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

Μπορώ να παίξω παιχνίδια με ζωντανό ντίλερ από το κινητό;

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

Ποιο είναι ο μικρότερος χρόνος ανάληψης μέσω κινητού;

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

Είναι τα μπόνους τα ίδια στο κινητό και στον υπολογιστή;

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

Τι συμβαίνει αν η σύνδεσή μου στο διαδίκτυο διακοπεί κατά τη διάρκεια ενός γύρου;

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

Με ποιον τρόπο μπορώ να θέσω όρια στο παιχνίδι μου από το κινητό;

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

Scroll to Top