/**
* 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 );
}
}
Πώς Λειτουργεί η Αδειοδότηση Λειτουργίας των Καζίνο – UBIPREL S.A.S
Ir al contenido
Η αδειοδότηση ενός διαδικτυακού καζίνο δεν είναι απλά ένα συνηθισμένο αυτοκόλλητο σήμα στο κάτω της σελίδας. Είναι τον θεμέλιο λίθο της εμπιστοσύνης ανάμεσα σε εσάς και την πλατφόρμα παιχνιδιού που χειρίζεται τα ποσά και τα προσωπικά σας. Σε αυτό το κείμενο θα παρουσιάσουμε με διαύγεια πώς λειτουργεί η χορήγηση άδειας, ποιες εποπτικές αρχές την εκδίδουν, τι ελέγχουν και για ποιο λόγο η παρουσία της αλλάζει ουσιαστικά την εμπειρία του παίκτη. Θα αναφέρουμε ακόμα πώς εμείς στο Hugewin Casino εφαρμόζουμε αυτές τις αρχές λειτουργίας στην καθημερινή μας λειτουργία, από την προστασία των συναλλαγών ως τη σαφήνεια των μπόνους και την υπεύθυνη διαχείριση του τυχερού παιχνιδιού.
Τι Είναι η Άδεια Λειτουργίας Καζίνο και Γιατί Είναι Σημαντική
Μια άδεια λειτουργίας καζίνο είναι ένα επίσημο έγγραφο που παρέχεται από μια αναγνωρισμένη ρυθμιστική αρχή, το οποίο δίνει τη δυνατότητα σε μια εταιρεία να προσφέρει τυχερά παιχνίδια με χρηματικά διακυβεύματα. Δεν πρόκειται για μια απλή γραφειοκρατική διαδικασία· για να την λάβει ένα καζίνο, πρέπει να τεκμηριώσει ότι πληροί αυστηρές προϋποθέσεις οικονομικής φερεγγυότητας, τεχνικής ακεραιότητας και νομικής συμμόρφωσης. Η άδεια ενεργεί ως δεσμευτικό έγγραφο ανάμεσα στο καζίνο, την εποπτική αρχή και εσάς τον παίκτη, εγγυώμενη ότι τα παιχνίδια είναι αμερόληπτα, οι πληρωμές γίνονται εγκαίρως και τα προσωπικά σας δεδομένα παραμένουν ασφαλή. Χωρίς αυτήν, ένα καζίνο λειτουργεί σε νομικό κενό, χωρίς καμία υποχρέωση λογοδοσίας.
Η σημασία της άδειας για εσάς είναι τεράστια. Πρώτον, σας προσφέρει το δικαίωμα να καταφύγετε σε μια ανεξάρτητη αρχή αν συναντήσετε οποιοδήποτε θέμα, όπως καθυστέρηση ανάληψης ή αμφισβητούμενο αποτέλεσμα παιχνιδιού. Δεύτερον, η αδειοδότηση υποχρεώνει στο καζίνο να διαχωρίζει τα χρήματα των παικτών από τα λειτουργικά του κεφάλαια, ώστε να είστε σίγουροι ότι τα κέρδη σας είναι πάντα διαθέσιμα. Τέλος, μια έγκυρη άδεια υποδηλώνει ότι το καζίνο ελέγχεται τακτικά από ανεξάρτητους οργανισμούς για τη δικαιοσύνη του λογισμικού του. Με λίγα λόγια, η άδεια είναι η ταυτότητα ενός αξιόπιστου καζίνο και το πρώτο πράγμα που πρέπει να ελέγχετε πριν ανοίξετε λογαριασμό.
Η Σπουδαιότητα της Αδειοδότησης για τα Μπόνους και τις Προσφορές
Τα προσφορές είναι μια από τις πιο ελκυστικές πτυχές ενός διαδικτυακού καζίνο, αλλά χωρίς ρύθμιση μπορούν να κρύβουν δυσάρεστες εκπλήξεις. Η αδειοδότηση αναγκάζει το καζίνο να εμφανίζει με απόλυτη διαφάνεια τους όρους και τις προϋποθέσεις κάθε προσφοράς. Αυτό σημαίνει ότι οι προϋποθέσεις πονταρίσματος (wagering requirements), τα μέγιστα επιτρεπόμενα πονταρίσματα κατά τη διάρκεια ενός μπόνους, η συνεισφορά κάθε τυχερού παιχνιδιού στην ολοκλήρωση των προϋποθέσεων και οι τυχόν περιορισμοί στα κέρδη πρέπει να είναι ξεκάθαρα διατυπωμένα και εύκολα διαθέσιμα. Ένα καζίνο με άδεια δεν είναι σε θέση να αποκρύψει όρους με μικρά γράμματα ή να αλλάξει μονομερώς τις προϋποθέσεις μιας ενεργής προσφοράς.
Στο Hugewin Casino, σχεδιάζουμε τις προσφορές μας —από το γενναιόδωρο πακέτο καλωσορίσματος και τις δωρεάν περιστροφές μέχρι τα επαναλαμβανόμενα μπόνους reload— με γνώμονα τη διαφάνεια και τη δικαιοσύνη. Η αδειοδότησή μας μάς αναγκάζει να ακολουθούμε συγκεκριμένες προδιαγραφές, όπως η λογική αναλογία απαίτησης στοιχηματισμού προς το ποσό του μπόνους, και να παρέχουμε εργαλεία που σας δίνουν τη δυνατότητα να παρακολουθείτε την πρόοδό σας. Πριν ενεργοποιήσετε οποιαδήποτε προσφορά, σας συνιστούμε πάντα να μελετάτε τους ολοκληρωμένους όρους, γνωρίζοντας ότι η ρυθμιστική αρχή έχει ήδη επιβεβαιώσει ότι οι όροι είναι έντιμοι και εφαρμοστέοι. Με αυτόν τον τρόπο, η απόλαυση ενός μπόνους γίνεται μια ασφαλής και ευχάριστη εμπειρία.
Με ποιον τρόπο Αξιολογούνται τα Καζίνο για να Αποκτήσουν Άδεια
Οικονομοτεχνικός Έλεγχος και Φερεγγυότητα
Πριν από τη χορήγηση άδειας, η ρυθμιστική αρχή πραγματοποιεί λεπτομερή οικονομικό έλεγχο στην εταιρεία που αιτείται. Αυτό εμπεριέχει την εξέταση των οικονομικών καταστάσεων, των πηγών χρηματοδότησης και της ικανότητας της εταιρείας να ανταποκριθεί τις υποχρεώσεις της προς τους παίκτες ακόμη και σε ακραία σενάρια. Το καζίνο πρέπει να αποδείξει ότι έχει επαρκή αποθεματικά κεφάλαια και ότι τα χρήματα των παικτών κρατούνται σε διαχωρισμένους τραπεζικούς λογαριασμούς, ασφαλισμένα από τυχόν οικονομικές δυσκολίες της επιχείρησης. Αυτός ο έλεγχος διενεργείται εκ νέου περιοδικά, διασφαλίζοντας ότι η οικονομική υγεία του καζίνο μένει σταθερή και ότι οι πληρωμές σας δεν κινδυνεύουν.
Αμεροληψία Λογισμικού και Συστήματα Τυχαίων Αριθμών
Το επακόλουθο σκέλος της αξιολόγησης αφορά την τεχνική ακεραιότητα των παιχνιδιών. Οι αρχές ζητούν από ανεξάρτητα εργαστήρια δοκιμών, όπως τα eCOGRA, iTech Labs ή GLI, να πιστοποιήσουν ότι οι γεννήτριες τυχαίων αριθμών (RNG) αποδίδουν σωστά και δημιουργούν πραγματικά τυχαία αποτελέσματα. Επιπρόσθετα, εξετάζεται το θεωρητικό ποσοστό επιστροφής στον παίκτη (RTP) κάθε παιχνιδιού, ώστε να συμφωνεί στα δηλωμένα επίπεδα. Αυτές οι πιστοποιήσεις δεν είναι μια φορά· τα καζίνο υποχρεούνται να υποβάλλονται σε τακτικούς επανελέγχους, και οποιαδήποτε απόκλιση μπορεί να οδηγήσει σε ανάκληση της άδειας. Επομένως, όταν συμμετέχετε σε ένα αδειοδοτημένο περιβάλλον, είστε βέβαιοι ότι κάθε περιστροφή και κάθε φύλλο που διανέμεται είναι αποτέλεσμα πιστοποιημένης τυχαιότητας.
Με ποιο τρόπο η Άδεια Εξασφαλίζει Τίμιο Παιχνίδι και Μηχανισμούς Τυχαίων Αριθμών
Η καρδιά κάθε δίκαιου διαδικτυακού καζίνο είναι η γεννήτρια τυχαίων αριθμών (RNG), ένα πολύπλοκο μαθηματικό μοντέλο που παράγει τυχαία αποτελέσματα για κάθε γύρο. Η άδεια επιβάλλει η RNG να έχει επικυρωθεί από εξουσιοδοτημένο ανεξάρτητο εργαστήριο, το οποίο ελέγχει εκατομμύρια δοκιμές για να επιβεβαιώσει ότι τα αποτελέσματα είναι στατιστικά τυχαία και δεν μπορούν να παραποιηθούν. Αυτό σημαίνει ότι όταν παίζετε φρουτάκια, ρουλέτα ή οποιοδήποτε άλλο παιχνίδι, η πιθανότητα νίκης είναι ακριβώς αυτή που δηλώνεται και δεν επηρεάζεται από προηγούμενα αποτελέσματα ή από το ύψος του πονταρίσματός σας. Οι περιοδικοί επανέλεγχοι διασφαλίζουν ότι το λογισμικό παραμένει αδιάβλητο σε βάθος χρόνου.
Πέραν από τα ψηφιακά παιχνίδια, η χορήγηση άδειας καλύπτει και το live καζίνο, όπου αληθινοί ντίλερ διαχειρίζονται τα παιχνίδια σε πραγματικό χρόνο μέσω βιντεοροής. Οι κανονιστικές αρχές προϋποθέτουν να υπάρχουν αυστηρά πρωτόκολλα λειτουργίας, κάμερες παρακολούθησης και τακτικοί έλεγχοι του εξοπλισμού, ώστε να αποκλείεται κάθε πιθανότητα ανθρώπινης παρέμβασης υπέρ ή κατά του παίκτη. Στο Hugewin Casino, συνεργαζόμαστε με κορυφαίους παρόχους live παιχνιδιών, των οποίων τα στούντιο είναι αδειοδοτημένα και ελέγχονται με την ίδια αυστηρότητα. Έτσι, είτε προτιμάτε το αυθεντικό περιβάλλον ενός τραπεζιού ρουλέτας είτε την ταχύτητα ενός online φρουτακιού, η άδεια εγγυάται ότι η εμπειρία σας είναι αμερόληπτη και αξιόπιστη.
Τι Συνεπάγεται η Αδειοδότηση για την Προστασία των Χρηματικών Κινήσεων σας
Η αδειοδότηση επιβάλλει τη χρήση εξελιγμένων μέτρων ασφαλείας για την εξασφάλιση των οικονομικών σας συναλλαγών. Ένα αδειοδοτημένο καζίνο οφείλει να χρησιμοποιεί κρυπτογράφηση SSL ανώτατου επιπέδου, η οποία διασφαλίζει ότι όλα τα δεδομένα που μεταφέρονται ανάμεσα στη συσκευή σας και τους διακομιστές μας είναι ιδιωτικά. Επιπλέον, η προσαρμογή με το πρότυπο PCI DSS διασφαλίζει ότι τα στοιχεία της κάρτας σας διαχειρίζονται με τα μέγιστα επίπεδα ασφαλείας. Στο Hugewin Casino, παρέχουμε μια πλούσια γκάμα εγγυημένων μεθόδων πληρωμής, μεταξύ άλλων πιστωτικών και χρεωστικών καρτών, ηλεκτρονικών πορτοφολιών όπως Skrill και Neteller, τραπεζικών εμβασμάτων και προπληρωμένων καρτών. Κάθε μέθοδος έχει ελεγχθεί και εγκριθεί στο πλαίσιο της άδειάς μας, ώστε να ικανοποιεί τις αυστηρότατες προδιαγραφές για την πρόληψη της απάτης και του ξεπλύματος χρήματος.
Ένα ακόμη ουσιώδες σημείο που ρυθμίζεται από την άδεια είναι οι χρόνοι ολοκλήρωσης αναλήψεων και η διαδικασία πιστοποίησης. Οι αυτόματες καταθέσεις είναι ο κανόνας, ενώ για τις αναλήψεις χρειάζεται πρώτα η διεκπεραίωση της επαλήθευσης του λογαριασμού σας (KYC), μια διαδικασία που επιβάλλεται από τη νομοθεσία για την καταπολέμηση της νομιμοποίησης εσόδων από παράνομες δραστηριότητες. Σε ένα αδειοδοτημένο καζίνο, οι χρόνοι αναμονής είναι σαφείς: συνήθως τα ηλεκτρονικά πορτοφόλια εκτελούν τις πληρωμές εντός 24 ωρών, ενώ οι κάρτες και τα τραπεζικά εμβάσματα απαιτούν από μία έως τρεις εργάσιμες ημέρες. Η άδεια μάς δεσμεύει να τηρούμε αυτά τα χρονοδιαγράμματα και να σας γνωστοποιούμε με καθαρότητα σε κάθε βήμα.
Οι Κυριότερες Αρχές Αδειοδότησης παγκοσμίως
Η Ρυθμιστική Αρχή Παιγνίων της Μάλτας (MGA)
Το Σώμα Παιγνίων της Μάλτας εκλαμβάνεται ένα από τα πιο αυστηρότατα και αξιοσέβαστα ρυθμιστικά φορείς παγκοσμίως. Η άδεια MGA απαιτεί από τα καζίνο να υφίστανται σε εξονυχιστικούς ελέγχους πριν από την απόκτηση και σε τακτικούς επανελέγχους στη συνέχεια. Οι οικονομικές απαιτήσεις είναι σημαντικές: το καζίνο πρέπει να αποδεικνύει επαρκή ρευστότητα, να διατηρεί τα κεφάλαια των παικτών σε διαχωρισμένους λογαριασμούς και να υποβάλλει αναλυτικές οικονομικές αναφορές. Παράλληλα, η MGA ελέγχει το λογισμικό, τις γεννήτριες τυχαίων αριθμών και τις διαδικασίες κατά του ξεπλύματος χρήματος. Για τον χρήστη, μια άδεια MGA σημαίνει ότι βρίσκεται σε ένα πλαίσιο υψηλής προστασίας, με ξεκάθαρες διαδικασίες διευθέτησης διαφορών και δεσμευτικά εργαλεία υπεύθυνου παιχνιδιού.
Το Σώμα του Κουρασάο (Curacao eGaming)
Το πιστοποιητικό από το Κουρασάο είναι μία από τις αρχαιότερες και πιο διαδεδομένες στον κλάδο των διαδικτυακών καζίνο, ειδικά για πλατφόρμες που αποσκοπούν σε διεθνές κοινό. Παρόλο που οι απαιτήσεις της είναι μικρότερο αυστηρές σε σχέση με την MGA, η αρχή του Κουρασάο παραμένει να επιβάλλει βασικούς προϋποθέσεις διαφάνειας, διαφύλαξης δεδομένων και έντιμου παιχνιδιού. Το ουσιωδέστερο σημείο που χρειάζεται να εξετάζετε είναι αν η άδεια είναι βασική (master license) και ποιός είναι ο κάτοχός της, καθώς πολλά καζίνο λειτουργούν ως υπο-αδειοδοτημένοι φορείς. Σε κάθε περίπτωση, μια νόμιμη άδεια Κουρασάο, όταν συμπληρώνεται από πιστοποιήσεις ανεξάρτητων ελεγκτών, προσφέρει ένα αξιόπιστο πλαίσιο δράσης με μεγάλη ελαστικότητα σε ζητήματα πληρωμών και ψηφιακών νομισμάτων.
Πώς να Ελέγξετε την Γνησιότητα μιας Άδειας Καζίνο
Η εξακρίβωση της αδείας ενός καζίνο είναι μια απλή ενέργεια που είστε σε θέση να ολοκληρώσετε σε λίγα λεπτά και σας προστατεύει από ανεπιθύμητες εκπλήξεις. Το βασικό βήμα είναι να πλοηγηθείτε στο υποσέλιδο της ιστοτόπου του καζίνο, όπου συχνά φαίνεται το έμβλημα της ρυθμιστικής αρχής παράλληλα με τον κωδικό αδειοδότησης. Κλικάροντας επάνω λογότυπο, θα πρέπει να μεταφερθείτε σε μια σελίδα επαλήθευσης στον δικτυακό τόπο της υπηρεσίας, η οποία πιστοποιεί ότι η αδειοδότηση είναι ισχύουσα και αντιστοιχεί πράγματι στο εν λόγω καζίνο. Αν το λογότυπο δεν είναι ενεργό ή κατευθύνει σε μια κοινή εικόνα δίχως υπερσύνδεσμο, αυτή η κατάσταση είναι μια σοβαρή ένδειξη ότι κάτι δεν πάει καλά.
Διαφορετικά, μπορείτε να επισκεφτείτε απευθείας τον επίσημο δικτυακό τόπο της κανονιστικής αρχής και να αναζητήσετε το καζίνο στη κοινόχρηστη βάση πληροφοριών των αδειοδοτημένων οργανισμών. Προσέξτε για ψεύτικες σφραγίδες ή αδειοδοτήσεις που έχουν λήξει. Στο Hugewin Casino, η αδεία μας παρουσιάζεται με σαφήνεια και ο σχετικός υπερσύνδεσμος οδηγεί άμεσα στη σελίδα επαλήθευσης της αρχής. Σας ενθαρρύνουμε να κάνετε αυτήν την εξακρίβωση σε κάθε ευκαιρία, γιατί θεωρούμε ότι η εμπιστοσύνη χτίζεται βασισμένη σε τεκμήρια και όχι σε υποσχέσεις. Ένα απλός έλεγχος μπορεί να σας γλιτώσει από τον κίνδυνο να εμπιστευθείτε σε μια μη αδειοδοτημένη πλατφόρμα.
Η Άδεια του Hugewin Casino και η Αφοσίωσή μας για Υγιές Παιχνίδι
Στο casino hugewin app λειτουργούμε με βάση μια άδεια από αναγνωρισμένη ρυθμιστική αρχή, την οποία μπορείτε να επιβεβαιώσετε ανά πάσα στιγμή μέσω του υποσέλιδου της ιστοσελίδας μας. Η άδεια αυτή δεν είναι απλώς ένα νομικό έγγραφο· είναι η βάση πάνω στην οποία θεμελιώνουμε ολόκληρη τη σχέση μας μαζί σας. Ακολουθούμε απαρέγκλιτα όλες τις υποχρεώσεις που απορρέουν από αυτήν, περιλαμβανομένων των αυστηρών κανόνων για την προστασία των ανηλίκων, την πρόληψη του ξεπλύματος χρήματος και την προώθηση του υπεύθυνου παιχνιδιού. Η ομάδα μας επιμορφώνεται τακτικά ώστε να εντοπίζει σημάδια προβληματικής συμπεριφοράς και να ενεργεί όταν χρειάζεται, πάντα με σεβασμό στην ιδιωτικότητά σας.
Το υπεύθυνο παιχνίδι είναι θεμελιώδης απαίτηση κάθε σοβαρής άδειας και εμείς το αντιμετωπίζουμε με απόλυτη σοβαρότητα. Στην πλατφόρμα μας θα ανακαλύψετε μια σειρά από εργαλεία που σας δίνουν τον έλεγχο, όπως όρια καταθέσεων ημερήσια, εβδομαδιαίως ή μηνιαία, δυνατότητα προσωρινού αποκλεισμού και υπενθυμίσεις πραγματικότητας που σας πληροφορούν για τον χρόνο που έχετε αφιερώσει στο παιχνίδι. Επιπλέον, συνεργαζόμαστε με οργανισμούς υποστήριξης και διαθέτουμε συνδέσμους για επαγγελματική βοήθεια. Η άδειά μας μάς δεσμεύει να προστατεύουμε τους παίκτες, και αυτό δεν είναι διαπραγματεύσιμο.
Δραστηριότητες, Πληρωμές και Εξυπηρέτηση σε ένα Αδειοδοτημένο Περιβάλλον
Η άδεια δεν καλύπτει μόνο τα δικαστικά και οικονομικά ζητήματα· απλώνεται σε όλη την βίωμα παιχνιδιού. Στο Hugewin Casino, η επιλογή τίτλων μας περιέχει εκατοντάδες κουλοχέρηδες, παραδοσιακά τραπέζια όπως ρόδα και μπλακτζάκ, και ένα πλήρες live καζίνο με πραγματικούς ντίλερ, όλες από σημαντικούς παρόχους λογισμικού που βρίσκονται και οι ίδιοι νόμιμοι και εξετασμένοι. Η πλατφόρμα μας είναι πλήρως προσαρμοσμένη για κινητές συσκευές, για να να μπορείτε να παίζετε από το smartphone ή το tablet σας άνευ καμία λήψη, κρατώντας την ίδια ποιότητα γραφικών και ταχύτητα απόκρισης. Αυτή τεχνολογική υποδομή ελέγχεται και επικυρώνεται στο πλαίσιο της αδείας μας, εξασφαλίζοντας ότι η βίωμα σας είναι απρόσκοπτη και ασφαλής σε κάθε συσκευή.
Η υποστήριξη πελατών είναι ένα επιπλέον πεδίο που ρυθμίζεται από τις απαιτήσεις αδειοδότησης. Ένα νόμιμο παιχνιδομηχανή οφείλει να παρέχει εύκολη πρόσβαση σε εξυπηρέτηση, με ξεκάθαρους διαύλους επικοινωνίας και λογικούς χρόνους απόκρισης. Στο Hugewin Casino, η ομάδα υποστήριξής μας είναι διαθέσιμη μέσου ζωντανής συνομιλίας και email, με ικανότητα επικοινωνίας στα ελληνικά, ώστε να επιλύετε κάθε ερώτηση σας σύντομα και αποδοτικά. Οι τρόποι πληρωμής που υποστηρίζουμε, από κάρτες και ηλεκτρονικά πορτοφόλια μέχρι τραπεζικά εμβάσματα, συνοδεύονται από διαφανείς χρονικά διεκπεραίωσης, και η άδεια μας εξασφαλίζει ότι θα τηρηθούν. Κάθε πτυχή της εμπειρίας σας είναι χτισμένη επάνω στο θεμέλιο της άδειας, ώστε να δύνασθε να επικεντρωθείτε σε εκείνο που έχει σημασία: την απόλαυση του παιγνιδιού.