/** * 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 ); } Kayıt Ve Para Yatırma Için Pin Up Internet Casino Bonuslar - V&K Cleaning
Quick Contact

Quick Contact

07895 725670

Kayıt Ve Para Yatırma Için Pin Up Internet Casino Bonuslar

Kayıt Ve Para Yatırma Için Pin Up Internet Casino Bonusları

Online Casino Pin Number Up Turkey Kayıt Olmadan Ücretsiz Oyna Slot Makinelerinde Demo

Content

Platformumuz, tüm işlemlerin güvenli ve emniyetli olmasını sağlamak için en son şifreleme teknolojisini kullanır. USD, EUR, GBP, AUD, CAD empieza daha fazlası dahil olmak üzere çeşitli para birimlerinde para çekebilirsiniz. Büyük hayran kitlesiyle kriket bahis hizmeti, birçok insan için oyunun önemli bir parçası haline geldi. Pin-Up On line casino, acemiler ve deneyimli bahisçiler için mükemmel kriket bahis seçenekleri sunar.

  • Bir dizüstü bilgisayar dışında yolda oynayamazsınız. Güncellemeler gecikebilir. Bazı bonuslar için bahisler çok yüksektir.
  • Kullanıcı dostu tasarımı sayesinde Pin-Up, ister Amerikan ister Avrupa ruletini tercih edin, aradığınız Rulet oyununu bulmanızı kolaylaştırır.
  • Pin Up Casino’da bonus almak için önce bir on line casino hesabına kaydolmalısınız.
  • Scatterlar ve genişleyen wild sembolleri ödemelerinizi daha da artırmanıza yardımcı olabilir.
  • Bir mevduat hesabından bir ay içinde çekilebilecek maksimum tutar 45000$’ı geçemez.

Doğrulama işlemini tamamlamamış misafirler için maksimum pra çekme limiti fifty-five USD’dir. Kazanan fonların çekilmesine ilişkin maksimum limitleri artırmak için doğrulama prosedürünü geçmek gerekir. Pin Up kumarhanesine kaydolan tüm ziyaretçiler için, kullanıcının VIP statüsünden bağımsız olarak, para transferi için aynı kurallar ve limitler vardır. Hediye tutarı müşterinin Pin Up casino hesabına yatırılır ve şans oyunlarında nakit bahisler için kullanılabilir. Kumarhaneler çevrimiçi dolandırıcıların ana hedeflerinden biri olduğundan, yalnızca resmi sitede oynamalısınız. Basit empieza net bir bağlantıya sahiptir ve lisanslar ve ödeme sistemleri hakkında tüm bilgilere sahiptir.

Türk Oyuncular Için Hangi Ödeme Yöntemleri Mevcut?

Uygulama benzersiz bir tasarıma” “sahiptir, hızlı çalışır ve tüm engellemeleri atlamanıza izin verir. Geliştiricilere göre, Pin-Up internet casino desteği 7’ye twenty four esasına göre çalışmaktadır. Herkes kulübün personeliyle iletişime geçebilir ve tüm sorularınızı yanıtlamaktan mutluluk duyarlar. Kulübün teknik desteğiyle iletişime geçmek ve internet site hakkında tavsiye almak için çevrimiçi kumarhane postasına yazın veya yardım hattını arayın http://pin-up-online-casino.com/.

  • Pin-Up Online casino, oyun deneyiminizi artırmak için heyecan verici bonuslar ve promosyonlar sunar.
  • Güvenilir on line casino derecemize güvenerek, kişisel ve finansal bilgilerinizin korunduğunu bilerek endişesiz bir oyun deneyiminin tadını çıkarabilirsiniz.
  • Pin Up Türkiye müşterilerini önemsiyor ve onların mümkün olduğunca rahat hissetmelerini istiyor.
  • Gerçek parayla oynamaya başladığınızda emin olmak istediğiniz en önemli şey oyun sürecinin adil olmasıdır.

Kaydınızı tamamladığınızda, yüzlerce farklı bahis seçeneği ve çeşitli on line casino oyunlarına anında erişim elde edersiniz. Tüm oyunları sorunsuz ve hızlı bir şekilde oynayabilir, doğru tahminler ve stratejik hamlelerle büyük kazançlar elde edebilirsiniz. Mobil web sitesi, ana platformdaki tüm özelliklere empieza işlevlere sahip w tamtym miejscu bir deneyim sunar.

Pınup Casino Tr – Büyük Bonuslar Ve Promosyonlar

Pin Up On line casino, Türkiye’deki en iyi online casino oyunlarıyla heyecanı doruklarda yaşamanızı sağlar. Pin Upwards Casino’da, en popüler slot makinelerinden canlı krupiyeler eşliğinde oynanan klasik masa oyunlarına kadar geniş bir seçenek sizi bekliyor. Pin Up Casino’da depozitosuz bonuslar için bahis kuralları, depozitolu bonuslar için olan kurallara benzer ya da tamamen aynıdır. Bahis oynadıktan sonra, bonusu çekmek için slotlarda bahis yapmak veya para yatırmak şart olabilir. Birçok kumarhanenin bonus hesabına depozito tahakkuk ettirmediğini, ancak ana hesaba tahakkuk ettirmediğini unutmayın, bu nedenle bundan elde edilen kazançlar oldukça sorunludur.

  • Aşağıda her kategorinin bir açıklamasını ve durante ünlü oyunların bir listesini bulacaksınız.
  • Ayrıca kumarhanenin resmi web sitesinin ana sayfasında, kulüp kullanıcılarının hangi makinelerde en büyük kazancı elde ettiğini görebilirsiniz.
  • Doğrulama işlemini tamamlamamış misafirler için maksimum afin de çekme limiti fifty-five USD’dir.
  • Düzinelerce şirketin portföyü arasından seçim yapabileceğiniz çok sayıda farklı türde kumar oyunumuz var.
  • Böylece tek bir programdan durante sevdiğiniz disiplini seçerek spor üzerine olduk?a kolay bir ?ekilde bahis oynayabilirsiniz.
  • Üyeleri, Pin Up online kumar kulübü operatöründen cömert bonuslar (depozitosuz bonuslar dahil) ve güzel hediyeler için durante son promosyon kodlarına ve kuponlara ilk erişenlerdir.

Türk oyuncular Teen Patti, Rozar Bahar, Rummy ve Bollywood temalı slotlar gibi oyunların tadını çıkarıyor. Grafik tasarımı ve ses efektleri etkileyiciydi ve oyunları oynarken çok eğlendim. Ayrıca, hareket halindeyken oynamayı kolaylaştıran bir mobil uygulama weil sunuyorlar.

Spor Oyunları

Canlı online casino kataloğundan bir oyun seçin, üzerine tıklayın ve oyun saniyeler içinde yüklenecektir. Herhangi bir yazılım indirmenize gerek yoktur, canlı casino mobil cihazlar da dahil olmak üzere birden fazla platformda çalışır. Canlı oyunlar arasında Baccarat, Poker, Rulet, Bakara, Keno ve Piyango bulunmaktadır. Bu kategori, çeşitli temel türlerdeki rulet, poker, black jack ve bakara gibi en popüler online casino oyunlarını içerir. Blackjack Lucky Seves, Karayip Pokeri, Super several veya Texas Hold’em. Bonus, yeni kayıt olan ve afin de yatıran yeni başlayanlar için tasarlanmıştır.

  • Online casino Flag Up’ın bir değil, mobil cihazlar empieza kişisel bilgisayarlar için ücretsiz olarak tasarlanmış birkaç uygulama sunması dikkat çekicidir.
  • Herhangi bir sorunuz veya sorununuz olsa fiel, ekibimiz her zaman yardımcı olmaya hazırdır..
  • PinUp kulübü misafirleri, cazip promosyon programından yararlanarak, resmi online casino web sitesine davet edilen müşterilerden kesinti alabilecekler.
  • Pin Up Casino Hoş Geldin Bonusu, çevrimiçi oyuncuların oyun deneyimlerinden en faydal? şekilde yararlanmaları için harika bir fırsattır.

Yardım masası hizmeti, kayıt ve bahis ödülleri, nakit giriş ve çıkış için veya kişisel bir hesabı bağımsız olarak kaydedemediğinizde iletişime geçmek içindir. Teknik destek sitesi, oyuncuların tüm sorularıyla günün her saati kesintisiz olarak çalışır. Çevrimiçi kumar kulübü Pin Upwards kulübünün sitesinde para yatırma bonusu almak ve bahis oynamak ilk bakışta göründüğü kadar zor değildir. Öncelikle, oyuncunun operatörün resmi sitesine kaydolması gerekir, bu da 5 dakika sürecektir.

Hızlı Cevaplar: Pin-up Sss

Kullanıcıların ona gitmesi empieza böylece bir hesap oluşturulmasını onaylaması gerekir. Daha sonra giriş yapabilir ve bonusu özel bir ofiste alabilirsiniz. Oyuncular, bahis lobisinde doğru ücretsiz tahminler yapabilir empieza turnuvalara katılmak için slot makineleri için ücretsiz dönüşler yapabilirler. Ancak ücretsiz oyunlara güvenerek, yalnızca geleneksel Pin Up slot machine game makinelerinin demo sürümlerini kullanmak en iyisidir. PinUp ana sayfasında Android sürümü ve iPhone sürümü için bir bağlantı bulacaksınız.

  • Bu harika hoş geldin bonusu ile oyun deneyiminizden en ba?ar?l? şekilde yararlanacak, ayrıca geniş bir oyun yelpazesine erişebileceksiniz.
  • Ancak, yorumları kendiniz okuyabilirsiniz, ancak tam teşekküllü bir gelir elde etmek için bahis konusunu incelemeniz empieza deneyim kazanmanız gerektiğini unutmayın.
  • Ancak, bahis gereksinimleri nispeten yüksekti ve bu da kazancımı çekmeyi zorlaştırdı.

Pin Up Türkiye müşterilerini önemsiyor ve onların mümkün olduğunca rahat hissetmelerini istiyor. Bu nedenle, teknik destek hizmeti günün the woman saati yerinde hizmet vermektedir. Dilediğiniz zaman yardım isteyebilirsiniz; destek uzmanları hemen yanıt verecektir. Pin-Up Online casino, Türkiye’de popüler olan bir online kumarhane platformudur. Bu inceleme, Pin-Up Casino hakkında bilgilendirici ve yardımcı bir içerik sunmayı amaçlamaktadır. Oyun yolculuğunuzun tüm gücünü, sayfamızda yer alan en ba?ar?l? casino bonusları empieza teklifleri ile serbest bırakın.

Pin Up Casino Lisansı

Slot makineleri, masa oyunları ve canlı krupiyelerle oynayabileceğiniz canlı kumarhane gibi çeşitli seçenekler mevcuttur. Oyuncular, favori oyunlarını oynamak için istedikleri cihazı seçebilirler, çünkü Pin-Up Casino masaüstü bilgisayarlarda ve mobil cihazlarda da erişilebilirdir. Telefonunuza indirilen Pin Up mobil uygulamaları, slot machine game makinelerinin rahat kontrolünü sağlar. Çalışmak için gelişmiş akıllı telefonlar veya tabletler gerektirmezler. Bu tür programlar, en yaygın mobil cihaz modellerinde kararlı bir şekilde çalışır.

Mısır teması, muhteşem grafikleri empieza harika bonusları ile kaçırmak istemeyeceğiniz unutulmaz bir deneyim. Oyunda beş makara ve 3125 kazanma yolu bulunur ve oyunculara büyük kazançlar elde etmek için daha fazla şans sunar. Scatterlar ve genişleyen wild sembolleri ödemelerinizi daha da artırmanıza yardımcı olabilir. Sezgisel tasarımı sayesinde Uygulama içinde gezinmek çocuk oyuncağıdır. Pin Upward kumarhanesinde hesap açmaya yalnızca yetişkin ziyaretçilere izin verilir Bu çevrimiçi kulüpteki kayıt prosedürünü deneyimsiz en yeni başlayanlar bile gerçekleştirebilir.

Pin Up Casino Uygulamasına Nasıl Kayıt Olunur?

Pin Upwards online casino sizing piyasadaki en iyi yazılım sağlayıcıların portföyünden özenle seçilmiş some. 000’den fazla slot machine game oyununu oynama fırsatı sunuyor. Meyve slotları, Sıcak Noktalar, movie, 3D, klasik empieza standart olmayanlar va; hepsi mükemmel işçilik kalitesi, ilginç ek işlevler sunuyor empieza oynarken çok fazla heyecan sağlıyor. Örneğin Starburst, Queen regarding Fire, Magic Spinner software, Mi Mines veya Book of Buat Gods II Reloaded oyunlarını oynayın. Hem web sitemizdeki düzenli oyuncular hem para tamamen yeni kullanıcılar, bol miktarda ek fon sağlayan, uzun ve tamamen ücretsiz oyun sunan promosyonlar bulacaktır. PinUp kumarhanesine kaydolmak için önce resmi web sitesine gitmeniz, uygun alanı bulmanız ve icat edilmiş şifre ile beraber e-postanızı oraya girmeniz gerekir. Yeni oyuncular için özel bir karşılama” “bonusu sunuluyor, böylece oyununuza güçlü bir başlangıç yapabilirsiniz.

  • Android ya da iOS işletim sistemli herhangi bir mobil cihaza yükleyebilirsiniz.
  • Pin Up Bet bahis şirketinin yeni misafirleri için basit bir kayıt prosedürü vardır.
  • Spor bahisleri yapmak için ya doğrudan web sitesinde buna geçmeniz ya da aynı şeyi PC uygulamasında yapmanız gerekir.
  • Oyuncu kodu girer girmez, kimliği onaylanacak ve kumarhane yönetimi onu doğrulanmış olarak değerlendirmeye başlayacaktır.
  • Teklifimizin sürekli gelişimi üzerinde çalışarak Pin Up Casino’muzun rekabette önemli ölçüde” “öne çıkmasını sağlamaya çalışıyoruz.

Kaydolduktan sonra e-postanıza gitmeniz, oradaki e-postayı açmanız ve bağlantıya tıklamanız gerekir. Ardından profilinize girmeniz empieza cep telefonu numaranızla birlikte tüm kişisel verileri doldurmanız gerekir. PinUp Casino’da zaten açık bir hesabı olan ziyaretçilerin indirilen uygulamaya tekrar kaydolmasına gerek yoktur.

Eğlence Için Kayıt Olmadan Pin Up Ücretsiz ✅ Demo Slotlarını Oynayın

Uygulamada yeniyseniz, para için oynamak ve reward almak için kayıt olmanız gerekecektir. Bugün Pin Up casino oyun istemcisinin w tamtym miejscu sürümü hem Home windows hem de MacOS’ta çalışıyor. Aynadaki yazılım bölümüne giderseniz, oyun istemcisinin PC’niz için uygun sürümünü seçebilirsiniz.

  • Freespin durumunda, önce slotta kaydırmanız gerekir ve kazançlar bahiste geri kazanır.
  • Bununla birlikte, aniden” “kumarhanenin çalışmadığını fark ederseniz veya herhangi bir nedenle eski bağlantıya erişmeyi bırakırsanız, en yeni bir tane bulmalısınız.
  • Pin Upward online casino sizing piyasadaki en iyi yazılım sağlayıcıların portföyünden özenle seçilmiş 4. 000’den fazla slot machine oyununu oynama fırsatı sunuyor.
  • Bonus oyunları ve e-posta adresiyle kaydolma özelliği vas?tas? ile online kumar deneyiminizden daha da fazlasını elde edebilirsiniz.
  • Bu nedenle kapsamlı bir Pin-Up Casino değerlendirmesine ihtiyaç vardır.
  • Pin Up Casino giriş yaparak, heyecan dolu bahis deneyimini sobre yüksek düzeyde yaşayabilirsiniz.

Özel bir bonus olarak, operatör müşteriye nakit para ödülü, belirli miktarda freespin, depozito faizi vb. Endişelenmeyin, teşvikleri elde etme ve bahis yapma koşulları mümkün olduğunca sadıktır. Pin Up online casinonun haftalık geri ödeme bonusu, oyun kulübünün aktif kullanıcıları için harika bir çözümdür. Her hafta afin de yatırmanıza gerek kalmadan çok para kazanmanıza yardımcı olacak bir nakit hediye alabilirsiniz.

Pin Up’ı Indirin Ve Kazanılan Parayı Çekin – Şartlar Ve Limitler

Site, Curacao’dan köklü bir düzenleyici kurum olan Antillephone In. V. Pin Upward Club ayrıca bir bahis şirketi aracılığıyla ücretsiz spor bahisleri de sunmaktadır. Pinap casino uygulaması, tıpkı resmi web sitesinde olduğu gibi spor bahisleri yapmanıza olanak tanıyan yerleşik bir bahis hizmetine sahiptir.

  • Operatör, yasalar gerektirmiyorsa, kişisel müşteri verilerini yetkisiz kişilere sağlamaz.
  • Bu afin de, kulübün slot makinelerinde bahis oynamaya izin veren teşvik edici bir hediyedir.
  • Ancak, Pin Up çevrimiçi kumarhanesinde, bir sosyal ağ hesabı üzerinden yetkilendirme yaparsanız, hesabınıza daha da hızlı giriş yapabilirsiniz.
  • Sadece €0. 10 minimum amount bahis ve added bonus oyununda 50’ye kadar ücretsiz döndürme ile Fruit Cocktail kesinlikle bolca eğlence sağlayacaktır.
  • Göreviniz, uçak oyun alanını terk etmeden önce parayı nakite çevirmektir.

Sonuç olarak, depozito yok, oynamak için küçük bir miktar paradır. Etkinleştirmeden sonra, bahsi ücretsiz olarak aldığınız parayla çarpmanız gerekir. Sonuç olarak, kazancınızı çekmek ve bonusu geri kazanmak için bahis yapmanız gereken miktarı bileceksiniz. Üyeleri, Pin-up online kumar kulübü operatöründen cömert bonuslar (depozitosuz bonuslar dahil) ve güzel hediyeler için sobre son promosyon kodlarına ve kuponlara ilk erişenlerdir. Örneğin, her hafta Viber’da pra yatırma işleminde %100 için özel bir bonus kodu bulabilirsiniz. Ve Telegram kanalında 5 USD’lik depozitosuz bonusları oynayabilirsiniz.

Yeni Müşterilerin Kullanımına Sunulan Pin Up Casino Özellikleri

Piyango, Powerball ve Mega Thousands gibi geleneksel çekilişlerden anında ödüllü kazı kazan kartlarına kadar uzanmaktadır. Ve son olarak, paranızı çekme zamanı geldiğinde, Pin-Up Casino e-posta bildirimleri ile güvenli ve hızlı ödemeler sunar, böylece işlemlerinizi the woman zaman takip edebilirsiniz. Pin Up Casino yeni kullanıcıları bekliyor – kaydolun, hoş geldin bonusları alın, promosyonlara katılın, oynayın ve kazanın! Basit kuralları vardır ve çarkın dönüşünü ve topun belirli numaralı karelerde durmasını izlemenin bol miktarda heyecanını sağlar. Müşterilerin empieza kişisel verilerinin korunması en önemli noktadır ve bu çevrimiçi” “kumarhaneyi özel kılan şeydir.

Ödeme işlemleri sırasında güvenliğin sağlanması için kumarhaneler, SSL gibi güvenlik protokolleri kullanarak müşterilerin kişisel ve finansal bilgilerini korumaktadır. Ayrıca, müşterilerin ödeme işlemleri sırasında güvenli bir bağlantı kullanmaları ve güçlü şifreler oluşturmaları de uma önerilmektedir. Türkiye’deki kumarhanelerde yaygın olarak kullanılan ödeme yöntemleri arasında kredi kartı, banka havalesi, EFT, navigation cüzdanlar ve ön ödemeli kartlar bulunmaktadır.

Pin Upwards Casino Türkiye’yi Telefonunuza Veya Bilgisayarınıza Ücretsiz Indirin

Telefonunuza Pin Up uygulamasını yükleyerek dilediğiniz zaman oynayabilir, kumar sürecinin keyifli anlarını yaşayabilirsiniz. İncelemelerdeki oyuncular, Pin number Up online on line casino uygulamalarının bazı eksikliklerine dikkat çekiyor. Kumarbazlar, mobil platformların tamamen farklı ekran formlarına sahip olduğundan ve menü öğelerinin düzeninin değiştiğinden şikayet ediyor. Mobil gadget’ları de?erlendirmek suretiyle oyun hizmetine girerken gerekli seçenekleri hemen uyarlamak ve bulmak zordur. Pin Up uygulamasının mobil versiyonunda ekran formları, menüler ve kontrol butonlarının boyutları casinonun PC üzerindeki tasarımından farklılık göstermektedir. Mobil uygulamalarda, pencere tasarımı, gadget’ın grafiklerinin belirli özelliklerine uyum sağlayarak gerekli seçeneklerin” “empieza slot makinelerinin rahat kontrolünü sağlar.

  • Pin Upward kumarhanesinin mobil versiyonu – telefonunuzdan empieza sosyal ağlardan kayıt olun.
  • Sezgisel tasarımı sayesinde Uygulama içinde gezinmek çocuk oyuncağıdır.
  • Yani örneğin Pinup indir akıllı telefonunuza ve konum ne olursa olsun istediğiniz zaman slot machine game makinelerinde oynayabilirsiniz.
  • Bu oyun, saygın sağlayıcı Spribe tarafından geliştirildi ve 2019’da ortaya çıktı.
  • Örneğin, başlamadan önce belirli kriterlerin karşılanması gerektiğinden, hesabınızdan para çekmek biraz zaman alabilir.

Türkiye’den iPhone kullanan kumarbazlara gelince, bu durumda mükemmel bir jalan keluar kullanabilirsiniz. Pin Upward mobil versiya, sah web sitesinin küçük dokunmatik ekranlar için özel olarak tasarlanmış basitleştirilmiş bir formatıdır. Ancak Pin Up kazino mobil versiya online olarak mevcut olması nedeniyle akıllı telefonunuza kurulu olmasına ve yer kaplamasına gerek yoktur. Dönen makaralar ve bahis için farklı sayıda hat içeren geleneksel oyunlara ek olarak, Pin Up on-line” “online casino canlı krupiyeler ve bahis hizmetleri ile eğlence sunar. Ne yazık ki, gerçek para ile bahis yapmadan krupiyelerle ücretsiz rulet, poker, bakara, Çarkıfelek oynamak yasaktır. Yani, para yatırmadan spor disiplinlerinin sonucunu tahmin etmek işe yaramayacaktır.

Android Için Pin Upwards Bet Uygulamasını Indirin

Telefondaki uygulamanın sobre büyük avantajı, akıllı telefon her zaman elinizin altında olduğu” “için yolda oynayabilmenizdir. Aynı zamanda bilgisayardaki oyun istemcisindeki grafikler daha iyi çünkü bilgisayar telefondan daha güçlü. Seçim, bir kumarbazın genellikle kumarhaneyi hangi cihazda açtığına göre yapılmalıdır. Kumarhanenin ve oyunların tasarımı, kulübün web sitesinde olduğundan çok daha iyi. Kayıt olmak kolay. Form aracılığıyla kazançların hızlı çekilmesi. En iyi çevrimiçi kumarhanelerden birinde özel slot oyunlarımızı oynayın. Pin Upward com sitesindeki oyun koleksiyonu, kart, masa ve slot oyunları dahil olmak üzere çeşitli kategorilerde a few. 000’den fazla çevrimiçi oyun içerir.

Tüm süreç bir haftaya kadar sürebilir ancak genellikle çok daha az zaman alır. Her durumda, kayıttan hemen sonra hesabınızı doğrulamanız önerilir. Pin Upward Casino, oyuncularının bilgilerini ve işlemlerini güvence altına almak için gelişmiş şifreleme teknolojisi kullanır. Ek olarak, site lisansını korumak için düzenli güvenlik denetimlerinden geçmektedir (Curacao Government Est).

pin Up” “casino’ya Kayıt Olduktan Sonra Bonuslar Nasıl Etkinleştirilir?

Pin Up uygulamalarındaki slot makineleri, farklı mobil cihaz türlerinde daha hızlı slot machine işlemi için biraz basitleştirilmiş bir tasarıma sahiptir. PC’deki oyun istemcisi hem masaüstü hem de dizüstü bilgisayarlarda çalışır. Bugün, bu yazılım Mac OS ve House windows işletim sistemleri ile uyumludur. Mobil sürümler ayrıca akıllı telefonlarda ve tabletlerde de çalışır. Ayrıca Android os ve iOS olmak üzere iki işletim sistemini de desteklerler.

Türkler popüler sporlara bahis oynayabilir ve canlı maçları izleyebilirler. Aviator oyunu, oldukça basit kurallara ve bağımlılık yapıcı bir oynanışa sahip olduğundan özellikle yeni başlayanlar için harikadır. Dahası, Pin Up Online casino, Curacao eGaming Authority’den bir lisans almıştır, bu da sıkı güvenlik ve emniyet standartlarına bağlı olduğu anlamına gelir. Türk oyuncular kredi/banka kartları, Paytm, PhonePe gibi e-cüzdanlar ve banka havaleleri dahil olmak üzere çeşitli ödeme yöntemlerini kullanabilirler. Pin-Up Casino yönetiminin 7/24 müşteri desteği sunmaması” “beni hayal kırıklığına uğrattı. Uluslararası bir oyuncu olarak, canlı sohbet desteğinin belirli saatlerde kullanılamamasını rahatsız edici buldum.

Pin Upwards Casino Uygulamalarının Duyarlı Tasarımı

Casino profilinizi sosyal medya hesabınıza bağlayarak, feed’deki tüm arkadaşlarınızı bu konuda bilgilendirmeyeceğinizi belirtmek gerekir. Seçilen sosyal ağın simgesine tıklayarak, verilere erişime izin vermeniz gerekecek empieza ardından Pin Upwards kumarhanesinin kişisel hesabına yönlendirileceksiniz. Pin Upwards Casino’ya giriş yapmak için web sitesindeki giriş düğmesini kullanmanız yeterlidir. Pin Upwards Casino, sürekli güncellenen yeni giriş adreslerini sosyal medyada duyurur.

Pin Up on-line kumarhanesindeki en iyi slot makineleri, Android os ve iOS için mobil sürümde çok fazla zorluk çekmeden bulunabilir. Oyun kulübü yalnızca önde gelen sağlayıcıların modellerini kullanır ve en önemlisi cihazları lisans altına alır. Yani, kumarbazlar kesinlikle geri dönüşler ve düzenli kazançlarla ilgili herhangi bir sorun yaşamayacaklardır. Pin Up Gambling Membership, herkesin Android ve iOS için bir mobil uygulamayı denemesini sağlar. Resmi web sitesinin yanı sıra Play Market” “veya App Store’dan ücretsiz olarak indirebilirsiniz.

Pin Up Türkiye Hakkında

Örneğin, konuklar VK, Facebook veya Yahoo hesapları aracılığıyla bir hesabı etkinleştirebilecekler. Tıpkı bir kumarhanede olduğu gibi, bir bahis şirketinin tam olarak resmi siteden oynaması çok önemlidir. Nasıl bulacağınızı bilmiyorsanız, sobre kolay yol Pin-up Casino’nun resmi sayfasına gitmektir. Sadece mevcut olan herhangi bir akıllı telefon ya da tablet ile mobil platformumuza erişmeniz yeterlidir.

  • Pin Upward uygulamasının mobil versiyonunda ekran formları, menüler ve kontrol butonlarının boyutları casinonun COMPUTER üzerindeki tasarımından farklılık göstermektedir.
  • Futbol, basketbol ve tenis gibi popüler sporların yanı sıra futsal empieza hentbol gibi niş sporları da kapsıyorlar.
  • Belirtildiği gibi Pinup casino, Türkiye’den gelen müşterilerin kendilerini rahat hissetmeleri ve oyun sürecinden tam anlamıyla keyif alabilmeleri için tüm koşulları yaratmıştır.
  • Ayrıca, Türkiye’den kullanıcılar için özel promosyon kodu” “mevcut olduğunu hatırlatmak isteriz.
  • Bu nedenle yönetim, Android akıllı telefonlar ve iPhone’lar için bir mobil sürüm başlattı.

Demo slotları hem oynamayı yeni öğrenen yeni oyuncular hem para deneyimli kullanıcılar arasında popülerdir. İkincisi, demonstration modu sırasında farklı kazanma stratejilerini test etmek, makineyi ödeme, oynaklık vb. Ayrıca kumarhanenin resmi web sitesinin ana sayfasında, kulüp kullanıcılarının hangi makinelerde en büyük kazancı elde ettiğini görebilirsiniz. Bu tablo sayesinde online online casino oyunları ile tanışmaya başlamak için hangi modellerin kullanılması gerektiğini anlamak kolaydır. Dahası, Pin Up Casino yeni oyuncuları cezbetmek için cömert bonuslar ve promosyonlar sunar.

Leave a Comment

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

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