/** * 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 ); } } /*! elementor - v3.27.0 - 18-02-2025 */ :root { --color-box-shadow-color: rgba(0, 0, 0, 0.05); } .eps-theme-dark { --color-box-shadow-color: rgba(0, 0, 0, 0.1); } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } @media screen and (min-width: 480px) { .text-start-sm { text-align: start; } } @media screen and (min-width: 480px) { .text-center-sm { text-align: center; } } @media screen and (min-width: 480px) { .text-end-sm { text-align: end; } } @media screen and (min-width: 768px) { .text-start-md { text-align: start; } } @media screen and (min-width: 768px) { .text-center-md { text-align: center; } } @media screen and (min-width: 768px) { .text-end-md { text-align: end; } } @media screen and (min-width: 1025px) { .text-start-lg { text-align: start; } } @media screen and (min-width: 1025px) { .text-center-lg { text-align: center; } } @media screen and (min-width: 1025px) { .text-end-lg { text-align: end; } } @media screen and (min-width: 1440px) { .text-start-xl { text-align: start; } } @media screen and (min-width: 1440px) { .text-center-xl { text-align: center; } } @media screen and (min-width: 1440px) { .text-end-xl { text-align: end; } } @media screen and (min-width: 1600px) { .text-start-xxl { text-align: start; } } @media screen and (min-width: 1600px) { .text-center-xxl { text-align: center; } } @media screen and (min-width: 1600px) { .text-end-xxl { text-align: end; } } @keyframes eps-animation-pop { from { transform: scale(0.75); opacity: 0; } to { transform: scale(1); opacity: 1; } } /*# sourceMappingURL=app-base.css.map *//** * Deprecated Functions of Astra Theme. * * @package Astra * @link https://wpastra.com/ * @since Astra 1.0.23 */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Deprecating footer_menu_static_css function. * * Footer menu specific static CSS function. * * @since 3.7.4 * @deprecated footer_menu_static_css() Use astra_footer_menu_static_css() * @see astra_footer_menu_static_css() * * @return string Parsed CSS */ function footer_menu_static_css() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_footer_menu_static_css()' ); return astra_footer_menu_static_css(); } /** * Deprecating is_support_footer_widget_right_margin function. * * Backward managing function based on flag - 'support-footer-widget-right-margin' which fixes right margin issue in builder widgets. * * @since 3.7.4 * @deprecated is_support_footer_widget_right_margin() Use astra_support_footer_widget_right_margin() * @see astra_support_footer_widget_right_margin() * * @return bool true|false */ function is_support_footer_widget_right_margin() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_support_footer_widget_right_margin()' ); return astra_support_footer_widget_right_margin(); } /** * Deprecating prepare_button_defaults function. * * Default configurations for builder button components. * * @since 3.7.4 * @deprecated prepare_button_defaults() Use astra_prepare_button_defaults() * @param array $defaults Button default configs. * @param string $index builder button component index. * @see astra_prepare_button_defaults() * * @return array */ function prepare_button_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_button_defaults()' ); return astra_prepare_button_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_html_defaults function. * * Default configurations for builder HTML components. * * @since 3.7.4 * @deprecated prepare_html_defaults() Use astra_prepare_html_defaults() * @param array $defaults HTML default configs. * @param string $index builder HTML component index. * @see astra_prepare_html_defaults() * * @return array */ function prepare_html_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_html_defaults()' ); return astra_prepare_html_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_social_icon_defaults function. * * Default configurations for builder Social Icon components. * * @since 3.7.4 * @deprecated prepare_social_icon_defaults() Use astra_prepare_social_icon_defaults() * @param array $defaults Social Icon default configs. * @param string $index builder Social Icon component index. * @see astra_prepare_social_icon_defaults() * * @return array */ function prepare_social_icon_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_social_icon_defaults()' ); return astra_prepare_social_icon_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_widget_defaults function. * * Default configurations for builder Widget components. * * @since 3.7.4 * @deprecated prepare_widget_defaults() Use astra_prepare_widget_defaults() * @param array $defaults Widget default configs. * @param string $index builder Widget component index. * @see astra_prepare_widget_defaults() * * @return array */ function prepare_widget_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_widget_defaults()' ); return astra_prepare_widget_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_menu_defaults function. * * Default configurations for builder Menu components. * * @since 3.7.4 * @deprecated prepare_menu_defaults() Use astra_prepare_menu_defaults() * @param array $defaults Menu default configs. * @param string $index builder Menu component index. * @see astra_prepare_menu_defaults() * * @return array */ function prepare_menu_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_menu_defaults()' ); return astra_prepare_menu_defaults( $defaults, absint( $index ) ); } /** * Deprecating prepare_divider_defaults function. * * Default configurations for builder Divider components. * * @since 3.7.4 * @deprecated prepare_divider_defaults() Use astra_prepare_divider_defaults() * @param array $defaults Divider default configs. * @param string $index builder Divider component index. * @see astra_prepare_divider_defaults() * * @return array */ function prepare_divider_defaults( $defaults, $index ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_prepare_divider_defaults()' ); return astra_prepare_divider_defaults( $defaults, absint( $index ) ); } /** * Deprecating is_astra_pagination_enabled function. * * Checking if Astra's pagination enabled. * * @since 3.7.4 * @deprecated is_astra_pagination_enabled() Use astra_check_pagination_enabled() * @see astra_check_pagination_enabled() * * @return bool true|false */ function is_astra_pagination_enabled() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_check_pagination_enabled()' ); return astra_check_pagination_enabled(); } /** * Deprecating is_current_post_comment_enabled function. * * Checking if current post's comment enabled and comment section is open. * * @since 3.7.4 * @deprecated is_current_post_comment_enabled() Use astra_check_current_post_comment_enabled() * @see astra_check_current_post_comment_enabled() * * @return bool true|false */ function is_current_post_comment_enabled() { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_check_current_post_comment_enabled()' ); return astra_check_current_post_comment_enabled(); } /** * Deprecating ast_load_preload_local_fonts function. * * Preload Google Fonts - Feature of self-hosting font. * * @since 3.7.4 * @deprecated ast_load_preload_local_fonts() Use astra_load_preload_local_fonts() * @param string $google_font_url Google Font URL generated by customizer config. * @see astra_load_preload_local_fonts() * * @return string */ function ast_load_preload_local_fonts( $google_font_url ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_load_preload_local_fonts()' ); return astra_load_preload_local_fonts( $google_font_url ); } /** * Deprecating ast_get_webfont_url function. * * Getting webfont based Google font URL. * * @since 3.7.4 * @deprecated ast_get_webfont_url() Use astra_get_webfont_url() * @param string $google_font_url Google Font URL generated by customizer config. * @see astra_get_webfont_url() * * @return string */ function ast_get_webfont_url( $google_font_url ) { _deprecated_function( __FUNCTION__, '3.7.4', 'astra_get_webfont_url()' ); return astra_get_webfont_url( $google_font_url ); } Mostbet U - V&K Cleaning
Quick Contact

Quick Contact

07895 725670

Mostbet U

Mostbet Uz

Mostbet Türkiye Çevrimiçi Kumarhane Mostbet Casin Reyhan Online Sipariş

Com’da müşterilerimiz, kolaylık ve esneklik sağlayan özel iOS empieza Android uygulamalarının yanı sıra masaüstü ve mobil site aracılığıyla hizmetlerimize kolayca erişebilirler. Canlı sohbet, e-posta ve Telegram aracılığıyla 7/24″ “Mostbet çevrimiçi müşteri desteğimiz, gerektiğinde hızlı yardım sağlar. Ayrıca Mostbet, bahis keyfini artırmak için çeşitli promosyonlar empieza teklifler sunmaktadır. Para çekme işlemi, hesaba afin de yatırma işlemi sırasında kullanılan yöntemle gerçekleştirilir. Mostbet, 17 farklı para yatırma ve çekme yöntemi sunmaktadır ve en popüler olanları aşağıdaki tabloda bulabilirsiniz.

Polikliniğimizi sosyal medya hesaplarımızdan takip ederek, güncel yeniliklerden ve kampanyalardan haberdar olabilirsiniz.” “[newline]Kişisel bilgilerin ve finansal işlemlerin gizliliğini sağlamak için gelişmiş şifreleme teknolojisi kullanıyoruz. Ayrıca herhangi bir sorunuz veya sorununuz olursa profesyonellerden oluşan ekibimiz her zaman yardıma hazırdır. Zorunlu Çerezler Belli çerezlerin kullanımı Site’nin doğru çalışması için zorunludur. Site’de oturum açıldığında devreye giren kimlik doğrulama çerezleri, Site’de bir sayfadan diğerine geçişinde etkin olan oturumun devam etmesini sağlamaktadır.

Giriş Yap

Prosedür, yönetime sah belgelerin (pasaport, uluslararası ehliyet) elektronik versiyonlarının sağlanmasını içerir. Doğrudan mobil cihazınıza indirebilir ya da apk dosyasını bilgisayarınıza indirebilir ve mevcut herhangi bir yöntemle telefonunuza aktarabilirsiniz. Hesabınızı doğrulamak için öncelikle kişisel dolabınızda bir pourtour doldurmanız gerekir. Casino bölümünün düzenli ziyaretçilerinden biri müşteri hizmetlerinin yavaşlığından şikayet ediyor ama aynı zamanda büyük kazancını weil anlatıyor http://flashgames2girls.com/.

  • Türkiye’deki yasalar sebebiyle bahis şirketleri ülkeden lisans alamamaktadır.
  • Türkiye’de hizmet veren sitelere kıyasla Mostbet TR spor bahislerinde the woman zaman yüksek bahis oranları sunmaktadır.
  • Eğer bir basketbol hayranıysanız, Mostbet’te bahis oynamak keyifli bir deneyim olacaktır.
  • Ortaklık programı, çevrimiçi bahis oynamaya başlamanın mükemmel bir yoludur.
  • IP adresinizi ya da cihazınızı değiştirdiğinizde, anlaşmazlıkları çözmek için bu numaraya sık sık bir kod gönderilecektir.

Hesap oluşturup, ilk giriş yaptıktan sonra açılan profil sayfanızda kişisel bilgileriniz, hesabınızdaki para miktarını ve bonuslarınızı görürsünüz. Mostbet Türkiye sayfası kayıt olma açısından sobre kolay” “sayfalardan biridir. Hesabınızı silmek için destek hattıyla veya mevcut başka bir yöntemle iletişime geçmeniz ve niyetinizi onlara bildirmeniz gerekir. Oyuncu kodu göndermekte sorun yaşıyor, ancak bir Mostbet destek temsilcisinin geri bildirime yanıt verdiğini ve sorunu çözmeye yardımcı olduğunu görebilirsiniz.

Mostbet’te Ücretsiz Bahisler

Fakat, bahis ve on line casino sitelerine lisans sağlayan başka yerler vardır empieza bu lisanslar bütün dünyada geçmektedir. Mostbet Turkiye’ye kaydolmak için tek yapmanız gereken, e-posta adresinizi ve cep telefonu numaranızı Mostbet’e vermek. Ardından, istediğiniz miktarda para yatırabilir ve en sevdiğiniz oyunları oynayabilirsiniz.

  • Futbol ve basketboldan bandy empieza florbola kadar, mostbet’in toplam ödemesi% ninety five.
  • Mostbet, bahis konusunda durante” “iyi oranları sunan bir çevrimiçi bahis şirketidir.
  • Mostbet bir sonraki süre?te belgelerinizi inceleyecek empieza oynamak için yasal yaşta olduğunuzu onaylayacaktır.”
  • Ayrıca rulet, poker ve” “blackjack gibi bilinen oyunların Türkçe masaları weil” “bulunmakta.
  • Mostbet bahisçi ofisi ve kumarhanesi için bonus kazanma koşulları aynıdır, ancak sadece bahis oynama koşulları farklıdır.
  • Mostbet, 17 farklı para yatırma ve çekme yöntemi sunmaktadır ve en popüler olanları aşağıdaki tabloda bulabilirsiniz.

Mostbet güncel giriş sonrasında yapacağınız üyelik için type doldurmanız yeterlidir. Sohbet odasında Türkçe bir soru sorarsanız, sohbet kendi kendine Türkçe Desteğe geçecek empieza Türkçe bir cevap alacaksınız. Diğer bahis bürolarının çoğunda bulunmayan disiplinler temsil edilmektedir. Oyun içi bahisler için birçok etkinlik mevcuttur, büyük maçların canlı yayınları vardır.

Türkiye’den Oyuncular Için Mostbet’e Oyun Hesabı Kaydı

Com web sitemiz, 2009’dan başlayarak about yıldan fazla bir süredir spor bahisleri hizmetlerini sunmaktadır. Mostbet canlı casino bölümünde pek çok oyunu canlı olarak oynamanız mümkün. Ayrıca rulet, poker ve” “blackjack gibi bilinen oyunların Türkçe masaları von daher” “bulunmakta.

  • Bu teknolojilerin kullanımı başta 6698 sayılı Kişisel Verilerin Korunması Kanunu (“Kanun”) olmak üzere diğer mevzuata uygun şekilde gerçekleştirilmektedir.
  • Yani, nereden olursanız olun, bu bahis sitesini kendi ana dilinizde kullanabileceksiniz.
  • Kullanıcılar çoğunlukla Mostbet yüksek bahis oranları nedeniyle överken, Mostbet kefil olan tanınmış bir kişiliği de kutluyor.

Maalesef, yasal düzenlemeler gereği Mostbet’e Türkiye’deki kullanıcılar ayna siteler üzerinden ulaşabilmektedir. Ve elbette, kullandığınız bağlantının güvenli ve güncel olduğundan” “emin olmak önemlidir. Gerçekten de, Mostbet ismi uzun zamandır kumar eğlencesi ve kazançlarının ana kaynağı olarak onu seçen Türk oyuncular arasında bir ev ismi olmuştur. Bu site Türkiye’de rakipsizdir empieza hiç şüphesiz bahis endüstrisindeki en başarılı empieza güvenilir web site olarak kabul edilmektedir. Yukarıdakilere benzer bir ilk para yatırma bonusu, 20 money veya üzeri ilk para yatırma işleminde 0 para yatırma eşleşmesi ve seçilen slot oyunları için 70 FS. Promosyon Kodları çeşitli spor bahisleri empieza bahis siteleri için mevcuttur, bu nedenle herhangi bir bahis oynamadan önce en iyi fırsatları kontrol ettiğinizden emin olun.

Sunulan Oyunlar

Eğer bir basketbol hayranıysanız, Mostbet’te bahis oynamak keyifli bir deneyim olacaktır. Bu teklif Mostbet’teki bahis deneyiminizi başlatmanın mükemmel bir yoludur. ” “[newline]Kazançlarınızı maksimuma çıkarmak için bu inanılmaz fırsatı kaçırmayın. Cep telefonunuzun markası ne olursa olsun, Mostbet uygulamasını indirebilirsiniz. İNTERNET SİTESI ÇEREZ AYDINLATMA METNİ Aydınlatma Metni Hakkında

  • Mostbet Türkiye müşterisi olmak kolay – bunun çok hızlı gerçekleşen kullanıcı hesabı oluşturma işlemini tamamlamanız gerekiyor.
  • Bu, oyuncuların bahis oynamak için daha güvenli ve daha güvenli bir platforma erişmelerini sağlar.
  • Mostbet bir oyuncuyla yaptığı finansal işlemlerin meşruiyetini sağlamak empieza oyuncunun kurallara uygunluğunu doğrulamak için gereklidir.
  • Bu süreç hızlı olacak ve bahis ve oyun hizmetlerine anında erişimi güvence altına alacak şekilde tasarlanmıştır.

Mostbet giriş olarak kişisel hesabınıza giriş yapmak için kayıt sırasında belirtilen e-posta adresini veya telefon numarasını ve hesap şifrenizi kullanabilirsiniz. Bu bahis sitesi sektördeki en faydal? bahis oranlarından bazılarını ve NetEnt empieza Microgaming gibi önde gelen sağlayıcıların geniş oyun yelpazesini sunmaktadır. Mostbet online on line casino, dünyanın dört bir yanından yüzlerce spor karşılaşmasında oranlar empieza bahis hatları sunan bir spor platformudur. Futbol, basketbol, tenis, buz hokeyi ve daha pek çok spor dahil olmak üzere geniş bir spor yelpazesine sahiptirler. Sitedeki bahis hatları da benzer hizmetler sunan diğer web sitelerine kıyasla oldukça rekabetçidir. Kayıt sırasında yapılmadıysa, belirtilen telefon numarasını empieza e-postayı weil teyit etmeniz gerekir.

Mostbet Arizona Casino Mosbet Kazin

Bunlar arasında kredi kartları, e-cüzdanlar ve Bitcoin gibi kripto para birimleri bulunmaktadır. Buna ek olarak Mostbet, oyuncuları bonus puanlar ve ücretsiz bahislerle ödüllendiren bir sadakat programı sunmaktadır. Promosyonun parçası olarak, oyuncular ilk para yatırma işlemlerinde yüzde 125 bonus alacaklar. Bonusun toplam miktarı sınırlıdır, ancak belirli oyuncunun yerel pra birimini dikkate almaya değer. Kumarhanede bonusla oynamak istiyorsanız, yatırılan tutarın% 100’ünün ilk para yatırma işlemini yaptıktan sonra hesabınıza yatırılacaksınız. Teklifi almak için kayıt olduktan sonraki yedi gün içinde en az one, 25 $ yatırmanız gerekir.

  • Her oyuncu en arizona ( az ) kez makbuzunu ve bahsini düşündü comienza uygun bahisler x60 ve yüksek oranlar sayesinde, bahisçinin ofisinin çalışmalarını kolayca anlayabilirsiniz.
  • Yetkilendirme sırasında herhangi bir hata oluşursa, şifreyi geri yüklemeyi deneyin.
  • Mostbet” “giriş için ilk yapılması gerekenler doğru empieza güvenilir bir kaynak üzerinden giriş bilgilerine erişmekten geçer.
  • Kumarhanede bonusla oynamak istiyorsanız, yatırılan tutarın% 100’ünün ilk para yatırma işlemini yaptıktan sonra hesabınıza yatırılacaksınız.
  • Kayıt sırasında işlem yapmak istediğiniz ülkeyi ve para birimini belirtmeniz gerekecektir.

Belgeleriniz doğrulandıktan sonra, hesabınızın doğrulandığına dair bir onay e-postası veya bildirim alacaksınız. Bu dimension para yatırma empieza çekme dahil olmak üzere siteye ve özelliklerine tam erişim sağlayacaktır. Kayıt” “olurken her zaman doğru bilgiler verin, çünkü bu, hesabınızın başkaları tarafından ele geçirilmesini önleyecektir. Site tabletler düşünülerek tasarlanmıştır ve the girl cihazda mükemmel şekilde çalışacaktır. Ama hepsi bu değil; Sadece katıldığınızda, yeni bir oyuncu olarak ek olarak 30 bedava dönüş daha kazanacaksınız! Mostbet Online Casino’da çok sayıda bedava döndürmeyle büyük ikramiyeyi yakalamak ve büyük kazanmak için birçok fırsatınız olacak.

Mostbet Canlı Casino

Site, sorumlu kumar uygulamalarını teşvik eder ve kullanıcıların harcama alışkanlıklarını kontrol altında tutmalarına yardımcı olacak araçlar sağlar. Kullanıcılar para yatırma limitleri belirleyebilir, siteden kendilerini hariç tutabilir ve ihtiyaç duyduklarında profesyonel yardım almak için kaynaklara erişebilirler. Oyuncular Andar Bahar, slotlar, video poker ve jackpot” “oyunları dahil olmak üzere çok çeşitli online casino oyunları arasından seçim yapabilirler. Ancak, sorumlu kumar oynamayı the girl zaman hatırlamalı ve kişisel bilgilerinin kimlik belgelerindekilerle eşleştiğinden emin olmalıdırlar. Bununla beraber, Türk kullanıcılar için Mostbet’in işlevselliği azaltılmış bir sürümü vardır (kumarhane kumar, poker, slot yok).

  • Büyük bahis limitlerine sahip oyunların yanı sıra en yeni ve popüler oyunların seçildiği VIP seçkisi vardır.
  • Kayıt” “olurken her zaman doğru bilgiler verin, çünkü bu, hesabınızın başkaları tarafından ele geçirilmesini önleyecektir.
  • Türkiye bölgesinde bu şirketin çalışan bir aynasını bulmak oldukça basittir.

Bu kazançları çekebilmeniz için Mostbet sitesinin size kullanım için sunmuş olduğu çoğu hoş ve elverişli bazı teknikler mevcuttur. Bunlardan birisi bitcoin, bir diğeri banka havalesi ve papara gibi hoş seçeneklerdir. Mostbet Türkiye müşterisi olmak kolay – bunun çok hızlı gerçekleşen kullanıcı hesabı oluşturma işlemini tamamlamanız gerekiyor. Ayrıca, her ikisi de web sitesinin masaüstü sürümünde bulunmayan özel bonuslar comienza promosyonlarla birlikte gelir. Mostbet bahis sitesi, spor bahisleri empieza casino oyunları sunan güvenilir bir bahis şirketidir.

Mostbet Aviator Tərəfindən Spribe Azərbaycanda Accident Oyununu Onlayn Oyna

Aşağıda en popüler canlı etkinliklere ve çizgilere bağlantılar empieza en çok aranan casino oyunlarına bağlantılar bulunmaktadır. Possuindo sitesinde TL’ye kadar bahis oynamak veya casino oynamak için (isteğe göre) hoş geldin bonusu vardır. Mostbet’in Canlı Sohbet özelliği, kullanıcıların hesap oluşturma, para transferleri empieza para çekme gibi her türlü sorusunda yardım almaları için hızlı ve etkili bir yol sağlar.

  • Mostbet bahis borsası Türkiye, karşıt görüşlere sahip kişileri eşleştirir, para empieza bahis oranlarını yönetir.
  • Fakat, bahis ve online casino sitelerine lisans sağlayan başka yerler vardır empieza bu lisanslar bütün dünyada geçmektedir.
  • Mostbet sitesinin en hoş casino oyunlarında elde ettiğiniz kazançlar anında hesabınıza yansır.
  • Kumarın bağımlılık yapabileceğine dikkat etmek önemlidir, bu nedenle sorumlu bir şekilde alınmalıdır.
  • Bu fırsatı kaçırmayın – bir başarı hikayesinin parçası olmak için bugün kaydolun!

Bu kategori yalnızca web sitesinin temel işlevlerini ve güvenlik özelliklerini sağlayan tanımlama bilgilerini içerir. MostBet, en yüksek kalitede kumar eğlencesi arayanlar için oluşturulmuş bir sanal oyun platformudur. Kumarhanemiz tüm oyuncularımız için heyecan verici oyunları, yüksek güvenlik standartlarını ve kullanım kolaylığını bir araya getiriyor.

Bir Kumarhane Için Depozitoda 0 Ilk Para Yatırma Bonusu + 15fs

Mostbet, rekabetçi oranlara sahip ve çeşitli oyunlar sunan bir bahis sitesidir. Mostbet giriş işlemi için kayıt şeklinize göre farklı” “alternatifler karşınıza çıkar. Ayrıca sitenin kazançları ödemek için 3 milyon €’luk bir garanti fonu bulunmakta. Bahis siteleri, yasal bir çerçevede hizmetler sunabilmek için ilgili lisanslarını daima almak halindedırlar.

  • Hesabınıza para yatırırken promosyonlara ve tekliflere dikkat etmenizi öneririz.
  • Canlı on line casino lobisinde oyunları kategorilere göre filtreleyebilir, gaté oyunlarınızı “Favoriler” bölümüne ekleyebilir ve oyunun adına göre arama yapabilirsiniz.
  • MostBet ekibi, hizmeti geliştirmek, sitenin işlevselliğini genişletmek ve reward sistemini iyileştirmek açısından çok fazla çalışma yaptı.
  • Mostbet platformunda, bir tür casino oyunu olan çevrimiçi slotları oynayabilirsiniz.

Evet, canlı yayınlarda video video yayınları için özel bir simgeyle işaretlenmiş bazı etkinlikler için uygulamada çevrimiçi yayınlar mevcuttur. Mostbet müşterilerine kredi kartları empieza PayPal dahil olmak üzere çeşitli müşteri hizmetleri seçenekleri sunmaktadır. Müşteri destek ekibi günün her saati çalışır ve duyarlı ve yardımcı olmasıyla bilinir. Şirketle e-posta veya canlı sohbet yoluyla iletişime geçebilirsiniz ve sorularınızı hızlı ve kapsamlı bir şekilde yanıtlayacaklardır. Canlı internet casino kısmında pek çok masada istenilen oyunu oynamak ve kazanç elde etmek yine Mostbet’te mümkün. Web sitesinin düzgün çalışması için gerekli çerezler kesinlikle gereklidir.

Mostbet Azerbaycan Rəsmi On Line Casino Giriş Və Qeydiyyat Mostbet A

“Üstelik Mostbet’in kayıt seçenekleri farklı müşteri tercihlerine empieza ihtiyaçlarına uyacak şekilde tasarlanmıştır. Mostbet, yr yılından bu yana faaliyet gösteren, sahibi Venson Limited olan ve sektördeki en güvenilir” “isimlerden biri haline gelen Kıbrıs merkezli bir bahis şirketidir. Şirket spor bahisleri ve casino oyunları da dahil olmak üzere çeşitli seçenekler sunmaktadır. Sadece uygulamada kullanılabilen bir dizi özellik de vardır – canlı maçlardan bildirimlerin ayarlanması, temanın değiştirilmesi (karanlık, açık).

Promosyon kodlarının belirli kısıtlamaları empieza sınırlamaları olabilir ve yalnızca kısa bir süre için etkindirler; dolayısıyla bunu akılda tutmak hayati önem taşır. Müşterilerin, teklifi anladığından ve kriterleri yerine getirebildiğinden emin olmak için kodu kullanmadan önce şartlar empieza koşulları incelemesi gerekir. Mostbet’te least para yatırma tutarı seçilen yönteme göre değişiklik gösterebilir. Belirli bir yöntem ve bölgeniz için kesin minimum para yatırma tutarı için Mostbet desteğine başvurmanız önerilir. MostBet ekibi, hizmeti geliştirmek, sitenin işlevselliğini genişletmek ve incentive sistemini iyileştirmek açısından çok fazla çalışma yaptı. MostBet’in tüm kumar faaliyetleri mobil uygulamalar üzerinden yürütülebilir ve dünyanın the girl yerinden oynayabilir comienza bahis yapabilirsiniz.

Mostbet Yukle ᐈ Android Os, Ios Mostbet Indir Azərbaycan Üçü

Mostbet ayna net sitesi, orijinal resmi net sitesiyle aynı içeriğe ve işlevselliğe sahip bir yedek veya alternatif web sitesidir. Bunlar, kullanıcıların bu kumarhanede bahis oynayabileceği birçok lig ve turnuvadan sadece birkaç örnektir. Mostbet’e gidin ve en sevdiğiniz sanal sporlar dallarına ve popüler siber disiplinlere karlı bahisler yapın. Mostbet’in Aviator oyunu, heyecan” “verici ve yenilikçi bir şekilde spor bahisleri yapmanızı sağlayan popüler bir oyundur. Oyun, dinamik oranlara sahiptir ve oranlar lehinize olduğunda kazancınızı hızlı bir şekilde artırmanıza olanak tanır.

  • Mostbet bahis sitesine kayıt nasıl yapılmaktadır, siteye nasıl giriş yapılmaktadır gibi sorular soruyorsanız cevabı hepinize aynı anda verelim.
  • Ayrıca Mostbet, bahis keyfini artırmak için çeşitli promosyonlar ve teklifler sunmaktadır.
  • Mostbet’te Netent, Pragmatic Use, BetSoft ve daha fazlası gibi önde gelen sağlayıcıların oyunlarına erişebileceksiniz.
  • Buna ek olarak, etkinlik ilerledikçe güncellenen dinamik bir oran sistemi sunar.
  • Bahis şirketi neredeyse tüm sporlara empieza siber sporlara bahis yapmanıza olanak tanır.

Promosyon kodları, çevrimiçi bahis deneyiminizden daha fazlasını elde etmenin mükemmel bir yoludur. Bu kodlarla, bahislerde indirim ve kârınızı durante üst düzeye çıkarmanıza yardımcı olacak diğer bonusları alabilirsiniz. Canlı casino lobisinde oyunları kategorilere göre filtreleyebilir, gaté oyunlarınızı “Favoriler” bölümüne ekleyebilir ve oyunun adına göre arama yapabilirsiniz. Büyük bahis limitlerine sahip oyunların yanı sıra en yeni empieza popüler oyunların seçildiği VIP seçkisi vardır. Bunlardan herhangi birini seçerseniz, yatırmak istediğiniz tutarı seçebileceğiniz bir ekran göreceksiniz.

“internet Casino Österreich Durch Echtgeld Casino Online Spiele

Com’da müşterilerimiz, kolaylık ve esneklik sağlayan özel iOS ve Android uygulamalarının yanı sıra masaüstü ve mobil web site aracılığıyla hizmetlerimize olduk? Ayrıca Mostbet, bahis keyfini artırmak için çeşitli promosyonlar ve teklifler sunmaktadır. Uygulamadaki hesaplarında oturum açmış olan tüm kullanıcılar bunları görebilir. Bu oyunlar gerçekçi grafiklere sahiptir ve size mümkün olan en iyi oyun deneyimini sunmak için tasarlanmıştır. Ayrıca, kazancınızı önemli ölçüde artırabilecek dolar topu ikramiyeleri ve aşamalı ikramiyeler gibi added bonus” “özelliklerle birlikte gelirler.

  • Prosedür, yönetime sah belgelerin (pasaport, uluslararası ehliyet) elektronik versiyonlarının sağlanmasını içerir.
  • Mostbet, yr yılından bu yana faaliyet gösteren, sahibi Venson Ltd olan ve sektördeki en güvenilir” “isimlerden biri haline gelen Kıbrıs merkezli bir bahis şirketidir.
  • Bir spor bahisleri organizasyonu olan Mostbet, kullanıcılara futbol, basketbol, tenis ve diğerleri gibi bir dizi spor dalında bahis yapma şansı sağlayacaktır.
  • Ayrıca, bazı ödeme yöntemleri, talebi işleme koymadan önce pasaport veya ehliyet gibi açık fotoğraflı kimlik belgelerini yüklemenizi gerektirir.

Amerikan ruleti, Avrupa ruleti ve Fransız ruleti arasından seçim yapabilirsiniz. Kumarın bağımlılık yapabileceğine dikkat etmek önemlidir, bu nedenle sorumlu bir şekilde alınmalıdır. Kumar alışkanlıklarınızın kontrolünü kaybettiğinizi düşünüyorsanız, profesyonel yardım almanızı öneririz. Tek tuşla, telefon numaranız ile, eposta adresiniz ile veya sosyal medya adresleriniz üzerinden Mostbet’te hesap açabilirsiniz. Profil bölümünüzdeki pra çekme bölümüne gitmeniz empieza burada istenilen bilgileri doldurduktan sonra dimension en uygun yöntemi seçmeniz ?art? aranmaktad?r.

Mostbet’te Bahis Çeşitleri

Örneğin, bir oyuncunun Mostbet yalnızca bir hesabı olmalıdır, kullanıcı 18 yaşından büyük olmalıdır. Bilgileriniz doğrulanmadan para yatıramaz, bahis oynayamaz, casino oynayamaz veya” “afin de çekemezsiniz. Yükleme düğmesi (aynı zamanda mevcut bakiyeyi de gösterir), çeşitli ödeme sistemleri içeren yükleme penceresini açar.

  • Mostbet bahis sitesine üye olmak için resmi world wide web sitesini ziyaret edebilir ve güncel giriş adresine erişebilirsiniz.
  • Bazı maçlar için movie yayınları da vardır – bu tür olaylar canlıda “Play” düğmesiyle işaretlenir.
  • Sitenin üyelik ve giriş yapma kısımları sobre üstte yer alırken, hemen altında bahis ve on line casino bölümleri yer almaktadır.
  • Ana menüdeki ayrı bir blokta, oyuncular arasında popüler olan Aviator – Spribe sağlayıcısından çok çeşitli çarpışma oyunlarına yol açan oyun, çıkacak.
  • Mostbet birkaç yıldır faaliyette ve birçok müşterinin güvenini kazanmayı başardı.

Güvenlik servisi, mevcut Mostbet müşterisinin yeni bir hesap oluşturmasını önlemek için mevcut oyuncuların kişisel empieza pasaport verilerini kontrol edecektir. Yeni hesaba giriş yaptıktan hemen sonra sitede veya uygulamada başlatılacak bir zamanlayıcı yönlendirmeye yardımcı olacaktır. Mostbet ile ortak olmak istiyorsanız, bunu online sitelerine kaydolarak yapabilirsiniz.

Mostbet Sitesinde Hangi On Line Casino Oyunları Empieza Bahis Seçenekleri Mevcut?

Bahis bonusu kazanmak için, alınan tutarın, the woman bir sonucun oranının 1 ) four veya daha yüksek olduğu üç veya daha fazla olayla kombine bahislerinde a few kez kazanılması gerekir. Ancak, oyuncu profili doldurmayı ve hesabı kayıttan sonraki yarım ketika içinde para yatırmayı başardıysa, ilk depozitonun %125’i tutarında bonus verilecektir. Mostbet’teki müşteri hizmetleri personeli iyi eğitimlidir empieza tüketicilere en iyi çevrimiçi deneyimi sunmayı taahhüt eder. Mostbet, sporseverler için çeşitli bahis seçenekleri sunan çevrimiçi bir bahis platformudur.

  • Bir spor seçtikten sonra, bahis listesini şampiyonalara, liglere ve ülkelere göre sıralayabilirsiniz.
  • Para aklama ile mücadele empieza kimlik hırsızlığına karşı para yatırılacak olan hesabın, oyun oynayan kişi ile aynı olduğunun kanıtlanması gerekir.
  • Kayıt formunu kişisel bilgilerinizle doldurun, ardından hesabınızı onaylamak için talimatları izleyin.
  • Bu geliştiriciler, gerçekçi grafiklere empieza ilgi çekici bonus özelliklere sahip yüksek” “kaliteli oyunlar yaratmalarıyla bilinir.
  • Günün veya gecenin herhangi” “bir saatinde katılabilirsiniz ve aralarından seçim yapabileceğiniz birçok farklı oyun türü vardır.

Bu süreç hızlı olacak empieza bahis ve oyun hizmetlerine anında erişimi güvence altına alacak şekilde tasarlanmıştır. MostBet’in sah web sitesi Türkçe de dahil olmak üzere 38 dilde yerelleştirilmiştir. Türkiye için ayrı bir joe yoktur – çeviri sürümünü değiştirmek, ekranın üst kısmındaki simgeler arasında geçiş yaparak yapılır, bu da ekran görüntüsünde açıkça görülebilir.” “[newline]Erlendirmek suretiyle, kullanıcılar sah internet site kullanılamıyor olsa haine bahis oynamaya ve sitenin hizmetlerinden yararlanmaya devam edebilirler. Google Pay out kullanarak para yatırmak istiyorsanız, hesabınıza giriş yapın ve “Para Yatır” düğmesine tıklayın. Ardından, para yatırma işlemini tamamlamak için ekrandaki talimatları izleyin.

Mostbet Türkiye Canlı Bahis

UMEKS GIDA İNŞAAT SAN. Bu teknolojilerin kullanımı başta 6698 sayılı Kişisel Verilerin Korunması Kanunu (“Kanun”) olmak üzere diğer mevzuata uygun şekilde gerçekleştirilmektedir. Siteye giriş yaptığınız andan itibaren aradığınız pek çok şeyi kolayca bulabilirsiniz. Sitenin üyelik ve giriş yapma kısımları sobre üstte yer alırken, hemen altında bahis ve casino bölümleri yer almaktadır. Türkiye’deki yasalar nedeniyle bahis şirketleri ülkeden lisans alamamaktadır.

  • Mostbet bahis sitesi, spor bahisleri empieza casino oyunları sunan güvenilir bir bahis şirketidir.
  • Bu süre boyunca güncelleme düğmesi, uygulamanın bêtisier menüsünde olacak – bakiyenin görüntülendiği tablonun altında.
  • Mostbet’in kullanıcı gizliliğini ve güvenliğini ciddiye aldığını ve kullanıcı bilgilerini korumak için sıkı güvenlik önlemleri kullandığını belirtmek önemlidir.
  • Ayrıca, her ikisi de web sitesinin masaüstü sürümünde bulunmayan özel bonuslar comienza promosyonlarla birlikte gelir.
  • Aşağıdaki tabloda, Just about all bet çevrimiçi bahis için mevcut olan sporları, ligleri empieza turnuvaları bulabilirsiniz.
  • Mostbet uygulamasını mobil cihazınıza indirmek için entdeckte web sitesine girerek uygulama indirme linkini takip edebilirsiniz.

Şirket, Curacao tarafından verilen offshore lisansı altında faaliyet göstermektedir. Bu, oyuncuların bahis oynamak için daha güvenli ve daha güvenli bir platforma erişmelerini sağlar. Bir ortak olarak, özel promosyonlara ve bonuslara erişebilecek, aylık ödemeler alacak ve çok daha fazlasını elde edeceksiniz! Çevrimiçi spor bahisleri ortağı olarak Mostbet’e güvenen yüz binlerce memnun müşteriye katılmanın nasıl bir şey olduğunu deneyimleyin.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
1xbet mobil
grandpashabet giriş
padişahbet
plinko romania
bettilt casino
betmatik
betwild giris
rokubet casino
biabet giriş
neyine giriş
padişahbet güncel giriş
biabet giris
cashwin giris
kingbetting giriş
pin up aviator
rexbet giriş
sugar rush 1000
imajbet giriş