/** * 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 Bonusları Türkiye Nasıl Alınır Ve Bahis 2500 Tl - V&K Cleaning
Quick Contact

Quick Contact

07895 725670

Mostbet Bonusları Türkiye Nasıl Alınır Ve Bahis 2500 Tl

Hesabınıza Ve Kayıt Ekranına Erişin

Mostbet TR şirketi meşhur futbol maçlarına (1500’den fazla pazar) empieza 35’ten fazla başka disipline çok çeşitli spor bahisleri sunar. Bahisçinin web sitesine kaydolmak sadece birkaç dakika sürerken, yeni kullanıcılar kumarhane için 9000 TRY + 250 FS’ye kadar cömert ilk afin de yatırma bonusları alırlar. Bahis şirketi, ışık hızında ve çok duyarlı bir mobil uygulama ve website sitesi içeren son teknoloji teknik altyapısından büyük memnuniyet duymaktadır.

  • Bir ödeme yöntemi seçerken, para çekme kid tarihlerini görebilirsiniz.
  • Tether, Ripple, BitcoinCash, Dash, Dogecoin, Huobi Token, HUSD, Gambling establishment Coin, TRON, NYATA, Axie Infinity, Binance USD, DAI, Dexsport, TrueUSD, USD Gold coin ve ZChash.
  • Pratik olarak choix kaynaktan farklı değildir – fark, yalnızca ofisin işlevselliğini küçük bir ekranda kullanmayı kolaylaştıran daha kompakt bir düğme ve bölüm düzenlemesinde yatmaktadır.
  • Ardından, kullanıcı cep telefonunda onay görevi gören özel bir kod alır.
  • IOS tabanlı cihazlar için mobil programı indirme işlemi pratik olarak farklı değildir.

Mostbet-də, hər bir istifadəçi, sitenin veb saytına daxil olaraq hər hansı bir futbol liqasına qatıla bilər və həmçinin sosial multimedia hesablarında hər kəs ilə əlaqə saxlaya bilər. Mostbet-də, müştərilər, özü üçün ən yaxşı və çox məsafədə olan oyunları seçə bilər və beləliklə, öz ayrı kazancına sahib olmaq üçün. Türkiye’deki birçok online kazino, oyuncularına çeşitli bonuslar sunar.

Mostbet Güvenilir Una?

Mostbet, Türk oyuncuların ve bahisçilerin ihtiyaçlarını karşılamak için tasarlanmış kapsamlı müşteri desteğiyle ünlüdür. Platform, kullanıcıların yardıma kolayca erişebilme lerini sağlayarak sorunsuz bir oyun ve bahis deneyimi sunar.” “[newline]Bu özel poker alanı, kullanıcı dostu arayüzü ile ünlüdür empieza hem acemilik ankle rehab ebook de kıdemliler için gezinmeyi ve oyunu zahmetsiz hale getirir. Topluluk yönü canlıdır, genel poker deneyimini geliştiren etkileşimleri empieza turnuvaları teşvik eder. Mostbet’in kapsamlı ve ilgi çekici bir poker odası sunma taahhüdü, oyun çeşitliliğinden müşteri desteğine kadar her açıdan belirgindir. Platformun kullanıcı arayüzü, geniş bir oyun yelpazesini kolayca erişilebilir hale getirerek sorunsuz gezinme sağlamak için geliştirilmiştir GeocacheLand.com.

Sorumlu oyun oynamaya benim kadar değer veren bir platform kullandığımı bilmek güven verici. Bu tablo, Mostbet’in” “farklı platformlardaki indirme empieza kurulum sürecini özetlemekte ve benzersiz özelliklerini ve avantajlarını vurgulamaktadır. Mostbet Casino’da, her spinin muazzam ödüllerle sonuçlanabileceği muhteşem bir oyun deneyimine hazır olun. Başarılarınızı kutlama, heyecanı kucaklama ve çeşitliliğin tadını çıkarma şansından yararlanın. IOS ve Android için Mostbet uygulamaları aracılığıyla kayıt olduğunuzda ag bonus alabileceğinizi unutmayın.

Destek Kanalları:

Kayıt olduktan sonra, giriş yapabilir ve bahis oynamaya başlayabilirsiniz. Günün the girl saati yardım sayfasında yer alan Mostbet Canlı Yardım bölümünden destek alabilirsiniz. Ayrıca [email protected] mail adresinden Mostbet Müşteri Hizmetleri ile irtibat kurarak soru, görüş ve taleplerinizi iletebilirsiniz. Mostbet Destek ve Canlı Yardım sayfasında ayrıca site içerisinde tüm aktiviteleriniz için bir soru bankası bulunmaktadır. Tüm soru empieza cevaplar, merak ettiğiniz size soruların yanıtlarını verecektir.

Pratik olarak spicilège kaynaktan farklı değildir – fark, yalnızca ofisin işlevselliğini küçük bir ekranda kullanmayı kolaylaştıran daha kompakt bir düğme ve bölüm düzenlemesinde yatmaktadır. Mostbet bahisçinin ofisinden gelen bonuslar bununla sınırlı değildir. Tüm detaylı bilgileri öğrenmek için promosyonların yer aldığı bölümümüze gidin. Ayrıca, tüm düzenli kullanıcıların” “bahisçinin web sitesindeki faaliyetleri için özel teklifler almalarını sağlayan sadakat programının şartlarını okumayı unutmayı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. Giriş olarak kayıt sırasında belirtilen telefon numarasını veya e-posta adresini kullanabilirsiniz.

Aylin’in Geri Bildirimi

En hızlı para çekme zaman dilimleri genellikle e-cüzdanlar tarafından sağlanır ve bunlar parayı dakikalar kadar kısa bir sürede veya 24 saate kadar işleyebilir. Buna karşılık, banka havaleleri” “ve kredi/banka kartı işlemleri üç iş gününe kadar sürebilir. Pek çok bahis şirketi kendilerini kayıt bonuslarıyla sınırlandırıyor, ancak neyse ki Mostbet Türkiye bahis şirketi bunlardan biri değil. Karşılama ödülünü yatırdıktan sonra, oyuncu bir dizi çekiliş, görev empieza benzersiz teklifler açar. Güncel promosyonları your ex zaman Mostbet sah web sitesinin spicilège sayfasındaki ilgili bölümde bulabilirsiniz TR. Bahis, sanal bahis ve spor bahislerinin yer aldığı Mostbet sitesinde, canlı bahis bölümü harika fırsatlar sunuyor.

  • Mostbet-27 On line casino, slotlardan kart ve masa oyunlarına kadar çok çeşitli popüler casino oyunları sunar.
  • Bahis, sanal bahis ve spor bahislerinin yer aldığı Mostbet sitesinde, canlı bahis bölümü harika fırsatlar sunuyor.
  • Mostbet sitesindeki tüm bonuslar ve promosyonlar hakkında TR, okumaya devam et.
  • Oyuncular, sıkı düzenleyici gerekliliklere uygun olarak işletilen platformda güvenli bir atmosferde etkileşime girebilirler.
  • Mostbet bahis borsası Türkiye, karşıt görüşlere sahip kişileri eşleştirir, para empieza bahis oranlarını yönetir.

Uygulamayı güncellemek, uygulamayı açtığınızda gelen geliştiricilerin isteği üzerine zaman zaman yürütülen bir süreçtir. Mostbet indir iOS veya Android uygulamalarında bunu hemen yapamıyorsanız, bu işlemi erteleyebilirsiniz ancak güncelleme tamamlanana kadar programı the woman açtığınızda bir hatırlatıcı açılır. Bu süre boyunca güncelleme düğmesi, uygulamanın ana menüsünde olacak – bakiyenin görüntülendiği tablonun altında. Mostbet TR bahisçi ofisi, taşınabilir cihazlarda oynamak için sitenin mobil sürümünü veya” “Android ve iOS için Mostbet App kullanma olanağına sahiptir.

Çevrimiçi Spor Bahisleri

Oyunları lisanslıdır, finansal işlemleri hızlı ve sorunsuzdur. Mostbet Lisans Durumu için lisans kontrol siteleri aracılığı ile gerekli kontrolleri yapabilirsiniz. Mostbet, sağlam bir alt yapıya sahip oyun grubu empieza hızlı müşteri destek birimi ile hizmet vermektedir.

  • Güvenilirlik, çeşitlilik empieza kullanıcı odaklı özellikleri harmanlayan güçlü platformu sayesinde Mostbet TR, Türk spor bahisleri ve casino oyunu hayranları için en iyi seçenek olarak öne çıkıyor.
  • Mostbet ’in en işlek ve aktif bölümlerinden biri olan Black jack kategorisine, ana sayfada” “yer alan canlı online casino linkinden ulaşabilirsiniz.
  • Yara yatırılırken ve kazanılan pra çekilirken komisyonu alınmıyor.

Genellikle bu durumda cevap birkaç dakika içinde elde” “edilebilir. Para yatırmak için mevcut minimum ve maksimum tutarlar doğrudan seçilen ödeme sistemine bağlıdır. Güvenilir ödemeler ve geniş oyun yelpazesi, Mostbet’e geri dönmemi sağlayan şeylerdir. Adil oyun ve şeffaflığa olan bağlılıkları, hizmetlerinin her alanında açıkça görülüyor.

Ios Mostbet Uygulaması Nasıl Indirilir?

Oyunculardan, minimum pra çekme tutarları ve işlem süreleri gibi unsurları dikkate alarak gereksinimlerini en iyi karşılayan seçeneği seçmeleri istenir. Her işlemin güvenliğine Mostbet TR tarafından birinci öncelik verilir ve kazancınızın seçtiğiniz hesaba güvenli bir şekilde aktarılması garanti edilir. Mostbet, spor kumarının dijital alanında bir dev olarak ortaya çıkıyor ve meraklılar için geniş bir seçenek yelpazesi sunuyor. Bu platform, kullanıcıların çok sayıda atletik yarışma ve gösteri arasında geçişini kolaylaştırarak akıcı bir yolculuk sağlar. Bahis konusunda ankle rehab ebook acemilik hem para uzmanları barındıracak şekilde tasarlanan Mostbet, Türkiye’de spor kumarına katılmaya meyilli bireyler için mükemmel bir seçim olarak öne çıkıyor. Mostbet bonus köşesinde bir birinden çılgın bonus kampanyaları sizleri bekliyor!

  • Uygulamada Türkçe de dahil olmak üzere çok çeşitli diller bulunmaktadır.
  • Ayrıca Mostbet, bahis keyfini artırmak için çeşitli promosyonlar ve teklifler sunmaktadır.
  • Mostbet, mobil cihazlarla uyumluluğu koruyarak hareket halindeyken sorunsuz bir bahis deneyimi sağlar.
  • Bahislerden sobre az birinin kaybettiği ortaya çıkarsa, tüm ekspres de kaybeder.
  • Mostbet Casino’da, your ex spinin muazzam ödüllerle sonuçlanabileceği muhteşem bir oyun deneyimine hazır olun.

Yerel ödeme yöntemleri, kullanıcı dostu arayüzü ve cazip bonuslarıyla Mostbet, Türkiye’deki rekabetçi bahis piyasasında öne çıkıyor. Mostbet, Türk oyunculara spor bahisleri ve online on line casino oyunları oynama imkanı sunan, uluslararası har drabbats bir bahis platformudur. Şirket, 2009 yılında kurulmuş olup, Curaçao tarafından verilen uluslararası bir lisans altında faaliyet göstermektedir.

Mostbet Promosyon Kodu

Oyuncular kazanma şanslarını en üst düzeye çıkarmak için vurabilir, durabilir, ikiye katlayabilir ve çiftleri bölebilirler. Zaten resmi siteye gittiyseniz, sağ üstteki ilgili düğmeyi tıklayın. Sitenin mobil versiyonundan, IOS veya Android os uygulaması üzerinden empieza kişisel bilgisayar veya tabletten kayıt olabilirsiniz. Mostbet, mobil cihazlarla uyumluluğu koruyarak hareket halindeyken sorunsuz bir bahis deneyimi sağlar.

  • Mostbet Bonus Kuralları da bu bağlamda belirli şartları içermektedir.
  • Mostbet, Curaçao tarafından verilen uluslararası bir” “lisansla faaliyet göstermektedir, bu da platformun küresel düzenleyici standartlara uygun olduğunu gösterir.
  • Slotlar, kullanıcılar arasında en popüler casino oyun türüdür.
  • Mostbet indir Android için mobil uygulama yalnızca bahisçi ofisinin web sitesinden – resmi veya mobil olarak yapılabilir.
  • Performans sorunsuzdur, bu da yükleme sürelerinin kısalmasına ve kullanıcı katılımının artmasına katkıda bulunur.
  • Sitenin mobil versiyonundan, IOS veya Android uygulaması üzerinden empieza kişisel bilgisayar veya tabletten kayıt olabilirsiniz.

Mostbet giriş adresi şu an için yeni link şeklinde ayarlanmıştır. Mostbet güncel giriş adresi olarak bu adresi not really alarak ve kayıt ederek, siteye kolaylıkla giriş yapabilirsiniz. Mostbet yeni giriş adresi olarak kayıt ederseniz, Temmuz ayı içerisinde, Yasaklar ve engellemelere karşı Mostbet web sitesine rahat bir şekilde erişim sağlayabilirsiniz. Müşteri destek uzmanlarının günün 24 saati görev başında olduğu resmi web sitesinde çevrimiçi sohbet de bulunmaktadır.

Mostbet Tr’de Bonuslar

Her zaman yardımcı olmaya hazırlar ve deneyimimi sorunsuz hale getiriyorlar. Mobil uyumlulukları, istediğim zaman istediğim yerde oynayabileceğim anlamına geliyor. Platformları inanılmaz derecede güvenli ve ödemelerde hiçbir zaman sorun yaşamadım. Oyun çeşitliliği etkileyici ve tüm oyun tercihlerime hitap ediyor. Bu tavsiyeye uyarak, sorunsuz bir giriş süreci ve Mostbet’in Türk tüketiciler için özel olarak tasarlanmış kapsamlı bahis platformuna anında erişim garanti edilebilir.

  • Aviator’un özü, oyuncuların etkileşime girmesini ve anlık bahis heyecanının tadını çıkarmasını kolaylaştıran kullanıcı dostu arayüzüdür.
  • Mostbet Mobil Uygulaması, kolaylaştırılmış ve hızlı bir bahis deneyimi sağlar.
  • Bu sayede giriş sorunu ile karşılaşmadan siteye ulaşım sağlayabilirsiniz.
  • En hızlı para çekme zaman dilimleri genellikle e-cüzdanlar tarafından sağlanır ve bunlar parayı dakikalar kadar kısa bir sürede veya 24 saate kadar işleyebilir.
  • Hoş geldin teşvikleri, sadakat ödülleri ve promosyon teklifleri, Türk katılımcıların erişebileceği birçok avantaj arasında yer alıyor.

Bu bonuslar genellikle haftalık veya aylık olarak sunulur ve belirli bir oyun veya slot makinesinde oynama koşulları içerebilir. Bazı kazinolar, sadakat programlarına sahip olabilir ve bu programlar, oyuncuların daha fazla bonus ve ödül kazanmasını sağlayabilir. Evde kaldığımız dönemde on the internet kazino oyunlarına ilgi arttı ve birçok site bonuslarıyla dikkat çekmeye çalıştı.

$’dan Başlayan Para Yatırma Işlemlerinde + 250fs

Ayrıca, uygulamanın ona erişimin istikrarı ile ilgili bir avantajı vardır. Uygulamalar, ağda vurgulanmamış anonim kaynaklar aracılığıyla çalışabileceğinden, sağlayıcının bunları engellemesinin resmi veya mobil bir siteden daha zor olduğu görülmektedir. Bu avantaj, bazı ülkelerde kaynakları engellenebilecek offshore kumarhaneler ve bahisçiler için özel bir değere sahiptir.

  • Ayrıca güncel promosyonlar, arayüz dilini değiştirmek için butonlar, mobil uygulamaları indirmek ve daha fazlasını içeren bir bölüm sobre bulunmaktadır.
  • Uygun sosyal ağlara ait simgeyi seçin ve ağa giderek standard verilerinizi kullanarak oturum açın.
  • Kullanıcı güvenliğine olan bağlılığı, en son şifreleme teknolojisinin kullanımı ve yasal gerekliliklere uygunluk ile gösterilmektedir.
  • İşbirlikçi başarı, ortaklara rekabetçi komisyon yapıları, özelleştirilmiş destek empieza gerçek zamanlı analizler sağlanmasıyla sağlanır.

Mostbet-27, slotlar, masa oyunları ve canlı krupiye deneyimleri de dahil olmak üzere çok çeşitli heyecan verici oyunlar sunan bir çevrimiçi kumarhanedir. Güvenli ödeme sistemi empieza 7/24 müşteri destek ekibi ile bu online casino kısa sürede Türkiye’nin sobre güvenilir yerlerinden biri haline gelmiştir. Oyuncular gerçek parayla oynamayı seçebilir veya masalarda herhangi bir nakit riske atmadan önce becerilerini geliştirmek için demo modunu kullanabilirler.

Mostbet Casino’da Büyük Kazanmaya Hazır Olun

Bundan dolayı belli aralıklar ile giriş adresini değiştirecektir. Sizde siteye ulaşımda giriş sorunu ile karşılaşmamak için bizi takip ediniz. Avantajlı bonusların ve Mostbet Güncel Giriş Adresini bizi takip ederek anında öğrenebilirsiniz. Bu sayede giriş sorunu ile karşılaşmadan siteye ulaşım sağlayabilirsiniz. Mostbet giriş, üyelik adreslerindeki değişikleri sizlere anında duyurmaktayız. Bunların yanında Mostbet bonus vermekte empieza çekilişler düzenlemektedir.

  • Aynı şey hesap oluşturmak için de geçerlidir – zerkalo’ya kayıt olarak, resmi mostbet’te aynı kullanıcı adı ve şifre ile kendi sayfanıza erişebilirsiniz.
  • Mostbet birkaç yıldır faaliyette ve birçok müşterinin güvenini kazanmayı başardı.
  • Para çekme işlemleri, kullanılan yönteme bağlı olarak birkaç dakikadan üç iş gününe kadar sürebilir.
  • Buna ek olarak, Mostbet TR’nin sadakat programı, sadık oyunculara işleri için teşekkür etmenin bir yolu olarak özel avantajlara erişim sağlar.

Uygulama, Mostbet için geleneksel mavi-turuncu renklerde tasarlanmıştır. Programın ana menüsü sol üst köşedeki düğmeye tıklayarak açılır ve orada hem bahisçi ofisinin hizmetlerini (çizgi, live) hem para Mostbet online casino’da çok çeşitli oyunları bulabilirsiniz. Mostbet, dünyanın çoğu ülkesinde faaliyet gösteren uluslararası bir bahis şirketidir.

Mostbet’te Bahis Yapılabilecek Popüler Ligler Ve Turnuvalar

Teknoloji sayesinde, bahisçiler kolayca bahis yapabilir, canlı oyun akışını izleyebilir ve gerçek zamanlı güncellemelerle canlı bahislere katılabilirler. Buna ek olarak, Mostbet TR’nin sadakat programı, sadık oyunculara işleri için teşekkür etmenin bir yolu olarak özel avantajlara erişim sağlar. Bölgesel ödeme seçeneklerinin dahil edilmesi, özellikle Türkiye pazarına hitap etmekte empieza kullanıcıların tanınabilir bir yapı içinde finansal yönetimini kolaylaştırmaktadır. Yerelleştirilmiş stratejisi ve küresel hizmet standartları ile Mostbet TR, Türkiye’de güvenilir ve kullanıcı dostu bir bahis” “platformu olarak tanımlanmaktadır.

  • Ekranın encanto paneli, bahis oynayabileceğiniz sporların listesini içerir.
  • Mostbet tarafından sunulan geniş bahis ve kumar ürünleri yelpazesinden yararlanarak web sitesi trafiğinden gelir elde etmek için esnek bir çerçeve sunar.
  • Mostbet bahisçisi, destek servisi ile iletişim için çeşitli kanalları sağlar.
  • Mostbet olarak müşterilerimize acil olmayan sorularınız için [email protected] adresinden e-posta destek seçeneği sunuyoruz.

Programın choix ekranında, üst kısmında, promosyonlar, ikramiyeler ve turnuvalarla birlikte önemli spor etkinliklerinin duyurulduğu bir rotasyon bloğu vardır. Aşağıda durante popüler canlı etkinliklere ve çizgilere bağlantılar ve en çok aranan casino oyunlarına bağlantılar bulunmaktadır. Kullanıcılarımıza hem maç öncesi hem de oyun içi bahisler sunuyoruz.

Mostbet Promosyon Kodları Nasıl Kullanılır

MostBet girişine bu sayfadaki bağlantıları kullanmak suretiyle ulaşabilirsiniz. MostBet hesabınıza giriş yapmak için bu doğrulanmış bağlantıları kullanın. Alternatif olarak, yeni bir hesap açmak ve ardından spor bahislerine ve kumarhaneye erişmek için aynı bağlantıları kullanabilirsiniz. Evet, Mostbet’in Android os ve iOS tabanlı cihazlar için Mostbet’in resmi web sitesinden veya App Store’dan (iOS için) indirilebilen mobil uygulaması vardır.

  • Mostbet Zerkalo, kullanıcıların alışkın olduğu işlevselliği koruyan mostbet web sitesinin tam kopyasıdır.
  • Mostbet’te bir hesap açmak için, e-posta adresiniz de dahil olmak üzere kişisel bilgilerinizi vermeniz gerekecektir.
  • Mostbet Online poker oynamak için size en uygun olan canlı poker masasını seçip, bahislerinizi koyabilir ve oynayabilirsiniz.
  • Hoş” “geldin bonusunun tahakkuk ettikten hemen sonra geri çekilemeyeceği unutulmamalıdır.
  • Şifre otomatik olarak oluşturulur ve giriş olarak kullanılabilecek e-posta adresi ve telefon numarası profilde belirtilebilir.
  • Bu yazımızda mobil cihazlar için Mostbet Tr bahis ve casino yazılım ürünlerini farklı açılardan inceleyeceğiz.

Tipobet sosyal medya hesaplarını takip ederek, sitenin üyelerine özel haberlerinden ve gelişmelerinden haberdar olabilirsiniz. Şu an için farklı alternatifler bularak, canlı bahislere katılabilirsiniz. Bu masalar genelde the girl saat açık olsa da, bahis miktarları ve oyun düzeni değişebilmektedir.

Mostbet Casino Ve Canlı Casino

Yıllar geçtikçe, çevrimiçi kumar platformumuz kullanıcılar arasında mükemmel bir ün kazanmıştır. Mostbet’in müşteri destek temsilcilerine Mostbet Twitter, Telegram, Fb ve Instagram gibi popüler sosyal medya platformlarından kolayca erişilebilir.” “[newline]Mostbet Telegram kanalı, müşteri destek ekibine anında ulaşmak isteyen kullanıcılar için önerilen seçenektir. Canlı yayınlar düzenleyen onaylı canlı krupiyerlerimizle canlı casino oyunlarının heyecanını yaşayın. Mostbet. com’da müşterilerimiz, kolaylık ve esneklik sağlayan özel iOS ve Android uygulamalarının yanı sıra masaüstü ve mobil site aracılığıyla hizmetlerimize kolayca erişebilirler. Ülkenizdeki resmi web sitesine nasıl erişeceğinize ilişkin ayrıntıları içeren MostBet Giriş bilgileri. Bir ödeme yöntemi seçerken, para çekme child tarihlerini görebilirsiniz.

Hesabın the girl yenilenmesiyle, bahisçiler özel biletler alırlar empieza daha sonra sitede araba çekmek için kullanılırlar. Herkes bir arabanın sahibi olabilir, bunun için özel çaba sarf etmenize gerek yoktur. Mostbet ’in en işlek ve aktif bölümlerinden biri olan Blackjack kategorisine, ana sayfada” “yer alan canlı gambling establishment linkinden ulaşabilirsiniz. Mostbet Blackjack sayfasında 5 adet farklı Black jack seçeneğinin yanı sıra, Batum stüdyolarından canlı yayın yapan, Canlı Blackjack oyunlarına katılabilirsiniz. Blackjack masasına katılmak için, mutlaka sisteme üye girişi yapmak zorundasınız.

Mostbet Giriş Sss

Bunlar arasında klasik slotlar, modern video” “slotları, artan jackpotlu slotlar, rulet ve black jack, baccarat ve holdem poker gibi masa oyunları bulunmaktadır. Ayrıca, evden hiç çıkmadan gerçek bir kumarhanede olmanın heyecanını hissetmek fikrine sahip olanlar için canlı krupiye deneyimleri de mevcuttur. Mostbet TR’de inovasyon, daha iyi müşteri deneyimi için sürekli teknolojik geliştirmelerin arkasındaki itici güçtür. Platform, kumar heyecanını gerçekten yakalamak için canlı bahis ve gerçek zamanlı casino oyunları gibi son teknoloji unsurları entegre ediyor.

  • Bu bölümde yaşadığınız Mostbet tecrübe ve deneyimlerinizi bizlerle paylaşmanızı sana ediyoruz.
  • Önde gelen spor bahis platformlarından biri olmaktan ve yüksek kaliteli hizmetlerimiz ve kullanıcı dostu arayüzümüzle tanınmaktan gurur duyuyoruz.
  • Mostbet’in olağanüstü müşteri desteği sağlama konusundaki kararlılığı, oyuncuların” “empieza bahisçilerin sorunsuz bir deneyim yaşamalarını sağlayan çok kanallı yaklaşımında açıkça görülmektedir.
  • Sadakat programı, bir sonraki statüye ulaşmak için seviyeler ve koşullar hakkında daha fazla ayrıntı sitenin ilgili bölümünde bulunabilir.
  • Blackjack’i gerçek parayla veya trial modunda oynayabilirsiniz.
  • Bu süre boyunca güncelleme düğmesi, uygulamanın ana menüsünde olacak – bakiyenin görüntülendiği tablonun altında.

Futbol ayrıca genç takımlar ve amatör ligler de dahil olmak üzere çeşitli seviyelerde temsil edilmektedir. Mostbet bahis şirketi bu turnuvaların çoğunda bahisleri kabul eder. Bakara, basit ama heyecan verici bir oyun deneyimi sunan popüler bir masa oyunudur. Oyuncular Oyuncu, Bankacı veya Beraberlik ellerine bahis oynayabilir empieza dağıtıcı tarafından ikişer kart dağıtılır. Hangi eli seçtiklerine bağlı olarak, oyuncular kazanmak için toplam dokuz veya ona durante yakın bir un oluşturmaya çalışmalıdır. Kazanılan fonları, Mostbet pra çekme kurallarına göre, kullanıcı para yatırdığı yöntemle çekebilir.

Bahis Türleri Ve Oran Formatı

Bu bonuslar arasında kayıt bonusları, para yatırma bonusları, ücretsiz çevirmeler ve nakit pra iadesi bulunmaktadır. Bu teşvikler, paranızı artırmak veya kumarhanede oynamaktan daha fazla faydalanmak için kullanılabilir. Mostbet bahisçinin ofisi resmi yerel lisansı olmadığından,” “farklı yerlerden gelen kullanıcılar tarafından ona erişim sınırlı olabilir. Sadece arayüzün değil, aynı zamanda tüm işlevselliğin de tekrarlandığı spicilège sitenin tam bir kopyasıdır.

Mostbet’teki online canlı bahis oranlarının oyun sırasında değiştiği unutulmamalıdır. Her şey katılımcıların ne tür performans gösterdiğine bağlıdır. Bu nedenle, bu tür bahisleri yapmadan önce, dinamikleri dikkatlice okumak önemlidir. Ekranın terrain paneli, bahis oynayabileceğiniz sporların listesini içerir.

Leave a Comment

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

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