Changeset 3444681
- Timestamp:
- 01/22/2026 10:06:47 AM (2 months ago)
- Location:
- bizzmudra
- Files:
-
- 190 added
- 7 edited
-
tags/1.0.6 (added)
-
tags/1.0.6/README.md (added)
-
tags/1.0.6/admin (added)
-
tags/1.0.6/admin/class-admin.php (added)
-
tags/1.0.6/admin/framework-loader.php (added)
-
tags/1.0.6/admin/options-framework (added)
-
tags/1.0.6/admin/options-framework/assets (added)
-
tags/1.0.6/admin/options-framework/assets/css (added)
-
tags/1.0.6/admin/options-framework/assets/css/components (added)
-
tags/1.0.6/admin/options-framework/assets/css/components/api-section.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/dark-mode.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/checkbox.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/color.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/date.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/file.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/html.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/image-select.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/image.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/option-select.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/plugins.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/post-select.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/radio.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/repeater.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/select.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/single-repeater.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/slider.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/switch.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/text.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/fields/textarea.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/framework-common.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/metabox.css (added)
-
tags/1.0.6/admin/options-framework/assets/css/setup-wizard.css (added)
-
tags/1.0.6/admin/options-framework/assets/images (added)
-
tags/1.0.6/admin/options-framework/assets/images/logo.png (added)
-
tags/1.0.6/admin/options-framework/assets/images/no-sidebar.svg (added)
-
tags/1.0.6/admin/options-framework/assets/images/sidebar-left.svg (added)
-
tags/1.0.6/admin/options-framework/assets/images/sidebar-right.svg (added)
-
tags/1.0.6/admin/options-framework/assets/js (added)
-
tags/1.0.6/admin/options-framework/assets/js/bizzplugin-common.js (added)
-
tags/1.0.6/admin/options-framework/assets/js/framework.js (added)
-
tags/1.0.6/admin/options-framework/assets/js/metabox.js (added)
-
tags/1.0.6/admin/options-framework/assets/js/setup-wizard.js (added)
-
tags/1.0.6/admin/options-framework/assets/js/wp-color-picker-alpha.min.js (added)
-
tags/1.0.6/admin/options-framework/class-bizzplugin-framework.php (added)
-
tags/1.0.6/admin/options-framework/class-bizzplugin-metabox.php (added)
-
tags/1.0.6/admin/options-framework/class-bizzplugin-panel.php (added)
-
tags/1.0.6/admin/options-framework/includes (added)
-
tags/1.0.6/admin/options-framework/includes/class-ajax-handler.php (added)
-
tags/1.0.6/admin/options-framework/includes/class-api-handler.php (added)
-
tags/1.0.6/admin/options-framework/includes/class-field-sanitizer.php (added)
-
tags/1.0.6/admin/options-framework/includes/class-field-validator.php (added)
-
tags/1.0.6/admin/options-framework/includes/class-helper-common.php (added)
-
tags/1.0.6/admin/options-framework/includes/class-render-field.php (added)
-
tags/1.0.6/admin/options-framework/includes/class-setup-wizard.php (added)
-
tags/1.0.6/admin/options-framework/includes/class-webhook-handler.php (added)
-
tags/1.0.6/admin/options-framework/options-loader.php (added)
-
tags/1.0.6/admin/options-framework/setup-wizard-prompt.txt (added)
-
tags/1.0.6/admin/views (added)
-
tags/1.0.6/admin/views/settings.php (added)
-
tags/1.0.6/assets (added)
-
tags/1.0.6/assets/css (added)
-
tags/1.0.6/assets/css/admin.css (added)
-
tags/1.0.6/assets/css/public.css (added)
-
tags/1.0.6/assets/js (added)
-
tags/1.0.6/assets/js/admin.js (added)
-
tags/1.0.6/assets/js/public.js (added)
-
tags/1.0.6/bizzmudra.php (added)
-
tags/1.0.6/doc (added)
-
tags/1.0.6/doc/ajax-fix.md (added)
-
tags/1.0.6/doc/api-integration-guide.md (added)
-
tags/1.0.6/doc/changelog.md (added)
-
tags/1.0.6/doc/currency-rate-feature.md (added)
-
tags/1.0.6/doc/developer-guide.md (added)
-
tags/1.0.6/doc/display-settings.md (added)
-
tags/1.0.6/doc/hooks-filters.md (added)
-
tags/1.0.6/doc/installation.md (added)
-
tags/1.0.6/doc/language-status.md (added)
-
tags/1.0.6/doc/memory-issue-fix.md (added)
-
tags/1.0.6/doc/new-prompt.txt (added)
-
tags/1.0.6/doc/options-framework-add-1.md (added)
-
tags/1.0.6/doc/summary.md (added)
-
tags/1.0.6/doc/user-guide.md (added)
-
tags/1.0.6/includes (added)
-
tags/1.0.6/includes/class-currency-data.php (added)
-
tags/1.0.6/includes/class-exchange-rate.php (added)
-
tags/1.0.6/includes/class-price-converter.php (added)
-
tags/1.0.6/includes/class-widget.php (added)
-
tags/1.0.6/includes/exchange-rate.json (added)
-
tags/1.0.6/includes/functions.php (added)
-
tags/1.0.6/languages (added)
-
tags/1.0.6/languages/bizzmudra-bn_BD.mo (added)
-
tags/1.0.6/languages/bizzmudra-bn_BD.po (added)
-
tags/1.0.6/languages/bizzmudra-da_DK.mo (added)
-
tags/1.0.6/languages/bizzmudra-da_DK.po (added)
-
tags/1.0.6/languages/bizzmudra-de_DE.mo (added)
-
tags/1.0.6/languages/bizzmudra-de_DE.po (added)
-
tags/1.0.6/languages/bizzmudra-de_DE_formal.mo (added)
-
tags/1.0.6/languages/bizzmudra-de_DE_formal.po (added)
-
tags/1.0.6/languages/bizzmudra-es_ES.mo (added)
-
tags/1.0.6/languages/bizzmudra-es_ES.po (added)
-
tags/1.0.6/languages/bizzmudra-fr_FR.mo (added)
-
tags/1.0.6/languages/bizzmudra-fr_FR.po (added)
-
tags/1.0.6/languages/bizzmudra-hi_IN.mo (added)
-
tags/1.0.6/languages/bizzmudra-hi_IN.po (added)
-
tags/1.0.6/languages/bizzmudra-nl_BE.mo (added)
-
tags/1.0.6/languages/bizzmudra-nl_BE.po (added)
-
tags/1.0.6/languages/bizzmudra-nl_NL.mo (added)
-
tags/1.0.6/languages/bizzmudra-nl_NL.po (added)
-
tags/1.0.6/languages/bizzmudra-zh_CN.mo (added)
-
tags/1.0.6/languages/bizzmudra-zh_CN.po (added)
-
tags/1.0.6/languages/bizzmudra.pot (added)
-
tags/1.0.6/public (added)
-
tags/1.0.6/public/class-public.php (added)
-
tags/1.0.6/public/class-switcher.php (added)
-
tags/1.0.6/readme.txt (added)
-
trunk/README.md (added)
-
trunk/admin/class-admin.php (modified) (3 diffs)
-
trunk/admin/framework-loader.php (added)
-
trunk/admin/options-framework (added)
-
trunk/admin/options-framework/assets (added)
-
trunk/admin/options-framework/assets/css (added)
-
trunk/admin/options-framework/assets/css/components (added)
-
trunk/admin/options-framework/assets/css/components/api-section.css (added)
-
trunk/admin/options-framework/assets/css/dark-mode.css (added)
-
trunk/admin/options-framework/assets/css/fields (added)
-
trunk/admin/options-framework/assets/css/fields/checkbox.css (added)
-
trunk/admin/options-framework/assets/css/fields/color.css (added)
-
trunk/admin/options-framework/assets/css/fields/date.css (added)
-
trunk/admin/options-framework/assets/css/fields/file.css (added)
-
trunk/admin/options-framework/assets/css/fields/html.css (added)
-
trunk/admin/options-framework/assets/css/fields/image-select.css (added)
-
trunk/admin/options-framework/assets/css/fields/image.css (added)
-
trunk/admin/options-framework/assets/css/fields/option-select.css (added)
-
trunk/admin/options-framework/assets/css/fields/plugins.css (added)
-
trunk/admin/options-framework/assets/css/fields/post-select.css (added)
-
trunk/admin/options-framework/assets/css/fields/radio.css (added)
-
trunk/admin/options-framework/assets/css/fields/repeater.css (added)
-
trunk/admin/options-framework/assets/css/fields/select.css (added)
-
trunk/admin/options-framework/assets/css/fields/single-repeater.css (added)
-
trunk/admin/options-framework/assets/css/fields/slider.css (added)
-
trunk/admin/options-framework/assets/css/fields/switch.css (added)
-
trunk/admin/options-framework/assets/css/fields/text.css (added)
-
trunk/admin/options-framework/assets/css/fields/textarea.css (added)
-
trunk/admin/options-framework/assets/css/framework-common.css (added)
-
trunk/admin/options-framework/assets/css/metabox.css (added)
-
trunk/admin/options-framework/assets/css/setup-wizard.css (added)
-
trunk/admin/options-framework/assets/images (added)
-
trunk/admin/options-framework/assets/images/logo.png (added)
-
trunk/admin/options-framework/assets/images/no-sidebar.svg (added)
-
trunk/admin/options-framework/assets/images/sidebar-left.svg (added)
-
trunk/admin/options-framework/assets/images/sidebar-right.svg (added)
-
trunk/admin/options-framework/assets/js (added)
-
trunk/admin/options-framework/assets/js/bizzplugin-common.js (added)
-
trunk/admin/options-framework/assets/js/framework.js (added)
-
trunk/admin/options-framework/assets/js/metabox.js (added)
-
trunk/admin/options-framework/assets/js/setup-wizard.js (added)
-
trunk/admin/options-framework/assets/js/wp-color-picker-alpha.min.js (added)
-
trunk/admin/options-framework/class-bizzplugin-framework.php (added)
-
trunk/admin/options-framework/class-bizzplugin-metabox.php (added)
-
trunk/admin/options-framework/class-bizzplugin-panel.php (added)
-
trunk/admin/options-framework/includes (added)
-
trunk/admin/options-framework/includes/class-ajax-handler.php (added)
-
trunk/admin/options-framework/includes/class-api-handler.php (added)
-
trunk/admin/options-framework/includes/class-field-sanitizer.php (added)
-
trunk/admin/options-framework/includes/class-field-validator.php (added)
-
trunk/admin/options-framework/includes/class-helper-common.php (added)
-
trunk/admin/options-framework/includes/class-render-field.php (added)
-
trunk/admin/options-framework/includes/class-setup-wizard.php (added)
-
trunk/admin/options-framework/includes/class-webhook-handler.php (added)
-
trunk/admin/options-framework/options-loader.php (added)
-
trunk/admin/options-framework/setup-wizard-prompt.txt (added)
-
trunk/assets/css/admin.css (added)
-
trunk/assets/js/admin.js (added)
-
trunk/bizzmudra.php (modified) (7 diffs)
-
trunk/doc (added)
-
trunk/doc/ajax-fix.md (added)
-
trunk/doc/api-integration-guide.md (added)
-
trunk/doc/changelog.md (added)
-
trunk/doc/currency-rate-feature.md (added)
-
trunk/doc/developer-guide.md (added)
-
trunk/doc/display-settings.md (added)
-
trunk/doc/hooks-filters.md (added)
-
trunk/doc/installation.md (added)
-
trunk/doc/language-status.md (added)
-
trunk/doc/memory-issue-fix.md (added)
-
trunk/doc/new-prompt.txt (added)
-
trunk/doc/options-framework-add-1.md (added)
-
trunk/doc/summary.md (added)
-
trunk/doc/user-guide.md (added)
-
trunk/includes/class-currency-data.php (modified) (3 diffs)
-
trunk/includes/class-exchange-rate.php (added)
-
trunk/includes/exchange-rate.json (added)
-
trunk/includes/functions.php (modified) (1 diff)
-
trunk/public/class-public.php (modified) (2 diffs)
-
trunk/public/class-switcher.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
bizzmudra/trunk/admin/class-admin.php
r3434872 r3444681 1 1 <?php 2 2 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly 3 3 4 /** 4 * Admin Interface 5 * Admin Interface Handler 6 * 7 * This class manages the admin interface for the Bizzmudra plugin. 8 * It handles settings page registration, script/style enqueuing, and plugin action links. 9 * 10 * @package Bizzmudra 11 * @since 1.0.0 5 12 */ 6 13 class BIZZMUDRA_Admin { 7 14 15 /** 16 * Plugin slug for menu and asset registration 17 * 18 * @var string 19 */ 8 20 public $slug = 'bizzmudra'; 21 22 /** 23 * Plugin base name for action links 24 * 25 * @var string 26 */ 9 27 public $plugin_base = BIZZMUDRA_PLUGIN_BASE; 28 29 /** 30 * Singleton instance 31 * 32 * @var BIZZMUDRA_Admin|null 33 */ 10 34 private static $instance = null; 11 35 36 /** 37 * Get singleton instance 38 * 39 * @return BIZZMUDRA_Admin 40 */ 12 41 public static function get_instance() { 13 42 if (null === self::$instance) { … … 17 46 } 18 47 48 /** 49 * Constructor 50 * Initializes admin hooks and loads the settings framework 51 */ 19 52 private function __construct() { 20 add_action('admin_menu', array($this, 'add_menu'));21 add_action('admin_init', array($this, 'save_settings'));53 // Load the framework settings 54 $this->load_framework(); 22 55 23 // Add settings link on plugin page and row meta links56 // Add settings link on plugin page and row meta links 24 57 add_filter( 'plugin_action_links_' . $this->plugin_base, array( $this, 'plugin_action_links' ) ); 25 58 add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 3 ); 59 60 // Enqueue admin CSS and JavaScript 61 add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); 26 62 } 27 63 28 64 /** 29 * Add admin menu 65 * Load the options framework 66 * Includes the framework loader file for settings panel 30 67 */ 31 public function add_menu() { 32 add_submenu_page( 33 'woocommerce', 34 __('Multi Currency', 'bizzmudra'), 35 __('Multi Currency', 'bizzmudra'), 36 'manage_woocommerce', 37 $this->slug, 38 array($this, 'settings_page') 39 ); 68 private function load_framework() { 69 require_once BIZZMUDRA_PLUGIN_DIR . 'admin/framework-loader.php'; 70 } 71 72 /** 73 * Enqueue admin scripts and styles 74 * 75 * Loads necessary CSS and JavaScript files for the admin settings page. 76 * Also localizes exchange rate data for JavaScript use. 77 */ 78 public function admin_enqueue_scripts( $hook ) { 79 // Load scripts and styles only on our plugin settings page 80 if ( strpos( $hook, $this->slug ) !== false ) { 81 82 wp_enqueue_style( 'woocommerce_admin_styles' ); 83 wp_enqueue_script( 'selectWoo' ); 84 wp_enqueue_style( 'select2' ); 85 86 wp_enqueue_style( $this->slug . '-admin', BIZZMUDRA_PLUGIN_URL . 'assets/css/admin.css', array(), BIZZMUDRA_VERSION ); 87 wp_enqueue_script( $this->slug . '-admin', BIZZMUDRA_PLUGIN_URL . 'assets/js/admin.js', [ 'jquery', 'selectWoo' ], BIZZMUDRA_VERSION, true ); 88 89 // Get exchange rates for JavaScript (relative to WooCommerce base currency) 90 $exchange_rate_instance = BIZZMUDRA_Exchange_Rate::get_instance(); 91 $exchange_rates = $exchange_rate_instance->get_all_rates_relative_to_base(); 92 93 // Localize script with exchange rates data and AJAX settings 94 wp_localize_script( $this->slug . '-admin', 'bizzmudraAdmin', array( 95 'ajax_url' => admin_url( 'admin-ajax.php' ), 96 'nonce' => wp_create_nonce( 'bizzmudra_admin_nonce' ), 97 'exchange_rates' => $exchange_rates, 98 'base_currency' => $exchange_rate_instance->get_base_currency(), 99 ) ); 100 } 40 101 } 41 102 … … 63 124 return $links; 64 125 } 65 /**66 * Settings page67 */68 public function settings_page() {69 $data = BIZZMUDRA_Currency_Data::get_instance();70 $bizzmudra_settings = $data->get_settings();71 72 include BIZZMUDRA_PLUGIN_DIR . 'admin/views/settings.php';73 }74 75 /**76 * Save settings77 */78 public function save_settings() {79 80 $nonce = sanitize_text_field( wp_unslash( $_POST['bizzmudra_settings_nonce'] ?? '' ) );81 82 if ( empty( $nonce ) || !wp_verify_nonce($nonce, 'bizzmudra_save_settings')) {83 return;84 }85 86 if (!current_user_can('manage_woocommerce')) {87 return;88 }89 //use wp_unslash90 $bizzmudra_settings = array(91 'enabled' => isset($_POST['bizzmudra_enabled']) ? 1 : 0,92 'display_position' => isset($_POST['bizzmudra_display_position']) ? sanitize_text_field(wp_unslash($_POST['bizzmudra_display_position'])) : 'shop_page',93 'show_on_product_page' => isset($_POST['bizzmudra_show_on_product_page']) ? 1 : 0,94 'currencies' => array()95 );96 97 // Process currencies98 if (isset($_POST['bizzmudra_currencies'])) {99 //All Sanitization is done here in foreach100 //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized101 $currencies = wp_unslash($_POST['bizzmudra_currencies']);102 $currencies = is_array($currencies) ? $currencies : array();103 foreach ($currencies as $bizzmudra_code => $bizzmudra_currency) {104 $bizzmudra_settings['currencies'][sanitize_text_field($bizzmudra_code)] = array(105 'rate' => floatval($bizzmudra_currency['rate']),106 'symbol' => sanitize_text_field($bizzmudra_currency['symbol']),107 'position' => sanitize_text_field($bizzmudra_currency['position']),108 'decimals' => intval($bizzmudra_currency['decimals']),109 'enabled' => isset($bizzmudra_currency['enabled']) ? 1 : 0110 );111 }112 }113 114 $data = BIZZMUDRA_Currency_Data::get_instance();115 $data->update_settings($bizzmudra_settings);116 117 add_settings_error('bizzmudra_messages', 'bizzmudra_message', __('Settings saved.', 'bizzmudra'), 'updated');118 }119 126 120 127 } -
bizzmudra/trunk/bizzmudra.php
r3434872 r3444681 10 10 * 11 11 * 12 * Version: 1.0. 312 * Version: 1.0.6 13 13 * Requires at least: 6.2 14 14 * Tested up to: 6.9 … … 32 32 // Define plugin constants 33 33 if ( ! defined( 'BIZZMUDRA_VERSION' ) ) { 34 define( 'BIZZMUDRA_VERSION', '1.0. 0' );34 define( 'BIZZMUDRA_VERSION', '1.0.6.3' ); 35 35 } 36 36 if (!defined('BIZZMUDRA_PLUGIN_DIR')) { … … 118 118 private function includes() { 119 119 require_once BIZZMUDRA_PLUGIN_DIR . 'includes/functions.php'; 120 require_once BIZZMUDRA_PLUGIN_DIR . 'includes/class-exchange-rate.php'; 120 121 require_once BIZZMUDRA_PLUGIN_DIR . 'includes/class-currency-data.php'; 121 122 require_once BIZZMUDRA_PLUGIN_DIR . 'includes/class-price-converter.php'; … … 125 126 if (is_admin()) { 126 127 require_once BIZZMUDRA_PLUGIN_DIR . 'admin/class-admin.php'; 127 } else {128 require_once BIZZMUDRA_PLUGIN_DIR . 'public/class-public.php';129 128 } 129 130 require_once BIZZMUDRA_PLUGIN_DIR . 'public/class-public.php'; 130 131 } 131 132 … … 142 143 if (is_admin()) { 143 144 BIZZMUDRA_Admin::get_instance(); 144 } else {145 BIZZMUDRA_Public::get_instance();146 145 } 146 BIZZMUDRA_Public::get_instance(); 147 147 } 148 148 … … 151 151 */ 152 152 public function activate() { 153 // Set default options 153 // Set default options using new repeater format 154 // Using string values for consistency with framework's switch field 154 155 $default_settings = array( 155 'enabled' => 1, 156 'enabled' => '1', 157 'display_position' => 'shop_page', 158 'show_on_product_page' => '0', 156 159 'currencies' => array( 157 'USD' => array( 158 'rate' => 1, 160 array( 161 'code' => 'USD', 162 'rate' => '1', 159 163 'symbol' => '$', 160 164 'position' => 'left', 161 'decimals' => 2 165 'decimals' => '2', 166 'enabled' => '1' 162 167 ) 163 168 ), … … 166 171 167 172 add_option('bizzmudra_settings', $default_settings); 173 174 // setup wizard redirection 175 add_option( BIZZMUDRA_PLUGIN_BASE, true ); 168 176 } 169 177 -
bizzmudra/trunk/includes/class-currency-data.php
r3433511 r3444681 18 18 $this->settings = get_option('bizzmudra_settings', array()); 19 19 } 20 21 /** 22 * Convert repeater format currencies to associative array format 23 * The framework stores currencies as an indexed array, but we need to work with currency code as key 24 * 25 * @param array $currencies_array Indexed array from repeater field 26 * @return array Associative array with currency code as key 27 */ 28 private function normalize_currencies($currencies_array) { 29 if (empty($currencies_array) || !is_array($currencies_array)) { 30 return array(); 31 } 32 33 // Check if this is an indexed array (new repeater format) or associative array (old format) 34 // Old format: array('USD' => array('rate' => 1, ...), 'EUR' => array('rate' => 0.85, ...)) 35 // New format: array(array('code' => 'USD', 'rate' => 1, ...), array('code' => 'EUR', 'rate' => 0.85, ...)) 36 $first_key = array_key_first($currencies_array); 37 38 // If the first key is a string (currency code like 'USD'), it's the old format 39 if (is_string($first_key) && strlen($first_key) === 3) { 40 return $currencies_array; 41 } 42 43 $normalized = array(); 44 45 foreach ($currencies_array as $currency) { 46 // New repeater format 47 if (is_array($currency) && isset($currency['code'])) { 48 $code = $currency['code']; 49 $normalized[$code] = array( 50 'rate' => isset($currency['rate']) ? floatval($currency['rate']) : 1, 51 // 'symbol' => isset($currency['symbol']) ? $currency['symbol'] : $this->get_default_symbol($code), 52 'position' => isset($currency['position']) ? $currency['position'] : 'left', 53 'decimals' => isset($currency['decimals']) ? intval($currency['decimals']) : 2, 54 'enabled' => isset($currency['enabled']) ? $currency['enabled'] : 1, 55 ); 56 } 57 } 58 59 return $normalized; 60 } 61 62 /** 63 * Get default currency symbol from WooCommerce 64 * 65 * @param string $code Currency code 66 * @return string Currency symbol 67 */ 68 private function get_default_symbol($code) { 69 if (function_exists('get_woocommerce_currency_symbol')) { 70 return get_woocommerce_currency_symbol($code); 71 } 72 return $code; 73 } 20 74 21 75 /** … … 26 80 */ 27 81 public function get_all_currencies() { 28 return isset($this->settings['currencies']) ? $this->settings['currencies'] : array(); 82 $currencies = isset($this->settings['currencies']) ? $this->settings['currencies'] : array(); 83 return $this->normalize_currencies($currencies); 29 84 } 30 85 … … 43 98 // Default to enabled (1) if not set for backward compatibility 44 99 $is_enabled = isset($currency['enabled']) ? $currency['enabled'] : 1; 45 if ($is_enabled) { 100 // Use filter_var for consistent boolean evaluation (handles '1', 1, 'true', true, etc.) 101 if (filter_var($is_enabled, FILTER_VALIDATE_BOOLEAN)) { 46 102 $enabled_currencies[$code] = $currency; 47 103 } -
bizzmudra/trunk/includes/functions.php
r3433511 r3444681 11 11 */ 12 12 function bizzmudra_country_code_to_flag_emoji( $country_code ) { 13 $country_code = substr($country_code, 0, 2); 13 14 $country_code = strtoupper( $country_code ); 14 15 $flag = ''; -
bizzmudra/trunk/public/class-public.php
r3433511 r3444681 27 27 28 28 add_filter('woocommerce_currency', array($this, 'change_currency')); 29 add_filter('woocommerce_currency_symbol', array($this, 'change_currency_symbol'), 10, 2);29 // add_filter('woocommerce_currency_symbol', array($this, 'change_currency_symbol'), 10, 2); 30 30 } 31 31 … … 170 170 */ 171 171 public function change_currency_symbol($symbol, $bizzmudra_currency) { 172 $current = $this->data->get_current_currency();173 174 if ($current && $current === $bizzmudra_currency) {175 $custom_symbol = $this->data->get_symbol($current);176 if ($custom_symbol) {177 return $custom_symbol;178 }179 }172 173 // $current = $this->data->get_current_currency(); 174 // if ($current && $current === $bizzmudra_currency) { 175 // $custom_symbol = $this->data->get_symbol($current); 176 // if ($custom_symbol) { 177 // return $custom_symbol; 178 // } 179 // } 180 180 181 181 return $symbol; -
bizzmudra/trunk/public/class-switcher.php
r3433511 r3444681 56 56 return ''; 57 57 } 58 58 59 59 $current_currency = isset($currencies[$current]) ? $currencies[$current] : reset($currencies); 60 60 $current_code = $current ? $current : key($currencies); … … 64 64 <div class="bizzplugin-custom-dropdown"> 65 65 <div class="bizzplugin-dropdown-selected" data-value="<?php echo esc_attr($current_code); ?>"> 66 <span class="bizzplugin-flag"><?php echo esc_html( bizzmudra_country_code_to_flag_emoji( substr($current_code, 0, 2)) ); ?></span>67 <span class="bizzplugin-currency-info"><?php echo esc_html( $current_currency['symbol'] . ' ' . $current_code); ?></span>66 <span class="bizzplugin-flag"><?php echo esc_html( bizzmudra_country_code_to_flag_emoji($current_code) ); ?></span> 67 <span class="bizzplugin-currency-info"><?php echo esc_html(get_woocommerce_currency_symbol($current) . ' (' . $current_code . ')' ); ?></span> 68 68 <span class="bizzplugin-dropdown-arrow">▼</span> 69 69 </div> … … 71 71 <?php foreach ($currencies as $bizzmudra_code => $bizzmudra_currency) : ?> 72 72 <div class="bizzplugin-dropdown-item <?php echo ($current_code === $bizzmudra_code) ? 'bizzplugin-active' : ''; ?>" data-value="<?php echo esc_attr($bizzmudra_code); ?>"> 73 <span class="bizzplugin-flag"><?php echo esc_html( bizzmudra_country_code_to_flag_emoji( substr($bizzmudra_code, 0, 2)) ); ?></span>74 <span class="bizzplugin-currency-info"><?php echo esc_html( $bizzmudra_currency['symbol'] . ' ' . $bizzmudra_code); ?></span>73 <span class="bizzplugin-flag"><?php echo esc_html( bizzmudra_country_code_to_flag_emoji($bizzmudra_code) ); ?></span> 74 <span class="bizzplugin-currency-info"><?php echo esc_html(get_woocommerce_currency_symbol($bizzmudra_code) . ' (' . $bizzmudra_code . ')' ); ?></span> 75 75 </div> 76 76 <?php endforeach; ?> -
bizzmudra/trunk/readme.txt
r3434872 r3444681 7 7 Tested up to: 6.9 8 8 Requires PHP: 8.0 9 Stable tag: 1.0. 39 Stable tag: 1.0.6 10 10 License: GPLv2 or later 11 11 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 85 85 == Changelog == 86 86 87 = 1.0.6 = 88 * Added: Support for WooCommerce 7.9 89 * Improved: Exchange rate handling and currency conversion accuracy 90 * Fixed: Minor bugs and improved overall stability 91 * Added: Currency switcher shortcode `[bizzmudra_currency_switcher]` 92 * Added: Currency Switcher widget for sidebar display 93 * Fixed: Minor bugs and improved compatibility with latest WooCommerce version 94 * Improved code modularity and added comments for better maintainability 95 96 87 97 = 1.0.3 = 88 98 * setting page link added in plugin action links
Note: See TracChangeset
for help on using the changeset viewer.