Changeset 3423707
- Timestamp:
- 12/19/2025 01:31:43 PM (2 months ago)
- Location:
- woocommerce-product-addon
- Files:
-
- 24 edited
- 1 copied
-
tags/33.0.18 (copied) (copied from woocommerce-product-addon/trunk)
-
tags/33.0.18/CHANGELOG.md (modified) (1 diff)
-
tags/33.0.18/inc/admin.php (modified) (5 diffs)
-
tags/33.0.18/js/admin/ppom-admin.js (modified) (3 diffs)
-
tags/33.0.18/languages/woocommerce-product-addon.pot (modified) (5 diffs)
-
tags/33.0.18/readme.txt (modified) (2 diffs)
-
tags/33.0.18/vendor/codeinwp/themeisle-sdk/CHANGELOG.md (modified) (1 diff)
-
tags/33.0.18/vendor/codeinwp/themeisle-sdk/load.php (modified) (1 diff)
-
tags/33.0.18/vendor/codeinwp/themeisle-sdk/src/Loader.php (modified) (2 diffs)
-
tags/33.0.18/vendor/codeinwp/themeisle-sdk/src/Modules/Announcements.php (modified) (3 diffs)
-
tags/33.0.18/vendor/composer/installed.json (modified) (3 diffs)
-
tags/33.0.18/vendor/composer/installed.php (modified) (3 diffs)
-
tags/33.0.18/woocommerce-product-addon.php (modified) (2 diffs)
-
trunk/CHANGELOG.md (modified) (1 diff)
-
trunk/inc/admin.php (modified) (5 diffs)
-
trunk/js/admin/ppom-admin.js (modified) (3 diffs)
-
trunk/languages/woocommerce-product-addon.pot (modified) (5 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/vendor/codeinwp/themeisle-sdk/CHANGELOG.md (modified) (1 diff)
-
trunk/vendor/codeinwp/themeisle-sdk/load.php (modified) (1 diff)
-
trunk/vendor/codeinwp/themeisle-sdk/src/Loader.php (modified) (2 diffs)
-
trunk/vendor/codeinwp/themeisle-sdk/src/Modules/Announcements.php (modified) (3 diffs)
-
trunk/vendor/composer/installed.json (modified) (3 diffs)
-
trunk/vendor/composer/installed.php (modified) (3 diffs)
-
trunk/woocommerce-product-addon.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
woocommerce-product-addon/tags/33.0.18/CHANGELOG.md
r3394835 r3423707 1 ##### [Version 33.0.18](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.17...v33.0.18) (2025-12-19) 2 3 - Fixed image upload in image dropdown field 4 - Enhanced security 5 1 6 ##### [Version 33.0.17](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.16...v33.0.17) (2025-11-13) 2 7 -
woocommerce-product-addon/tags/33.0.18/inc/admin.php
r3394835 r3423707 292 292 global $wpdb; 293 293 294 extract( $_REQUEST );295 296 294 $send_file_attachment = 'NA'; 297 295 $aviary_api_key = 'NA'; 298 296 $show_cart_thumb = 'NA'; 299 297 298 $ppom = array(); 299 $productmeta_id = isset( $_REQUEST['productmeta_id'] ) ? sanitize_text_field( $_REQUEST['productmeta_id'] ) : ''; 300 300 301 if ( is_string( $_REQUEST['ppom'] ) ) { 301 302 $ppom_encoded = $_REQUEST['ppom']; 302 303 parse_str( $ppom_encoded, $ppom_decoded); 303 $ _REQUEST['ppom']= $ppom_decoded['ppom'];304 } 305 306 $ppom_meta = ( isset($_REQUEST['ppom_meta']) ? $_REQUEST['ppom_meta'] : isset($_REQUEST['ppom']) ) ? $_REQUEST['ppom'] : '';304 $ppom = $ppom_decoded['ppom']; 305 } 306 307 $ppom_meta = isset($_REQUEST['ppom_meta']) ? $_REQUEST['ppom_meta'] : $ppom; 307 308 308 309 if ( empty( $ppom_meta ) ) { … … 332 333 $productmeta_style = isset( $_REQUEST['productmeta_style'] ) ? sanitize_text_field( $_REQUEST['productmeta_style'] ) : ''; 333 334 $productmeta_js = isset( $_REQUEST['productmeta_js'] ) ? sanitize_text_field( $_REQUEST['productmeta_js'] ) : ''; 335 $product_id = isset( $_REQUEST['product_id'] ) ? intval( $_REQUEST['product_id'] ) : 0; 334 336 335 337 if ( strlen( $productmeta_name ) > 50 ) { … … 407 409 408 410 409 if ( isset( $_REQUEST['product_id'] ) && $_REQUEST['product_id'] != '') {410 ppom_attach_fields_to_product( $ppom_id, intval( $_REQUEST['product_id'] ));411 if ( ! empty( $product_id ) ) { 412 ppom_attach_fields_to_product( $ppom_id, $product_id ); 411 413 $redirect_to = get_permalink( $product_id ); 412 414 } … … 439 441 440 442 441 $return_page = isset( $_REQUEST['ppom_meta'] ) ? 'ppom-energy' : 'ppom';442 extract( $_REQUEST );443 $return_page = isset( $_REQUEST['ppom_meta'] ) ? 'ppom-energy' : 'ppom'; 444 $productmeta_id = isset( $_REQUEST['productmeta_id'] ) ? sanitize_text_field( $_REQUEST['productmeta_id'] ) : ''; 443 445 444 446 $ppom_args = array( … … 641 643 global $wpdb; 642 644 643 extract( $_REQUEST );645 $productmeta_id = isset( $_REQUEST['productmeta_id'] ) ? sanitize_text_field( $_REQUEST['productmeta_id'] ) : ''; 644 646 645 647 $tbl_name = $wpdb->prefix . PPOM_TABLE_META; -
woocommerce-product-addon/tags/33.0.18/js/admin/ppom-admin.js
r3394835 r3423707 760 760 var stock_metatype = 'stock'; 761 761 var stock_placeholder = ppom_vars.i18n.stock; 762 let url_field = '<input placeholder="url" type="text" name="ppom[' + field_index + '][' + meta_type + '][' + option_index + '][url]" class="form-control" data-opt-index="' + option_index + '" data-metatype="url" value="">'; 762 763 763 764 // Set name key for imageselect addon … … 780 781 price_placeholder = ppom_vars.i18n.metaIds; 781 782 price_metatype = 'meta_id'; 783 url_field = '<input placeholder="url" type="text" name="ppom[' + field_index + '][' + meta_type + '][' + option_index + '][url]" class="form-control" data-opt-index="' + option_index + '" data-metatype="url" value="">'; 782 784 } 783 785 else { … … 785 787 var condidtion_attr = ''; 786 788 } 787 788 let url_field = '<input placeholder="url" type="text" name="ppom[' + field_index + '][' + meta_type + '][' + option_index + '][url]" class="form-control" data-opt-index="' + option_index + '" data-metatype="url" value="">';789 789 790 790 if (meta.type !== 'image') { -
woocommerce-product-addon/tags/33.0.18/languages/woocommerce-product-addon.pot
r3394835 r3423707 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-1 1-13T08:27:13+00:00\n"12 "POT-Creation-Date: 2025-12-19T13:31:16+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 889 889 #: backend/settings-panel.class.php:311 890 890 #: classes/admin.class.php:583 891 #: inc/admin.php:63 5891 #: inc/admin.php:637 892 892 msgid "Sorry, you are not allowed to perform this action please try again" 893 893 msgstr "" … … 1044 1044 1045 1045 #: classes/admin.class.php:267 1046 #: inc/admin.php:67 71046 #: inc/admin.php:679 1047 1047 msgid "Sorry, you are not allowed to perform this action" 1048 1048 msgstr "" … … 3696 3696 3697 3697 #: inc/admin.php:271 3698 #: inc/admin.php:45 53698 #: inc/admin.php:457 3699 3699 msgid "Since version 22.0, Database has some changes. Please Deactivate & then activate the PPOM plugin." 3700 3700 msgstr "" 3701 3701 3702 3702 #: inc/admin.php:285 3703 #: inc/admin.php:47 03703 #: inc/admin.php:472 3704 3704 msgid "Sorry, you are not allowed to perform this action." 3705 3705 msgstr "" 3706 3706 3707 #: inc/admin.php:31 03707 #: inc/admin.php:311 3708 3708 msgid "No fields found." 3709 3709 msgstr "" 3710 3710 3711 #: inc/admin.php:33 73712 #: inc/admin.php:50 63711 #: inc/admin.php:339 3712 #: inc/admin.php:508 3713 3713 msgid "PPOM title is too long to save, please make it less than 50 characters." 3714 3714 msgstr "" 3715 3715 3716 #: inc/admin.php:4 183716 #: inc/admin.php:420 3717 3717 msgid "Form added successfully" 3718 3718 msgstr "" 3719 3719 3720 #: inc/admin.php:42 63720 #: inc/admin.php:428 3721 3721 #: inc/rest.class.php:395 3722 3722 msgid "No changes found." 3723 3723 msgstr "" 3724 3724 3725 #: inc/admin.php:5 683725 #: inc/admin.php:570 3726 3726 msgid "Form updated successfully" 3727 3727 msgstr "" 3728 3728 3729 #: inc/admin.php:57 63729 #: inc/admin.php:578 3730 3730 msgid "Form updated successfully." 3731 3731 msgstr "" 3732 3732 3733 #: inc/admin.php:65 43734 #: inc/admin.php:70 53733 #: inc/admin.php:656 3734 #: inc/admin.php:707 3735 3735 msgid "Meta deleted successfully" 3736 3736 msgstr "" 3737 3737 3738 #: inc/admin.php:6 593738 #: inc/admin.php:661 3739 3739 msgid "Error while deleting the PPOM, try again." 3740 3740 msgstr "" 3741 3741 3742 3742 #. translators: %1$s - HTML tag, %2$s - discount, %3$s - HTML tag, %4$s - product name. 3743 #: inc/admin.php:83 73743 #: inc/admin.php:839 3744 3744 #, php-format 3745 3745 msgid "Our biggest sale of the year: %1$sup to %2$s OFF%3$s on %4$s. Don't miss this limited-time offer." … … 3747 3747 3748 3748 #. translators: %1$s - HTML tag, %2$s - discount, %3$s - HTML tag, %4$s - product name. 3749 #: inc/admin.php:84 73749 #: inc/admin.php:849 3750 3750 #, php-format 3751 3751 msgid "Get %1$sup to %2$s off%3$s when you upgrade your %4$s plan or renew early." -
woocommerce-product-addon/tags/33.0.18/readme.txt
r3423705 r3423707 4 4 Requires at least: 3.5 5 5 Tested up to: 6.9 6 Stable tag: 33.0.1 76 Stable tag: 33.0.18 7 7 License: GPLv2 8 8 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 252 252 == Changelog == 253 253 254 ##### [Version 33.0.17](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.16...v33.0.17) (2025-11-13) 255 254 ##### [Version 33.0.18](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.17...v33.0.18) (2025-12-19) 255 256 - Fixed image upload in image dropdown field 256 257 - Enhanced security 257 - Fixed load of JS script dependencies for latest WooCommerce version258 - Fixed issue with FixedPrice field giving a fatal error when string is used in quantity field259 - Fixed color option overlapping260 258 261 259 -
woocommerce-product-addon/tags/33.0.18/vendor/codeinwp/themeisle-sdk/CHANGELOG.md
r3379431 r3423707 1 ##### [Version 3.3.50](https://github.com/Codeinwp/themeisle-sdk-main/compare/v3.3.49...v3.3.50) (2025-11-25) 2 3 > Things are getting better every day. 🚀 4 1 5 ##### [Version 3.3.49](https://github.com/Codeinwp/themeisle-sdk-main/compare/v3.3.48...v3.3.49) (2025-09-18) 2 6 -
woocommerce-product-addon/tags/33.0.18/vendor/codeinwp/themeisle-sdk/load.php
r3379431 r3423707 15 15 } 16 16 // Current SDK version and path. 17 $themeisle_sdk_version = '3.3. 49';17 $themeisle_sdk_version = '3.3.50'; 18 18 $themeisle_sdk_path = dirname( __FILE__ ); 19 19 -
woocommerce-product-addon/tags/33.0.18/vendor/codeinwp/themeisle-sdk/src/Loader.php
r3379431 r3423707 332 332 */ 333 333 public static function init() { 334 /** 335 * This filter can be used to localize the labels inside each product. 336 */ 337 self::$labels = apply_filters( 'themeisle_sdk_labels', self::$labels ); 334 self::localize_labels(); 338 335 if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Loader ) ) { 339 336 self::$instance = new Loader(); … … 347 344 348 345 add_action( 'themeisle_sdk_first_activation', array( __CLASS__, 'activate' ) ); 349 } 346 347 } 348 } 349 350 /** 351 * Localize the labels. 352 */ 353 public static function localize_labels() { 354 $originals = self::$labels; 355 $all_translations = []; 356 357 global $wp_filter; 358 if ( isset( $wp_filter['themeisle_sdk_labels'] ) ) { 359 foreach ( $wp_filter['themeisle_sdk_labels']->callbacks as $priority => $hooks ) { 360 foreach ( $hooks as $hook ) { 361 // Each callback gets fresh originals, not previous callback's output 362 $result = call_user_func( $hook['function'], $originals ); 363 $all_translations[] = $result; 364 } 365 } 366 367 // Remove the filter so it doesn't run again via apply_filters 368 remove_all_filters( 'themeisle_sdk_labels' ); 369 } 370 371 // Merge all results, first real translation wins 372 self::$labels = self::merge_all_translations( $originals, $all_translations ); 373 } 374 /** 375 * Merge all translations. 376 * 377 * @param array $originals The original labels. 378 * @param array $all_translations The all translations. 379 * 380 * @return array The merged labels. 381 */ 382 private static function merge_all_translations( $originals, $all_translations ) { 383 $result = $originals; 384 385 foreach ( $all_translations as $translations ) { 386 $result = self::merge_if_translated( $result, $translations, $originals ); 387 } 388 389 return $result; 390 } 391 /** 392 * Merge if translated. 393 * 394 * @param array $current The current labels. 395 * @param array $new The new labels. 396 * @param array $originals The original labels. 397 * @return array The merged labels. 398 */ 399 private static function merge_if_translated( $current, $new, $originals ) { 400 foreach ( $new as $key => $value ) { 401 if ( ! isset( $originals[ $key ] ) ) { 402 // New key, accept it 403 if ( ! isset( $current[ $key ] ) ) { 404 $current[ $key ] = $value; 405 } 406 continue; 407 } 408 409 if ( is_array( $value ) && is_array( $originals[ $key ] ) ) { 410 $current[ $key ] = self::merge_if_translated( 411 $current[ $key ], 412 $value, 413 $originals[ $key ] 414 ); 415 } else { 416 // Only accept if: 417 // 1. New value is actually translated (differs from original) 418 // 2. Current value is NOT already translated 419 $is_new_translated = ( $value !== $originals[ $key ] ); 420 $is_current_untranslated = ( $current[ $key ] === $originals[ $key ] ); 421 422 if ( $is_new_translated && $is_current_untranslated ) { 423 $current[ $key ] = $value; 424 } 425 } 426 } 427 428 return $current; 350 429 } 351 430 -
woocommerce-product-addon/tags/33.0.18/vendor/codeinwp/themeisle-sdk/src/Modules/Announcements.php
r3301441 r3423707 246 246 } 247 247 248 $logo_url = ! empty( $data['logo_url'] ) ? $data['logo_url'] : $this->get_sdk_uri() . 'assets/images/themeisle-logo.png'; 249 $cta_label = ! empty( $data['cta_label'] ) ? $data['cta_label'] : Loader::$labels['announcements']['notice_link_label']; 248 250 $sale_url = ! empty( $data['sale_url'] ) ? $data['sale_url'] : ''; 249 251 $hide_other_notices = ! empty( $data['hide_other_notices'] ) ? $data['hide_other_notices'] : ! $can_dismiss; … … 341 343 <img 342 344 width="45" 343 src="<?php echo esc_url( $ this->get_sdk_uri() . 'assets/images/themeisle-logo.png'); ?>"345 src="<?php echo esc_url( $logo_url ); ?>" 344 346 /> 345 347 </div> … … 361 363 class="button button-primary themeisle-sale-button" 362 364 > 363 <?php echo esc_html( Loader::$labels['announcements']['notice_link_label']); ?>365 <?php echo esc_html( $cta_label ); ?> 364 366 </a> 365 367 </div> -
woocommerce-product-addon/tags/33.0.18/vendor/composer/installed.json
r3379431 r3423707 3 3 { 4 4 "name": "codeinwp/themeisle-sdk", 5 "version": "3.3. 49",6 "version_normalized": "3.3. 49.0",5 "version": "3.3.50", 6 "version_normalized": "3.3.50.0", 7 7 "source": { 8 8 "type": "git", 9 9 "url": "https://github.com/Codeinwp/themeisle-sdk.git", 10 "reference": " 605f78bbbd8526f7597a89077791043d9ecc8c20"10 "reference": "3c1f8dfc2390e667bbc086c5d660900a7985efa6" 11 11 }, 12 12 "dist": { 13 13 "type": "zip", 14 "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/ 605f78bbbd8526f7597a89077791043d9ecc8c20",15 "reference": " 605f78bbbd8526f7597a89077791043d9ecc8c20",14 "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/3c1f8dfc2390e667bbc086c5d660900a7985efa6", 15 "reference": "3c1f8dfc2390e667bbc086c5d660900a7985efa6", 16 16 "shasum": "" 17 17 }, … … 20 20 "yoast/phpunit-polyfills": "^2.0" 21 21 }, 22 "time": "2025- 09-18T13:41:05+00:00",22 "time": "2025-11-25T19:36:35+00:00", 23 23 "type": "library", 24 24 "installation-source": "dist", … … 41 41 "support": { 42 42 "issues": "https://github.com/Codeinwp/themeisle-sdk/issues", 43 "source": "https://github.com/Codeinwp/themeisle-sdk/tree/v3.3. 49"43 "source": "https://github.com/Codeinwp/themeisle-sdk/tree/v3.3.50" 44 44 }, 45 45 "install-path": "../codeinwp/themeisle-sdk" -
woocommerce-product-addon/tags/33.0.18/vendor/composer/installed.php
r3394835 r3423707 2 2 'root' => array( 3 3 'name' => 'codeinwp/woocommerce-product-addon', 4 'pretty_version' => 'v33.0.1 7',5 'version' => '33.0.1 7.0',6 'reference' => '8 dcdb5105f6d3b89a28fa119d065d7182ead8ca3',4 'pretty_version' => 'v33.0.18', 5 'version' => '33.0.18.0', 6 'reference' => '886709ac767b570a61a631a9a8b05d42a8411cf6', 7 7 'type' => 'project', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'codeinwp/themeisle-sdk' => array( 14 'pretty_version' => '3.3. 49',15 'version' => '3.3. 49.0',16 'reference' => ' 605f78bbbd8526f7597a89077791043d9ecc8c20',14 'pretty_version' => '3.3.50', 15 'version' => '3.3.50.0', 16 'reference' => '3c1f8dfc2390e667bbc086c5d660900a7985efa6', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../codeinwp/themeisle-sdk', … … 21 21 ), 22 22 'codeinwp/woocommerce-product-addon' => array( 23 'pretty_version' => 'v33.0.1 7',24 'version' => '33.0.1 7.0',25 'reference' => '8 dcdb5105f6d3b89a28fa119d065d7182ead8ca3',23 'pretty_version' => 'v33.0.18', 24 'version' => '33.0.18.0', 25 'reference' => '886709ac767b570a61a631a9a8b05d42a8411cf6', 26 26 'type' => 'project', 27 27 'install_path' => __DIR__ . '/../../', -
woocommerce-product-addon/tags/33.0.18/woocommerce-product-addon.php
r3394835 r3423707 4 4 * Plugin URI: https://themeisle.com/plugins/ppom-pro/ 5 5 * Description: PPOM (Personalized Product Meta Manager) plugin allow WooCommerce Store Admin to create unlimited input fields and files to attach with Product Pages. 6 * Version: 33.0.1 76 * Version: 33.0.18 7 7 * Author: Themeisle 8 8 * Text Domain: woocommerce-product-addon … … 29 29 define( 'PPOM_BASENAME', basename( PPOM_WP_PLUGIN_DIR ) ); 30 30 define( 'PPOM_PRODUCT_SLUG', PPOM_BASENAME ); 31 define( 'PPOM_VERSION', '33.0.1 7' );31 define( 'PPOM_VERSION', '33.0.18' ); 32 32 define( 'PPOM_DB_VERSION', '32.0.0' ); 33 33 define( 'PPOM_PRODUCT_META_KEY', '_product_meta_id' ); -
woocommerce-product-addon/trunk/CHANGELOG.md
r3394835 r3423707 1 ##### [Version 33.0.18](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.17...v33.0.18) (2025-12-19) 2 3 - Fixed image upload in image dropdown field 4 - Enhanced security 5 1 6 ##### [Version 33.0.17](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.16...v33.0.17) (2025-11-13) 2 7 -
woocommerce-product-addon/trunk/inc/admin.php
r3394835 r3423707 292 292 global $wpdb; 293 293 294 extract( $_REQUEST );295 296 294 $send_file_attachment = 'NA'; 297 295 $aviary_api_key = 'NA'; 298 296 $show_cart_thumb = 'NA'; 299 297 298 $ppom = array(); 299 $productmeta_id = isset( $_REQUEST['productmeta_id'] ) ? sanitize_text_field( $_REQUEST['productmeta_id'] ) : ''; 300 300 301 if ( is_string( $_REQUEST['ppom'] ) ) { 301 302 $ppom_encoded = $_REQUEST['ppom']; 302 303 parse_str( $ppom_encoded, $ppom_decoded); 303 $ _REQUEST['ppom']= $ppom_decoded['ppom'];304 } 305 306 $ppom_meta = ( isset($_REQUEST['ppom_meta']) ? $_REQUEST['ppom_meta'] : isset($_REQUEST['ppom']) ) ? $_REQUEST['ppom'] : '';304 $ppom = $ppom_decoded['ppom']; 305 } 306 307 $ppom_meta = isset($_REQUEST['ppom_meta']) ? $_REQUEST['ppom_meta'] : $ppom; 307 308 308 309 if ( empty( $ppom_meta ) ) { … … 332 333 $productmeta_style = isset( $_REQUEST['productmeta_style'] ) ? sanitize_text_field( $_REQUEST['productmeta_style'] ) : ''; 333 334 $productmeta_js = isset( $_REQUEST['productmeta_js'] ) ? sanitize_text_field( $_REQUEST['productmeta_js'] ) : ''; 335 $product_id = isset( $_REQUEST['product_id'] ) ? intval( $_REQUEST['product_id'] ) : 0; 334 336 335 337 if ( strlen( $productmeta_name ) > 50 ) { … … 407 409 408 410 409 if ( isset( $_REQUEST['product_id'] ) && $_REQUEST['product_id'] != '') {410 ppom_attach_fields_to_product( $ppom_id, intval( $_REQUEST['product_id'] ));411 if ( ! empty( $product_id ) ) { 412 ppom_attach_fields_to_product( $ppom_id, $product_id ); 411 413 $redirect_to = get_permalink( $product_id ); 412 414 } … … 439 441 440 442 441 $return_page = isset( $_REQUEST['ppom_meta'] ) ? 'ppom-energy' : 'ppom';442 extract( $_REQUEST );443 $return_page = isset( $_REQUEST['ppom_meta'] ) ? 'ppom-energy' : 'ppom'; 444 $productmeta_id = isset( $_REQUEST['productmeta_id'] ) ? sanitize_text_field( $_REQUEST['productmeta_id'] ) : ''; 443 445 444 446 $ppom_args = array( … … 641 643 global $wpdb; 642 644 643 extract( $_REQUEST );645 $productmeta_id = isset( $_REQUEST['productmeta_id'] ) ? sanitize_text_field( $_REQUEST['productmeta_id'] ) : ''; 644 646 645 647 $tbl_name = $wpdb->prefix . PPOM_TABLE_META; -
woocommerce-product-addon/trunk/js/admin/ppom-admin.js
r3394835 r3423707 760 760 var stock_metatype = 'stock'; 761 761 var stock_placeholder = ppom_vars.i18n.stock; 762 let url_field = '<input placeholder="url" type="text" name="ppom[' + field_index + '][' + meta_type + '][' + option_index + '][url]" class="form-control" data-opt-index="' + option_index + '" data-metatype="url" value="">'; 762 763 763 764 // Set name key for imageselect addon … … 780 781 price_placeholder = ppom_vars.i18n.metaIds; 781 782 price_metatype = 'meta_id'; 783 url_field = '<input placeholder="url" type="text" name="ppom[' + field_index + '][' + meta_type + '][' + option_index + '][url]" class="form-control" data-opt-index="' + option_index + '" data-metatype="url" value="">'; 782 784 } 783 785 else { … … 785 787 var condidtion_attr = ''; 786 788 } 787 788 let url_field = '<input placeholder="url" type="text" name="ppom[' + field_index + '][' + meta_type + '][' + option_index + '][url]" class="form-control" data-opt-index="' + option_index + '" data-metatype="url" value="">';789 789 790 790 if (meta.type !== 'image') { -
woocommerce-product-addon/trunk/languages/woocommerce-product-addon.pot
r3394835 r3423707 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-1 1-13T08:27:13+00:00\n"12 "POT-Creation-Date: 2025-12-19T13:31:16+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 889 889 #: backend/settings-panel.class.php:311 890 890 #: classes/admin.class.php:583 891 #: inc/admin.php:63 5891 #: inc/admin.php:637 892 892 msgid "Sorry, you are not allowed to perform this action please try again" 893 893 msgstr "" … … 1044 1044 1045 1045 #: classes/admin.class.php:267 1046 #: inc/admin.php:67 71046 #: inc/admin.php:679 1047 1047 msgid "Sorry, you are not allowed to perform this action" 1048 1048 msgstr "" … … 3696 3696 3697 3697 #: inc/admin.php:271 3698 #: inc/admin.php:45 53698 #: inc/admin.php:457 3699 3699 msgid "Since version 22.0, Database has some changes. Please Deactivate & then activate the PPOM plugin." 3700 3700 msgstr "" 3701 3701 3702 3702 #: inc/admin.php:285 3703 #: inc/admin.php:47 03703 #: inc/admin.php:472 3704 3704 msgid "Sorry, you are not allowed to perform this action." 3705 3705 msgstr "" 3706 3706 3707 #: inc/admin.php:31 03707 #: inc/admin.php:311 3708 3708 msgid "No fields found." 3709 3709 msgstr "" 3710 3710 3711 #: inc/admin.php:33 73712 #: inc/admin.php:50 63711 #: inc/admin.php:339 3712 #: inc/admin.php:508 3713 3713 msgid "PPOM title is too long to save, please make it less than 50 characters." 3714 3714 msgstr "" 3715 3715 3716 #: inc/admin.php:4 183716 #: inc/admin.php:420 3717 3717 msgid "Form added successfully" 3718 3718 msgstr "" 3719 3719 3720 #: inc/admin.php:42 63720 #: inc/admin.php:428 3721 3721 #: inc/rest.class.php:395 3722 3722 msgid "No changes found." 3723 3723 msgstr "" 3724 3724 3725 #: inc/admin.php:5 683725 #: inc/admin.php:570 3726 3726 msgid "Form updated successfully" 3727 3727 msgstr "" 3728 3728 3729 #: inc/admin.php:57 63729 #: inc/admin.php:578 3730 3730 msgid "Form updated successfully." 3731 3731 msgstr "" 3732 3732 3733 #: inc/admin.php:65 43734 #: inc/admin.php:70 53733 #: inc/admin.php:656 3734 #: inc/admin.php:707 3735 3735 msgid "Meta deleted successfully" 3736 3736 msgstr "" 3737 3737 3738 #: inc/admin.php:6 593738 #: inc/admin.php:661 3739 3739 msgid "Error while deleting the PPOM, try again." 3740 3740 msgstr "" 3741 3741 3742 3742 #. translators: %1$s - HTML tag, %2$s - discount, %3$s - HTML tag, %4$s - product name. 3743 #: inc/admin.php:83 73743 #: inc/admin.php:839 3744 3744 #, php-format 3745 3745 msgid "Our biggest sale of the year: %1$sup to %2$s OFF%3$s on %4$s. Don't miss this limited-time offer." … … 3747 3747 3748 3748 #. translators: %1$s - HTML tag, %2$s - discount, %3$s - HTML tag, %4$s - product name. 3749 #: inc/admin.php:84 73749 #: inc/admin.php:849 3750 3750 #, php-format 3751 3751 msgid "Get %1$sup to %2$s off%3$s when you upgrade your %4$s plan or renew early." -
woocommerce-product-addon/trunk/readme.txt
r3423705 r3423707 4 4 Requires at least: 3.5 5 5 Tested up to: 6.9 6 Stable tag: 33.0.1 76 Stable tag: 33.0.18 7 7 License: GPLv2 8 8 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 252 252 == Changelog == 253 253 254 ##### [Version 33.0.17](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.16...v33.0.17) (2025-11-13) 255 254 ##### [Version 33.0.18](https://github.com/Codeinwp/woocommerce-product-addon/compare/v33.0.17...v33.0.18) (2025-12-19) 255 256 - Fixed image upload in image dropdown field 256 257 - Enhanced security 257 - Fixed load of JS script dependencies for latest WooCommerce version258 - Fixed issue with FixedPrice field giving a fatal error when string is used in quantity field259 - Fixed color option overlapping260 258 261 259 -
woocommerce-product-addon/trunk/vendor/codeinwp/themeisle-sdk/CHANGELOG.md
r3379431 r3423707 1 ##### [Version 3.3.50](https://github.com/Codeinwp/themeisle-sdk-main/compare/v3.3.49...v3.3.50) (2025-11-25) 2 3 > Things are getting better every day. 🚀 4 1 5 ##### [Version 3.3.49](https://github.com/Codeinwp/themeisle-sdk-main/compare/v3.3.48...v3.3.49) (2025-09-18) 2 6 -
woocommerce-product-addon/trunk/vendor/codeinwp/themeisle-sdk/load.php
r3379431 r3423707 15 15 } 16 16 // Current SDK version and path. 17 $themeisle_sdk_version = '3.3. 49';17 $themeisle_sdk_version = '3.3.50'; 18 18 $themeisle_sdk_path = dirname( __FILE__ ); 19 19 -
woocommerce-product-addon/trunk/vendor/codeinwp/themeisle-sdk/src/Loader.php
r3379431 r3423707 332 332 */ 333 333 public static function init() { 334 /** 335 * This filter can be used to localize the labels inside each product. 336 */ 337 self::$labels = apply_filters( 'themeisle_sdk_labels', self::$labels ); 334 self::localize_labels(); 338 335 if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Loader ) ) { 339 336 self::$instance = new Loader(); … … 347 344 348 345 add_action( 'themeisle_sdk_first_activation', array( __CLASS__, 'activate' ) ); 349 } 346 347 } 348 } 349 350 /** 351 * Localize the labels. 352 */ 353 public static function localize_labels() { 354 $originals = self::$labels; 355 $all_translations = []; 356 357 global $wp_filter; 358 if ( isset( $wp_filter['themeisle_sdk_labels'] ) ) { 359 foreach ( $wp_filter['themeisle_sdk_labels']->callbacks as $priority => $hooks ) { 360 foreach ( $hooks as $hook ) { 361 // Each callback gets fresh originals, not previous callback's output 362 $result = call_user_func( $hook['function'], $originals ); 363 $all_translations[] = $result; 364 } 365 } 366 367 // Remove the filter so it doesn't run again via apply_filters 368 remove_all_filters( 'themeisle_sdk_labels' ); 369 } 370 371 // Merge all results, first real translation wins 372 self::$labels = self::merge_all_translations( $originals, $all_translations ); 373 } 374 /** 375 * Merge all translations. 376 * 377 * @param array $originals The original labels. 378 * @param array $all_translations The all translations. 379 * 380 * @return array The merged labels. 381 */ 382 private static function merge_all_translations( $originals, $all_translations ) { 383 $result = $originals; 384 385 foreach ( $all_translations as $translations ) { 386 $result = self::merge_if_translated( $result, $translations, $originals ); 387 } 388 389 return $result; 390 } 391 /** 392 * Merge if translated. 393 * 394 * @param array $current The current labels. 395 * @param array $new The new labels. 396 * @param array $originals The original labels. 397 * @return array The merged labels. 398 */ 399 private static function merge_if_translated( $current, $new, $originals ) { 400 foreach ( $new as $key => $value ) { 401 if ( ! isset( $originals[ $key ] ) ) { 402 // New key, accept it 403 if ( ! isset( $current[ $key ] ) ) { 404 $current[ $key ] = $value; 405 } 406 continue; 407 } 408 409 if ( is_array( $value ) && is_array( $originals[ $key ] ) ) { 410 $current[ $key ] = self::merge_if_translated( 411 $current[ $key ], 412 $value, 413 $originals[ $key ] 414 ); 415 } else { 416 // Only accept if: 417 // 1. New value is actually translated (differs from original) 418 // 2. Current value is NOT already translated 419 $is_new_translated = ( $value !== $originals[ $key ] ); 420 $is_current_untranslated = ( $current[ $key ] === $originals[ $key ] ); 421 422 if ( $is_new_translated && $is_current_untranslated ) { 423 $current[ $key ] = $value; 424 } 425 } 426 } 427 428 return $current; 350 429 } 351 430 -
woocommerce-product-addon/trunk/vendor/codeinwp/themeisle-sdk/src/Modules/Announcements.php
r3301441 r3423707 246 246 } 247 247 248 $logo_url = ! empty( $data['logo_url'] ) ? $data['logo_url'] : $this->get_sdk_uri() . 'assets/images/themeisle-logo.png'; 249 $cta_label = ! empty( $data['cta_label'] ) ? $data['cta_label'] : Loader::$labels['announcements']['notice_link_label']; 248 250 $sale_url = ! empty( $data['sale_url'] ) ? $data['sale_url'] : ''; 249 251 $hide_other_notices = ! empty( $data['hide_other_notices'] ) ? $data['hide_other_notices'] : ! $can_dismiss; … … 341 343 <img 342 344 width="45" 343 src="<?php echo esc_url( $ this->get_sdk_uri() . 'assets/images/themeisle-logo.png'); ?>"345 src="<?php echo esc_url( $logo_url ); ?>" 344 346 /> 345 347 </div> … … 361 363 class="button button-primary themeisle-sale-button" 362 364 > 363 <?php echo esc_html( Loader::$labels['announcements']['notice_link_label']); ?>365 <?php echo esc_html( $cta_label ); ?> 364 366 </a> 365 367 </div> -
woocommerce-product-addon/trunk/vendor/composer/installed.json
r3379431 r3423707 3 3 { 4 4 "name": "codeinwp/themeisle-sdk", 5 "version": "3.3. 49",6 "version_normalized": "3.3. 49.0",5 "version": "3.3.50", 6 "version_normalized": "3.3.50.0", 7 7 "source": { 8 8 "type": "git", 9 9 "url": "https://github.com/Codeinwp/themeisle-sdk.git", 10 "reference": " 605f78bbbd8526f7597a89077791043d9ecc8c20"10 "reference": "3c1f8dfc2390e667bbc086c5d660900a7985efa6" 11 11 }, 12 12 "dist": { 13 13 "type": "zip", 14 "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/ 605f78bbbd8526f7597a89077791043d9ecc8c20",15 "reference": " 605f78bbbd8526f7597a89077791043d9ecc8c20",14 "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/3c1f8dfc2390e667bbc086c5d660900a7985efa6", 15 "reference": "3c1f8dfc2390e667bbc086c5d660900a7985efa6", 16 16 "shasum": "" 17 17 }, … … 20 20 "yoast/phpunit-polyfills": "^2.0" 21 21 }, 22 "time": "2025- 09-18T13:41:05+00:00",22 "time": "2025-11-25T19:36:35+00:00", 23 23 "type": "library", 24 24 "installation-source": "dist", … … 41 41 "support": { 42 42 "issues": "https://github.com/Codeinwp/themeisle-sdk/issues", 43 "source": "https://github.com/Codeinwp/themeisle-sdk/tree/v3.3. 49"43 "source": "https://github.com/Codeinwp/themeisle-sdk/tree/v3.3.50" 44 44 }, 45 45 "install-path": "../codeinwp/themeisle-sdk" -
woocommerce-product-addon/trunk/vendor/composer/installed.php
r3394835 r3423707 2 2 'root' => array( 3 3 'name' => 'codeinwp/woocommerce-product-addon', 4 'pretty_version' => 'v33.0.1 7',5 'version' => '33.0.1 7.0',6 'reference' => '8 dcdb5105f6d3b89a28fa119d065d7182ead8ca3',4 'pretty_version' => 'v33.0.18', 5 'version' => '33.0.18.0', 6 'reference' => '886709ac767b570a61a631a9a8b05d42a8411cf6', 7 7 'type' => 'project', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'codeinwp/themeisle-sdk' => array( 14 'pretty_version' => '3.3. 49',15 'version' => '3.3. 49.0',16 'reference' => ' 605f78bbbd8526f7597a89077791043d9ecc8c20',14 'pretty_version' => '3.3.50', 15 'version' => '3.3.50.0', 16 'reference' => '3c1f8dfc2390e667bbc086c5d660900a7985efa6', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../codeinwp/themeisle-sdk', … … 21 21 ), 22 22 'codeinwp/woocommerce-product-addon' => array( 23 'pretty_version' => 'v33.0.1 7',24 'version' => '33.0.1 7.0',25 'reference' => '8 dcdb5105f6d3b89a28fa119d065d7182ead8ca3',23 'pretty_version' => 'v33.0.18', 24 'version' => '33.0.18.0', 25 'reference' => '886709ac767b570a61a631a9a8b05d42a8411cf6', 26 26 'type' => 'project', 27 27 'install_path' => __DIR__ . '/../../', -
woocommerce-product-addon/trunk/woocommerce-product-addon.php
r3394835 r3423707 4 4 * Plugin URI: https://themeisle.com/plugins/ppom-pro/ 5 5 * Description: PPOM (Personalized Product Meta Manager) plugin allow WooCommerce Store Admin to create unlimited input fields and files to attach with Product Pages. 6 * Version: 33.0.1 76 * Version: 33.0.18 7 7 * Author: Themeisle 8 8 * Text Domain: woocommerce-product-addon … … 29 29 define( 'PPOM_BASENAME', basename( PPOM_WP_PLUGIN_DIR ) ); 30 30 define( 'PPOM_PRODUCT_SLUG', PPOM_BASENAME ); 31 define( 'PPOM_VERSION', '33.0.1 7' );31 define( 'PPOM_VERSION', '33.0.18' ); 32 32 define( 'PPOM_DB_VERSION', '32.0.0' ); 33 33 define( 'PPOM_PRODUCT_META_KEY', '_product_meta_id' );
Note: See TracChangeset
for help on using the changeset viewer.