true, 'open_cart_modal_immediately_after_add_to_cart' => true, 'open_cart_modal_after_click_on_view_cart' => false, 'enable_shopping_meter' => false, 'customer_shopping_meter_threshold' => 1000, 'include_discount_amount_in_threshold' => false, 'customer_shopping_meter_pre_threshold_label' => '', 'customer_shopping_meter_post_threshold_label' => '', 'load_styles_from_plugin' => true, // Floating Cart Toggle Button Options. 'display_cart_modal_toggle_button' => '1', 'hide_modal_toggle_button_on_empty_cart' => false, 'cart_modal_toggle_button_display_position' => 'bottom-right', 'display_cart_items_number_badge' => '1', 'cart_items_number_badge_position' => 'top-left', 'cart_badge_items_total_count' => 'total_products', 'cart_modal_toggle_button_icon' => 'icon_1', 'toggle_button_badge_width' => 23, 'toggle_button_badge_font_size' => 13, 'toggle_button_badge_background_color' => '', 'toggle_button_badge_on_hover_background_color' => '', 'toggle_button_badge_label_color' => '', 'toggle_button_label_color' => '', 'toggle_button_label_on_hover_color' => '', 'toggle_button_background_color' => '', 'toggle_button_border_color' => '', 'toggle_button_on_hover_label_color' => '', 'toggle_button_on_hover_background_color' => '', 'toggle_button_on_hover_border_color' => '', 'cart_modal_toggle_button_width' => 60, 'cart_modal_toggle_button_border_radius' => 5, 'cart_modal_toggle_button_icon_font_size' => 20, 'cart_modal_toggle_button_horizontal_offset' => 100, 'cart_modal_toggle_button_vertical_offset' => 100, // Toast notification options. 'display_toast_notification' => true, 'toast_notification_display_position' => 'top-right', 'added_to_cart_notification_text' => __( '{product_name} has been added to cart.', 'addonify-floating-cart' ), 'close_notification_after_time' => 5, 'display_close_notification_button' => false, 'display_show_cart_button' => false, 'show_cart_button_label' => __( 'Show Cart', 'addonify-floating-cart' ), 'toast_notification_background_color' => '', 'toast_notification_text_color' => '', 'toast_notification_icon_color' => '', 'toast_notification_icon_bg_color' => '', 'toast_notification_button_background_color' => '', 'toast_notification_button_label_color' => 'white', 'toast_notification_button_on_hover_background_color' => '', 'toast_notification_button_on_hover_label_color' => 'white', 'toast_notification_horizontal_offset' => '', 'toast_notification_vertical_offset' => '', // Cart modal options. 'open_cart_modal_on_trigger_button_mouse_hover' => false, 'cart_position' => 'right', 'cart_title' => __( 'Cart', 'addonify-floating-cart' ), 'cart_title_font_size' => 14, 'cart_title_font_weight' => '400', 'cart_title_letter_spacing' => 0.25, 'cart_title_text_transform' => 'none', 'display_cart_items_number' => true, 'close_cart_modal_on_overlay_click' => true, 'display_button_before_checkout_button' => true, 'display_continue_shopping_button' => true, 'continue_shopping_button_action' => 'default', 'continue_shopping_button_label' => __( 'Close', 'addonify-floating-cart' ), 'checkout_button_label' => __( 'Checkout', 'addonify-floating-cart' ), 'sub_total_label' => __( 'Sub Total: ', 'addonify-floating-cart' ), 'discount_label' => __( 'Discount:', 'addonify-floating-cart' ), 'shipping_label' => __( 'Shipping:', 'addonify-floating-cart' ), 'open_shipping_label' => __( 'Change address', 'addonify-floating-cart' ), 'tax_label' => __( 'Tax:', 'addonify-floating-cart' ), 'total_label' => __( 'Total:', 'addonify-floating-cart' ), 'cart_modal_width' => 500, 'cart_modal_base_font_size' => 15, 'cart_modal_background_color' => '', 'cart_modal_base_text_color' => '', 'cart_modal_overlay_color' => '', 'cart_modal_content_link_color' => '', 'cart_modal_content_link_on_hover_color' => '', 'cart_modal_border_color' => '', 'cart_modal_title_color' => '', 'cart_modal_badge_background_color' => '', 'cart_modal_badge_text_color' => '', 'cart_modal_close_icon_color' => '', 'cart_modal_close_icon_on_hover_color' => '', 'cart_modal_product_title_color' => '', 'cart_modal_product_title_on_hover_color' => '', 'cart_modal_product_title_font_size' => 15, 'cart_modal_product_title_font_weight' => '400', 'cart_modal_product_quantity_price_color' => '', 'cart_modal_product_remove_button_background_color' => '', 'cart_modal_product_remove_button_icon_color' => '', 'cart_modal_product_remove_button_on_hover_background_color' => '', 'cart_modal_product_remove_button_on_hover_icon_color' => '', // Buttons style. 'cart_modal_buttons_font_size' => 14, 'cart_modal_buttons_font_weight' => '400', 'cart_modal_primary_button_background_color' => '', 'cart_modal_primary_button_label_color' => '', 'cart_modal_primary_button_border_color' => '', 'cart_modal_primary_button_on_hover_background_color' => '', 'cart_modal_primary_button_on_hover_label_color' => '', 'cart_modal_primary_button_on_hover_border_color' => '', 'cart_modal_secondary_button_background_color' => '', 'cart_modal_secondary_button_label_color' => '', 'cart_modal_secondary_button_border_color' => '', 'cart_modal_secondary_button_on_hover_background_color' => '', 'cart_modal_secondary_button_on_hover_label_color' => '', 'cart_modal_secondary_button_on_hover_border_color' => '', // Misc design options. 'cart_modal_input_field_placeholder_color' => '', 'cart_modal_input_field_text_color' => '', 'cart_modal_input_field_border_color' => '', 'cart_modal_input_field_background_color' => '', 'cart_shopping_meter_initial_background_color' => '', 'cart_shopping_meter_progress_background_color' => '', 'cart_shopping_meter_threashold_reached_background_color' => '', 'cart_modal_buttons_font_size' => 14, 'cart_modal_buttons_font_weight' => '400', 'cart_modal_buttons_letter_spacing' => 0.25, 'cart_modal_buttons_text_transform' => 'none', 'cart_modal_buttons_border_radius' => 3, 'cart_modal_primary_button_label_color' => '', 'cart_modal_primary_button_background_color' => '', 'cart_modal_primary_button_border_color' => '', 'cart_modal_primary_button_on_hover_label_color' => '', 'cart_modal_primary_button_on_hover_background_color' => '', 'cart_modal_primary_button_on_hover_border_color' => '', 'cart_modal_secondary_button_label_color' => '', 'cart_modal_secondary_button_background_color' => '', 'cart_modal_secondary_button_border_color' => '', 'cart_modal_secondary_button_on_hover_label_color' => '', 'cart_modal_secondary_button_on_hover_background_color' => '', 'cart_modal_secondary_button_on_hover_border_color' => '', // cart coupon options. 'display_applied_coupons' => true, 'cart_apply_coupon_button_label' => __( 'Apply Coupon', 'addonify-floating-cart' ), 'custom_css' => '', ) ); } /** * Define settings fields. * * @since 1.0.0 * @return array */ function addonify_floating_cart_settings_fields() { return apply_filters( 'addonify_floating_cart_settings_fields', array() ); } /** * Retrieve the value of a settings field. * * @since 1.0.0 * @param string $setting_id Setting ID. * @return mixed */ function addonify_floating_cart_get_option( $setting_id ) { $defaults = addonify_floating_cart_settings_fields_defaults(); return get_option( ADDONIFY_FLOATING_CART_DB_INITIALS . $setting_id, $defaults[ $setting_id ] ); } /** * Create and return array of setting_id and respective setting_value of settings fields. * * @since 1.0.0 * @param string $setting_id Setting ID. * @return array */ function addonify_floating_cart_get_settings_fields_values( $setting_id = '' ) { $setting_fields = addonify_floating_cart_settings_fields(); if ( ! empty( $setting_id ) ) { return addonify_floating_cart_get_option( $setting_id ); } else { $key_values = array(); foreach ( $setting_fields as $key => $value ) { $field_type = $value['type']; switch ( $field_type ) { case 'text': $key_values[ $key ] = addonify_floating_cart_get_option( $key ); break; case 'switch': $key_values[ $key ] = ( addonify_floating_cart_get_option( $key ) === '1' ) ? true : false; break; case 'checkbox': $key_values[ $key ] = addonify_floating_cart_get_option( $key ) ? json_decode( addonify_floating_cart_get_option( $key ), true ) : array(); break; case 'select': $key_values[ $key ] = ( addonify_floating_cart_get_option( $key ) === '' ) ? 'Choose value' : addonify_floating_cart_get_option( $key ); break; case 'color': $key_values[ $key ] = addonify_floating_cart_get_option( $key ); break; default: $key_values[ $key ] = addonify_floating_cart_get_option( $key ); break; } } return $key_values; } } /** * Create and return array of setting_id and respective setting_value of settings fields. * * @since 1.0.0 * @return array */ function addonify_floating_cart_get_setting_fields() { return array( 'settings_values' => addonify_floating_cart_get_settings_fields_values(), 'tabs' => array( 'settings' => array( 'sections' => array( 'general' => array( 'title' => __( 'General', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_cart_options_settings(), ), 'button' => array( 'title' => __( 'Cart Toggle Button Options', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_toggle_cart_button_settings(), ), 'toast-notification' => array( 'title' => __( 'Toast Notification Options', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_toast_notification_settings(), ), 'cart' => array( 'title' => __( 'Cart Drawer/Modal Options', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_cart_display_settings(), ), 'cart-label' => array( 'title' => __( 'Cart Drawer/Modal Labels', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_display_cart_label_settings(), ), 'coupon' => array( 'title' => __( 'Coupon Options', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_coupon_settings(), ), ), ), 'styles' => array( 'sections' => array( 'general' => array( 'title' => __( 'Interface Design', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_cart_styles_settings_fields(), ), 'button' => array( 'title' => __( 'Cart Toggle Button', 'addonify-floating-cart' ), 'description' => '', 'type' => 'render-jumbo-box', 'fields' => addonify_floating_cart_toggle_cart_button_designs(), ), 'toast-notification' => array( 'title' => __( 'Toast Notification', 'addonify-floating-cart' ), 'description' => '', 'type' => 'render-jumbo-box', 'fields' => addonify_floating_cart_toast_notification_designs(), ), 'cart' => array( 'title' => __( 'Cart Panel', 'addonify-floating-cart' ), 'description' => '', 'type' => 'render-jumbo-box', 'fields' => addonify_floating_cart_cart_display_designs(), ), 'cart-buttons' => array( 'title' => __( 'Buttons in Cart', 'addonify-floating-cart' ), 'description' => '', 'type' => 'render-jumbo-box', 'fields' => addonify_floating_cart_cart_buttons_display_designs(), ), 'cart-misc' => array( 'title' => __( 'Miscellaneous Cart Elements', 'addonify-floating-cart' ), 'description' => '', 'type' => 'render-jumbo-box', 'fields' => addonify_floating_cart_cart_misc_display_designs(), ), 'cart-products' => array( 'title' => __( 'Products in Cart', 'addonify-floating-cart' ), 'description' => '', 'type' => 'render-jumbo-box', 'fields' => addonify_floating_cart_cart_products_display_designs(), ), 'custom_css' => array( 'title' => __( 'Developer', 'addonify-floating-cart' ), 'description' => '', 'fields' => addonify_floating_cart_custom_css_settings_fields(), ), ), ), ), ); } /** * Update plugin's setting options' values. * * Checks the type of each setting options, sanitizes the value and updates the option's value. * * @since 1.0.0 * @param array $settings Array of options values. * @return boolean true on successful update else false. */ function addonify_floating_cart_update_settings( $settings = '' ) { if ( is_array( $settings ) && count( $settings ) > 0 ) { $setting_fields = addonify_floating_cart_settings_fields(); foreach ( $settings as $id => $value ) { $sanitized_value = null; $setting_type = $setting_fields[ $id ]['type']; switch ( $setting_type ) { case 'text': $sanitized_value = sanitize_text_field( $value ); break; case 'textarea': $sanitized_value = sanitize_textarea_field( $value ); break; case 'switch': $sanitized_value = ( true === $value ) ? '1' : '0'; break; case 'number': $sanitized_value = is_numeric( $value ) ? $value : 0; break; case 'color': $sanitized_value = sanitize_text_field( $value ); break; case 'select': case 'radio': $setting_choices = $setting_fields[ $id ]['choices']; $sanitized_value = ( array_key_exists( $value, $setting_choices ) ) ? sanitize_text_field( $value ) : $setting_choices[0]; break; case 'checkbox': $sanitize_args = array( 'choices' => $setting_fields[ $id ]['choices'], 'values' => $value, ); $sanitized_value = addonify_floating_cart_sanitize_multi_choices( $sanitize_args ); $sanitized_value = wp_json_encode( $value ); break; default: $sanitized_value = sanitize_text_field( $value ); } if ( ! update_option( ADDONIFY_FLOATING_CART_DB_INITIALS . $id, $sanitized_value ) ) { return false; } } return true; } } /** * Sanitize multiple choices values. * * @since 1.0.0 * @param array $args Multichoices and values. * @return array $sanitized_values */ function addonify_floating_cart_sanitize_multi_choices( $args ) { if ( is_array( $args['choices'] ) && count( $args['choices'] ) && is_array( $args['values'] ) && count( $args['values'] ) ) { $sanitized_values = array(); foreach ( $args['values'] as $value ) { if ( array_key_exists( $value, $args['choices'] ) ) { $sanitized_values[] = $value; } } return $sanitized_values; } return array(); } /** * Get the icons for the cart modal toggle button. * * @since 1.1.5 * * @return array Array of icons. */ function addonify_floating_cart_get_cart_modal_toggle_button_icons() { return apply_filters( 'addonify_floating_cart_cart_modal_toggle_button_icons', array( 'icon_1' => '', 'icon_2' => '', 'icon_3' => '', 'icon_4' => '', 'icon_5' => '', 'icon_6' => '', 'icon_7' => '', 'icon_8' => '', ) ); }