/** * 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 Online Casino Türkiye ️ Resmi Net Sitesi Bonus 2500 Tl + Two Hundred Fifity F - V&K Cleaning
Quick Contact

Quick Contact

07895 725670

Mostbet Online Casino Türkiye ️ Resmi Net Sitesi Bonus 2500 Tl + Two Hundred Fifity F

Mostbet Online Casino Türkiye ️ Resmi Net Sitesi Bonus 2500 Tl + Two Hundred Fifity Fs

Online Spor Bahisleri Şirketi Ve Casino

Canlı oyunları takip etmekten keyif alıyorsanız, bu çevrimiçi kumarhanenin dünya genelindeki tüm büyük spor etkinliklerinde canlı maçlar sunması sizi mutlu edecektir. Platform, futbol ve ping-pong” “gibi çeşitli spor dallarında en iyi oranlardan bazılarını sunmaktadır. Ayrıca basketbol, futbol empieza Amerikan futbolu gibi birçok başka seçenek de bulunmaktadır.

  • Bu nedenle, kaydolmadan önce hüküm ve koşullarını okuduğunuzdan emin olun.
  • Şifrenizi unutursanız, “Şifremi Unuttum” veya benzer bir bağlantıya tıklayarak ve şifre sıfırlama e-postası almak için prosedürleri izleyerek şifrenizi sıfırlayabilmeniz gerekir.
  • Mostbet, 2009’dan bu yana birçok ülkede faaliyet gösteren ve cazip oyun koşullarına sahip güvenilir bahisçi olarak ünlenen küresel markadır.

Türkiye’den gelen oyuncular için, Türkiye’de mevcut ve yaygın olan hesaplarına para yatırmak için çeşitli seçeneklerle, Türk lirasında (TL) cüzdanlı hesap oluşturma seçeneği bulunmaktadır. Bu kayıt biçiminde şifre otomatik olarak oluşturulur – kayıttan hemen sonra yeni oyuncuya bildirilir. Şifreyi kişisel hesap kaydedebilir veya profilinize değiştirebilirsiniz.

Mostbet Uygulamasını Nasıl Edinebilirim?

Kullanıcının kimliğini doğrulamak ve platformu kullanmaya uygun olduğundan emin olmak için, doğrulama prosedürü sırasında sağlanan bilgiler kullanılır. Bir hesap oluşturmak ve Mostbet’e giriş yapmak, kullanıcılara platformun eğlenceli özelliklerine ve bahis oynamak için güvenli bir ortama erişim sağlayan basit bir işlemdir. Ayrıca bu tür programlar ana siteye erişimin kapalı olduğu durumlarda dahi yüklenebilmektedir. Mostbet sporlarına bahis oynamanıza izin veren uygulamaları nasıl indireceğinizi öğrenmek için ilgili Mostbet mobil uygulamasına gitmeniz” “yeterlidir.

  • Minimum para çekme miktarı yaklaşık zero. 4 $ ve maksimum miktar yaklaşık 4, 000 bucks ‘dır.
  • Örneğin, yeni üyeler için hoş geldin bonusu, mevcut kullanıcılara ise yatırım ve kayıp bonusları gibi çeşitli kampanyalar düzenlenmektedir.
  • Mostbet teknik destek derhal yanıt verir empieza tartışmalı konularla kapsamlı bir şekilde ilgilenir, ancak oyuncunun belirli bir konuda iyi niyetine dair kanıt sunması gerekecektir.
  • Bilgiler, Türkiye’deki veya oyuncunun tercih ettiği ülkedeki ödeme sistemlerinin mevcut durumunu yansıtmak için zamanında güncellenir.

Mostbet’in canlı bahis bölümü, uygun oranları ve kullanıcı dostu arayüzü ile Türkiye’deki spor bahisçileri için popüler bir seçimdir. Dash, HUSD, Casino Or maybe, ZChash, ADA, DAI, Dexsport, TrueUSD, Axie Infinity, Binance UNITED STATES DOLLAR, USD Coin ve TRON. Mostbet uygulaması, bahisçilerin en kaliteli bahis hizmetlerine mobil cihazları aracılığıyla güvenilir ve mükemmel bir şekilde erişebilecekleri durante güvenilir yoludur. Uygulamayı çevrimiçi olarak indirerek Mostbet üzerinden birçok kazanç elde edebilirsiniz. Uygulama, Android kullanıcıları için ücretsiz olarak sunulmaktadır ve aynı zamanda Mostbet uygulamasını cihazınıza tamamen ücretsiz olarak indirebilirsiniz http://yubasutterspca.com/.

Mostbet Kişisel Hesabınıza Giriş Yapma Talimatları

Mostbet’in Aviator’ı anında ödeme sağlar ve sosyal özellikleri entegre ederek oyuncuların paylaşım yapmasına ve rekabet etmesine olanak tanır. Akıllı telefonlar için optimize edilmiş olup bahis empieza casino hizmetlerine tam erişim sağlar. Tasarım, farklı ekran boyutlarına uyum sağlayarak işlevsellik ve kullanım kolaylığı sağlar. Diğer bahis bürolarının çoğunda bulunmayan disiplinler temsil edilmektedir.

  • Android empieza iOS için MostBet istemci yazılımı bölge kısıtlaması olmadan indirilebilir ve 38 dili destekler ve işlevsel olarak PC sürümünden daha üstündür.
  • Kayıt işlemi tamamlandıktan sonra iyi bonuslar alır ve bahis oynamak için en uygun koşullara sahip olurlar.
  • Hem Android os hem de iOS için mevcut olan uygulama, tüm Mostbet hizmetlerini entegre eder.
  • Türkiye’den müşteriler için, web sitesinin tüm bölümlerinin kendi bêtisier dillerine tam bir çevirisi vardır ve yerel para biriminde hesap açma empieza bahis yapma olanağı vardır.

Mostbet’teki önde gelen sağlayıcılardan gelen oyunlara ek olarak, kendi ürettiği ürünler de vardır – Mostbet logosuyla işaretlenmiş makineler ve oyunlar. Tek tıklamayla kayıt yaparken, kullanıcının yalnızca kayıt ülkesini (Türkiye) ve hesap para birimini (TL) seçmesi ve Mostbet’in kural ve yönetmeliklerini kabul etmesi gerekir. Şifre otomatik olarak oluşturulur ve kişisel hesabınıza ilk giriş yaptığınızda oyuncuya gönderilecektir. Mostbet yeni gelenler için sunduğu sadakat programının piyasadaki sobre iyi program olduğuna inanıyoruz. Bu, bonusun büyüklüğü ve elde” “etmenin ne kadar basit olduğunun yanı sıra bonus için ayrıntılı bahis kuralları ile kanıtlanmaktadır. Mostbet ayrıca Amerikan, Avrupa empieza Fransız gibi çeşitli rulet çeşitleri de sunmaktadır.

Mostbet Teknik Destek Ile Iletişime Geçme

“Mostbet bahis platformu, kullanıcılarına kapsamlı bir oyun yelpazesi sunmaktadır. Bu sayede bahis severler, kendi ilgi alanlarına ve becerilerine uygun oyunları tercih edebilme şansına sahiptir. Oyun türleri arasında; spor bahislerinden, canlı casino oyunlarına, slotlardan masa oyunlarına ve sanal oyun seçeneklerine kadar geniş bir seçenek sunulmaktadır. Bunların içinde futbol, basketbol, ping-pong gibi popüler spor dallarının yanı sıra, poker, baccarat, baccarat ve rulet gibi klasik casino oyunları da yer almaktadır. 2009 yılından bu yana kumar empieza eğlence portalı, müşterilerine en iyi slot machine makinelerini sunarak başarılı bir şekilde hizmet vermektedir. Ayrıca kazançlarını hızlı ve güvenli bir şekilde çekme imkanı da sunmaktadır.

Daha fazla rahatlık için bu popüler kripto para birimini kullanarak para yatırma ve çekme işlemleri yapabilirsiniz. Mostbet ayrıca Jacks or perhaps Better, Aces in addition to Faces, Deuces Wild ve daha fazlası gibi popüler video poker oyunlarından bir seçki sunar. Bu oyunlar gerçekçi grafikler, heyecan verici bonus özellikler ve büyük kazanma şansı ile birlikte gelir.

Web Sitesinin Mobil Versiyonu

Mostbet platformu tablet kullanıcıları için hassas bir şekilde ayarlanmıştır ve sağlam bir arayüz sunar. Geliştirilmiş görseller ve düzen, daha büyük ekranlara hitap ederek Mostbet’in çeşitli hizmetleriyle etkileşimi ve etkileşimi artırır. Herhangi bir müşterisi, bahis şirketinin yönetimine ilgili bir talep gönderdikten ve yapılan tüm bahisleri oynadıktan sonra hesabını silebilir.” “[newline]Mostbet uygulamasında bir hesap oluşturmak için adınız, doğum tarihiniz ve iletişim bilgileriniz dahil olmak üzere kişisel verilerinizi sağlamanız ve bir şifre oluşturmanız gerekir. Bu incelemeden, Mostbet (mostbet. com) dürüst bir bahis şirketi olduğu sonucuna varabiliriz. Özellikleri, şansınız yaver giderse kazancınızı kesin olarak alacağınızdan emin olarak kumar oynamak için kullanılabilir. Doğrudan mobil cihazınıza indirebilir veya apk dosyasını bilgisayarınıza indirebilir ve mevcut herhangi bir yöntemle telefonunuza aktarabilirsiniz.

  • Müşteriler telefon numaralarını, e-posta adreslerini veya Twitter, Telegram, Steam veya Google gibi sosyal medya hesaplarını kullanarak Mostbet’e kaydolmayı seçebilirler.
  • Mostbet Casinos Türkiye’de, oyunun tadını çıkarırken güvende olduğunuzun bilinciyle keyfinize odaklanabilirsiniz.
  • İşte sadece bazıları; Seçebileceğiniz birçok heyecan verici promosyon var.
  • Kayıt sırasında işlem yapmak istediğiniz ülkeyi ve afin de birimini belirtmeniz gerekecektir.

Oyun içi bahisler için birçok etkinlik mevcuttur, büyük maçların canlı yayınları vardır. Ayrıca, kullanılan ödeme yönteminin güvenliği ve emniyetinin yanı sıra tüm finansal empieza kişisel verilerin gizliliğini garanti etmek çok önemlidir. Mostbet uygulamasının kullanıcıları, kullanıcı arayüzünün basit tasarımı empieza kullanım kolaylığı vas?tas? ile istedikleri işlevleri hızlı bir şekilde belirleyebilir ve kullanabilir. Mostbet’teki hesap para birimi yalnızca kayıt sırasında bir kez seçilebilir – Türkiye ulusal para birimi (TL), Euro ve Amerikan doları cinsinden bir” “hesap açma imkânı vardır. Her etkinlik için canlı olarak, güncel istatistiklere sahip maç izci ve oyunun hareketlerinin grafiksel gösterimi vardır – saldırı yönleri, tehlikeli anlar, standart hükümler vb. Bazı maçlar için video yayınları da vardır – bu tür olaylar canlıda “Play” düğmesiyle işaretlenir.

Mostbet’e Nasıl Para Yatırılır?

Mostbet Casino web sürümü (tarayıcıdaki web sitesi), iOS ve Android uygulamaları aracılığıyla oynanabilir. Kredi/banka kartları, e-cüzdanlar, banka havaleleri ve diğerleri gibi kabul edilen ödeme yöntemlerinden birini kullanarak Mostbet hesabınıza para ekleyebilirsiniz. Başlamak için, hesabınıza giriş yapın ve ‘Para Yatırma’ seçeneğini seçin. Mostbet’teki müşteri hizmetleri personeli iyi eğitimlidir ve tüketicilere en faydal? çevrimiçi deneyimi sunmayı taahhüt eder. Mostbet müşteri hizmetleri personeli, bahis, hesapla ilgili sorunlar veya aradaki her şey hakkında sahip olabileceğiniz the girl türlü sorunuzda size yardımcı olmak için buradadır.

  • Herhangi bir şüpheyi ortadan kaldırmak için, Mostbet casino ve bahis şirketinin hizmetlerini uluslararası tipte bir lisans — Curaçao temelinde sunduğunu etkinlik belirtmekte fayda var.
  • Bu teklif, Mostbet platformunda bahis yapmaya başlamanız için harika bir fırsat sunuyor.
  • Casino bonusu seçerken, 100 TL’den depozito yatırırken ek olarak 250 ücretsiz spin alabilirsiniz.
  • Böylece, her türlü bahis ve oyun tutkununa hitap eden bu platform, sürekli gelişen içeriği ile üyelerine heyecan verici bir bahis ortamı sunmayı başarmaktadır.

En çok tercih edilen sporlar arasında futbol, basketbol empieza beyzbol bulunmaktadır. Bununla birlikte, at yarışı, tenis ve diğer e-spor dallarına weil bahis yapma imkanınız vardır. Mostbet, kumarbazlar için, seçilen slot oyunlarına 15 Ücretsiz Dönüş ile birlikte 7$ veya daha ?ok ilk para yatırma işleminde %100 afin de yatırma bonusu sağlıyor. Müşteriler, telefon numaralarını, e-posta adreslerini ya da sosyal medya hesapları gibi seçenekler arasından tercih yaparak Mostbet’e üye olabilirler.

Mostbet’te Yeni Ziyaretçiler İçin Hoşgeldin Bonusu

Ayrıca, sorularınızın çoğunu yanıtlayabilecek kapsamlı bir SSS bölümüne sahiptirler, böylece müşteri hizmetleri ekibinden bir yanıt beklemek zorunda kalmazsınız. Mostbet ayrıca Classic Blackjack, Western european Blackjack ve Great Limit Blackjack gibi popüler blackjack çeşitlerini de sunmaktadır. Bu oyunlar gerçekçi grafiklere sahiptir ve yan bahisler ve çoklu el oyunu gibi ek özelliklerle beraber gelir. Mostbet ayrıca blackjack, rulet ve bakara gibi çeşitli masa oyunları weil sunmaktadır. Bu oyunlar gerçekçi grafiklere sahiptir ve size mümkün olan en iyi oyun deneyimini sunmak için tasarlanmıştır.

  • Promosyon kodları yalnızca belirli spor bahisleri hizmetleri için geçerli olabilir, bu nedenle kullanmadan önce gerekirse iki kez kontrol ettiğinizden emin olun.
  • Mostbet Türkiye resmi adresi sayfası açık kartı olan sağlam siteye yönetimi, ziyaretçilere mitsi toplam 24 saat metode yardım etmek afin de sağlamanın ne kadar önemli olduğunu anlıyor.
  • Güvenilir ve güvenilir bir bahis şirketi arıyorsanız, Mostbet sizin için mükemmel bir seçimdir.
  • Bu adımları tamamladıktan sonra tamamen işlevsel bir Mostbet hesabınıza sahip olmalısınız.

Para yatırma ve çekme için kesin prosedür, kullandığınız platforma veya cihaza ve mevcut ödeme seçeneklerine göre farklılık gösterebilir. Mostbet spor bahisleri, spor etkinliklerinin veya oyunlarının sonucu üzerine bahis yapma faaliyetini ifade eder. 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. Moneyline, point spread ve over/under gibi geleneksel bahislerin yanı sıra bireysel oyuncu veya takım performansına dayalı daha spesifik prop bahisleri sobre mümkündür. Mobil uygulamaların önündeki en önemli avantajlardan biri Mostbet mobile version – bahisçi ofisinin hizmetlerine erişim hızı.

Android Ve Ios Için Mostbet Uygulaması

Ayrıca, daha fazla rahatlık için bu oyunları hem masaüstü sprained ankle treatment de mobil cihazlarda oynayabilirsiniz. Piyangolar, çevrimiçi bahislerinizden ekstra ödüller kazanmanın bir başka harika yoludur. Mostbet’te Powerball ve Mega Millions gibi çeşitli piyango oyunları arasından seçim yapabilirsiniz. Bu piyangolarla, potansiyel olarak bazı büyük ödüller kazanabilir ve biraz ekstra para kazanabilirsiniz. Mostbet sitesi, kaynağın ana seçeneklerini temsil eden birçok parlak öğenin öne çıktığı mavi renklerde yapılmıştır.

Örneğin, yeni üyeler için hoş geldin bonusu, mevcut kullanıcılara ise yatırım ve kayıp bonusları gibi çeşitli kampanyalar düzenlenmektedir. Öte yandan, online casino ve spor bahisleri tutkunları için Mostbet, sunduğu kaliteli hizmet sayesinde oldukça popüler bir platformdur. Herkesin zevkine uygun birçok spor dalında bahis yapma imkanı bulunurken, casino kısmında slotlar, masa oyunları empieza canlı krupiyelerle oynanan oyunlar gibi birçok alternatif bulunmaktadır. Güvenilir bir hizmet anlayışıyla, oyuncuların kişisel bilgilerinin korunması ve finansal işlemlerde şeffaflığın sağlanması, kullanıcılar için büyük önem taşımaktadır.

Mostbet’te Promosyon Kodlarını Kullanma

Totalizator, Mostbet’in bahis ortamına farklı zorluklar ve teşvikler sunan toplumsal bir boyut getiriyor. MostBet müşterisi geçtiğimiz ay oyunla” “ilgili olumlu izlenimlerini paylaştı. MostBet resmi olarak Kıbrıs Cumhuriyeti’nde kayıtlıdır ve düzenleyici Curacao tarafından uluslararası olarak lisanslanmıştır. Hassas bilgilerinizi korumak için güvenli bir bağlantı üzerinden giriş yaptığınızdan emin olun. Ayrıca hesabınızı güvende tutmak için şifrenizi düzenli olarak değiştirmelisiniz.

  • Mostbet’in Aviator’ı anında ödeme sağlar ve sosyal özellikleri entegre ederek oyuncuların paylaşım yapmasına ve rekabet etmesine olanak tanır.
  • Most Bet kumar türçe dili ve eğlence internet sayfası henüz aşina değilseniz, bahisçinin kalitesi ve güvenilirliği ilgili kafanız de uma sorular oluşması oyunculara kapalı muhtemeldir.
  • Oyun içi bahisler için birçok etkinlik mevcuttur, büyük maçların canlı yayınları vardır.
  • Bu, özel bir yetenek gerektirmez ve herkes tarafından kullanılabilir.

Bunlardan herhangi birini seçerseniz, yatırmak istediğiniz tutarı seçebileceğiniz bir ekran göreceksiniz. Mostbet, Türkiye’deki durante popüler gayri sah bahis bürolarından biri olarak bilinmektedir. Şimdi, Mostbet’i daha yakından tanıyalım, oyunculara sağladığı avantajları inceleyelim empieza bu bahis şirketinin genel işleyişini anlayalım. Bir Mostbet hesabı oluşturmak ve hareket halindeyken platformun yeteneklerini kullanmaya başlamak için hızlı ve basit bir yaklaşım Mostbet mobil uygulamasını indirmektir.

Android” “için Mostbet Uygulamasını Indirin

Bu, Türkiye’de ve diğer bazı ülkelerde çok sayıda hale gelen ödeme kısıtlamalarını atlamanıza olanak tanır. Mostbet’teki canlı casino, kullanıcıların bir video yayını aracılığıyla gerçek zamanlı krupiyelerle casino oyunları oynamasına olanak tanıyan bir özelliktir. Bu, daha sürükleyici ve otantik bir oyun deneyimi sunar, çünkü oyuncular tıpkı kara tabanlı bir kumarhanede olduğu gibi krupiyeyi görebilir ve onunla etkileşime girebilir. Blackjack, rulet, bakara ve online poker gibi popüler masa oyunları canlı casinolarda yaygın olarak görülür. Mostbet’e gidin empieza en sevdiğiniz sanal sporlar dallarına empieza popüler siber disiplinlere karlı bahisler yapın. Hayır, oyuncunun Mostbet’te zaten oyun hesabı varsa, uygulamayı yükledikten sonra bahisçi ofisinin web sitesindeki kullanıcı adı ve şifresiyle hesabına girebilir.

  • Bu genellikle adınız, adresiniz ve iletişim bilgileriniz gibi kişisel bilgilerinizi girmenin yanı sıra hesabınız için bir kullanıcı adı empieza şifre oluşturmayı gerektirir.
  • Ayrıca, harcadıkları süre boyunca işlem miktarının %10’u kadar haftalık geri ödeme alabilirler.
  • Mostbet uluslararası bir kuruluştur ve web sitesi. possuindo alan adı bölgesinde yer almaktadır.
  • İster spor bahisleri alanında isterse para internet casino oyunlarında farklı promosyon seçeneklerinden faydalanmak mümkündür.
  • Mostbet’e gidin ve en sevdiğiniz sanal sporlar dallarına empieza popüler siber disiplinlere karlı bahisler yapın.

Bu, depozitonuzun güvenliği için her oyunun arayüzünü güvenli bir şekilde tanımanıza olanak tanır. Ana ekranda” “oyunlar özelliklerine göre (bonus, jackpot, risk oyunu vb. ), türe göre (çizgi movie, spor, 18+, Mısır vb. ) empieza sağlayıcıya göre sıralanabilir. Kullanıcılar Mostbet platformu aracılığıyla çeşitli spor etkinliklerine ve oyunlara çevrimiçi bahis oynayabilir. Kullanıcıların siteyi kullanmadan önce bir hesaba kaydolmaları gerekir. İsim, doğum tarihi ve e-posta adresi gibi temel kişisel bilgiler, kayıt için gerekli olan tek şeydir, bu da işi kolay ve karmaşık hale getirir.

Para Yatırma Ve Çekme

İlk başta, şüpheli suçlunun bahisleri iptal edilebilir veya para çekme işlemleri kısıtlanabilir. Mostbet teknik destek derhal yanıt verir empieza tartışmalı konularla kapsamlı bir şekilde ilgilenir, ancak oyuncunun belirli bir konuda iyi niyetine dair kanıt sunması gerekecektir. Web sitesi ve twenty-five dile çevrilmiş resmi cep telefonu uygulamaları ile 93 ülkede faaliyet göstermektedir. Bahis şirketi neredeyse tüm sporlara ve siber sporlara bahis yapmanıza olanak tanır.

  • Gerçek parayla oynayabileceğiniz oyunlar için mükemmel bir seçenektir.
  • Sitede hem popüler hem de niş sporlardan oluşan harika bir seçim varifr?n, bu da bahis yapmak için favori sporu bulmayı kolaylaştırıyor.
  • En iyi deneyimi elde etmek empieza en yeni özelliklerden ve güncellemelerden faydalanmak için Mostbet uygulamanızı güncel tutmak çok önemlidir.
  • Futbol, basketbol, ping-pong, hatta daha fazlasını içeren geniş bir spor ve etkinlik yelpazesi sunmaktayız.
  • En az para çekme miktarı, Mostbet tarafından 1000₹ olarak saptanmıştır.
  • Mostbet’teki espor bahisleri meraklılar için tasarlanmış olup, bilinçli bahis kararlarına rehberlik edecek derinlemesine analizler sağlar.

Bonusu, her biri için 1. 40’dan başlayan oranlarla en az 3 etkinlik için ekspres ile geri kazanmanız gerekir. Mostbet English’e minimum 160 TL tutarında pra yatırarak bahis oynamaya başlayabilirsiniz. Kesinlikle, Mostbet internet sitesi Curacao Oyun Otoritesi tarafından yetkilendirilmiştir.

Bahis Türleri Ve Oran Formatı

Bu nedenle, Mostbet iOS ve Android uygulamalarını indirmeden önce bu farkları anlamak önemlidir. Ayrıca, mevcut kullanıcılar için Most Bet’ten sadakat programı indirme fırsatı sunulmaktadır. Üyeler düzenli olarak ücretsiz dönüşler ve ücretsiz bahisler kazanabilirler. Ayrıca, harcadıkları süre boyunca işlem miktarının %10’u kadar haftalık geri ödeme alabilirler. Mostbet Türkiye resmi adresi sayfası açık kartı olan sağlam siteye yönetimi, ziyaretçilere mitsi toplam 24 saat teknik yardım etmek pra sağlamanın ne kadar önemli olduğunu anlıyor. Mostbet borsasında ise bir bahisçi yerine başka kişilere karşı bahis oynayabilirsiniz.

  • Bu sayede bahis severler, kendi ilgi alanlarına ve becerilerine uygun oyunları tercih edebilme şansına sahiptir.
  • Bir hesap oluşturmak ve Mostbet’e giriş yapmak, kullanıcılara platformun eğlenceli özelliklerine empieza bahis oynamak için güvenli bir ortama erişim sağlayan basit bir işlemdir.
  • Ancak, oyuncular bu bonusun bir bahis gereksinimi olduğunu akılda tutmalıdır.
  • Bu, bonusun büyüklüğü ve elde” “etmenin ne kadar kolay olduğunun yanı sıra bonus için ayrıntılı bahis kuralları ile kanıtlanmaktadır.
  • Mostbet kayıt süreci, platformun yasal gerekliliklere uymasını ve kullanıcı verilerinin korunmasını garanti altına almaya yardımcı olan hesap doğrulama adı verilen önemli bir adım içerir.

Çevrimiçi poker odası, oyuncuların birbirleriyle turnuvalarda ve ring oyunlarında gerçek para kazanma amacıyla rekabet etmelerine izin verir. Sitede Texas Hold’em, Omaha ve Seven Credit card Stud gibi çeşitli poker oyunları bulunmaktadır. Para çekme işlemleri hızlıca tamamlanır ve oyuncular, hesaplarına para yatırmak için farklı birçok ödeme yöntemi arasından seçim yapabilirler. Android akıllı telefonlar için Mostbet resmi web sitesi ve iOS cihazlar için App Store, the girl iki platformla weil uyumlu olan Mostbet uygulamasının indirilmesini sağlar.

Mostbet’te Spor Bahisleri Nasıl Yapılır?

Mostbet’e kayıt işlemi Türk oyuncular için kolaylaştırılarak basit bir süreç sağlanmaktadır. Yeni gelenler, kayıt adımlarında onlara rehberlik etmeye hazır, davetkar ve kullanıcı dostu bir platform buluyor. Mostbet’in ?ok basit erişim ve yerel destek konusundaki kararlılığı, Türkiye pazarına odaklandığının bir örneğidir. MostBet Casino’da ücretsiz oyun, gerçek parayla bahis oynanan slot makinelerine benzer işlevsellikteki slotların demo sürümlerinde mümkündür. Aşağıda, söz konusu bahis şirketinin gerçek müşterilerinden gelen referanslar yer almaktadır.

  • Aksi takdirde, BO tüm hesapları engelleyebilir ve hesaplardaki fonları dondurabilir.
  • Oyuncular bahis oynayabilir ve çevrimiçi bir kumarhanede şans veya beceri oyunları oynayarak potansiyel olarak para kazanabilirler.
  • Yeni hesaba giriş yaptıktan hemen sonra sitede ya da uygulamada başlatılacak bir zamanlayıcı yönlendirmeye yardımcı olacaktır.
  • Çevrimiçi spor bahisleriyle ilgilenen oyuncular Mostbet sitesine göz atmalıdır.
  • Maç öncesi bahis seçeneğimiz ile maç başlamadan önce kendi Mostbet tahmininizi yaparak bahis oynayabilirsiniz, canlı bahis seçeneğimiz ise maç devam ederken bahis yapmanıza olanak sağlar.

Türkiye’nin saygın ismi Mostbet, sürükleyici bir casino deneyimi sunuyor. Mevzuatlar nedeniyle erişim sıkıntısı yaşansa da platform, alternatif yöntemlerle kesintisiz hizmet sağlıyor. Hızla adapte olarak Türk kullanıcılarına geniş bahis ve oyun repertuarına kesintisiz erişim sağlıyor.

Mostbet Spor Bahisleri Borsası

Bu çevrim şartları, bahis severlerin added bonus miktarının belirli bir katını belirli bahis oranlarında oynamalarını zorunlu kılar. Dolayısıyla, kullanıcıların bonus teklifini kabul etmeden önce ilgili şartlar ve koşulları dikkatlice okumaları ve anlamaları çok önemlidir. Mostbet ayrıca oyunculara özel bonuslara ve promosyonlara erişim sağlayan bir VIP programına sahiptir. VIP olmak için bahis oynayarak yeterli sadakat puanı biriktirmeniz gerekir. Daha sonra mobil cihazınızın rahatlığıyla hesabınıza giriş yapabilir, bahis oynayabilir, canlı skorları ve sonuçları görüntüleyebilir ve bu kumarhanenin sunduğu diğer özelliklere erişebilirsiniz. Bu, uygulamayı indirmekten kaçınmak isteyen veya uygulamayla uyumlu olmayan bir cihaz kullanan kullanıcılar için kullanışlı bir alternatiftir.

  • Promosyon kodları, çevrimiçi bahis deneyiminizden daha fazlasını elde etmenin mükemmel bir yoludur.
  • Ancak ücretsiz mod, oyuncular için kendileri için yeni bir makineyi test edebilmeleri ve gerçek para kaybetme riski olmadan bazı oyun stratejilerini test edebilmeleri için yararlıdır.
  • Sayfanın alt kısmında, kullanıcının destek hizmetiyle iletişim kurmak için kişilere erişimi vardır.
  • Mostbet’te Powerball ve Super Millions gibi çeşitli piyango oyunları arasından seçim yapabilirsiniz.
  • Bu incelemeden, Mostbet (mostbet. com) dürüst bir bahis şirketi olduğu sonucuna varabiliriz.

İşbirliği yaptığımız sektör lideri oyun sağlayıcıları, mükemmeliyetimize olan bağlılığımızı daha da güçlendirmektedir. Sizin hassas bilgilerinizi korumak için, güçlü şifreleme teknolojilerinden güvenli ödeme yöntemlerine kadar her detayı titizlikle düşünüyoruz. Mostbet Internet casino Türkiye’de, oyunun tadını çıkarırken güvende olduğunuzun bilinciyle keyfinize odaklanabilirsiniz. Bu teklif, Mostbet platformunda bahis yapmaya başlamanız için harika bir fırsat sunuyor. Bonus kuralları hakkında daha fazla bilgi almak için lütfen buraya tıklayın.

Android’de Mostbet Tr Mobil Uygulamasını (apk) Indirin

Bu kodlar, özel günlerde ya da belirli etkinlikler sırasında dağıtılabilir ve kullanıcının daha fazla kazanmasına olanak tanır. Bonus ve promosyon kodlarından yararlanmak için çevrim şartları ve kullanım koşulları gibi önemli detayları gözden kaçırmamak esastır. Kullanıcıların bu fırsatlardan en iyi şekilde yararlanabilmesi için, güncel kuralları takip etmesi ve bu bonusları akıllıca kullanması önerilmektedir.

  • Tether, Ripple, BitcoinCash, Dash, Dogecoin, Huobi Token, HUSD, Online casino Coin, TRON, WUJUD, Axie Infinity, Binance USD, DAI, Dexsport, TrueUSD, USD Coin ve ZChash.
  • Ana hoş geldin bonusunun yanı sıra, bahis şirketinin düzenli Mostbet bonusları de uma bulunmaktadır ve tüm bölümleri etkiler.
  • Ancak, APK dosyalarını resmi olmayan web sitelerinden indirmek tehlikeli olabilir ve akıllı telefonunuzu virüs ve kötü amaçlı yazılım riski altına sokabilir.
  • Mostbet, spor bahisleri, canlı bahisler, casino oyunları ve çok daha fazlası dahil olmak üzere çok çeşitli bahis seçenekleri sunar.
  • Bu, daha sürükleyici ve otantik bir oyun deneyimi sunar, çünkü oyuncular tıpkı kara tabanlı bir kumarhanede olduğu gibi krupiyeyi görebilir ve onunla etkileşime girebilir.

Böyle bir bahsin tam miktarı, bahisçi şirketinin internet sitesindeki promosyonun açıklamasında bulunabilir. Kayıt sırasında yapılmadıysa, belirtilen telefon numarasını ve e-postayı da teyit etmeniz gerekir. Bu, hoşgeldin bonusu veya casino oyunu almak ve ödeme talebinde bulunmak için ön koşuldur. Mostbet resmi net sitesinin sunduğu avantajlar, Mostbet Türkiye adresi için de geçerlidir. Bu avantajlar saymakla bitmez, ancak en önemlisi kolay empieza hızlı bir şekilde para kazandırmasıdır. Bu, özel bir yetenek gerektirmez ve herkes tarafından kullanılabilir.

Leave a Comment

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

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