Changeset 3173781
- Timestamp:
- 10/22/2024 03:39:43 PM (15 months ago)
- Location:
- ti-woocommerce-wishlist
- Files:
-
- 295 added
- 18 edited
-
tags/2.9.1 (added)
-
tags/2.9.1/admin (added)
-
tags/2.9.1/admin/base.helper.php (added)
-
tags/2.9.1/admin/basesection.helper.php (added)
-
tags/2.9.1/admin/basestyle.helper.php (added)
-
tags/2.9.1/admin/index.php (added)
-
tags/2.9.1/admin/notices.class.php (added)
-
tags/2.9.1/admin/settings (added)
-
tags/2.9.1/admin/settings/general.class.php (added)
-
tags/2.9.1/admin/settings/index.php (added)
-
tags/2.9.1/admin/settings/integrations.class.php (added)
-
tags/2.9.1/admin/settings/settings.class.php (added)
-
tags/2.9.1/admin/settings/style.class.php (added)
-
tags/2.9.1/admin/settings/upgrade.class.php (added)
-
tags/2.9.1/admin/tinvwl.class.php (added)
-
tags/2.9.1/admin/wishlist.class.php (added)
-
tags/2.9.1/assets (added)
-
tags/2.9.1/assets/css (added)
-
tags/2.9.1/assets/css/admin-form-rtl.css (added)
-
tags/2.9.1/assets/css/admin-form-rtl.css.map (added)
-
tags/2.9.1/assets/css/admin-form-rtl.min.css (added)
-
tags/2.9.1/assets/css/admin-form.css (added)
-
tags/2.9.1/assets/css/admin-form.css.map (added)
-
tags/2.9.1/assets/css/admin-form.min.css (added)
-
tags/2.9.1/assets/css/admin-rtl.css (added)
-
tags/2.9.1/assets/css/admin-rtl.css.map (added)
-
tags/2.9.1/assets/css/admin-rtl.min.css (added)
-
tags/2.9.1/assets/css/admin-setup-rtl.css (added)
-
tags/2.9.1/assets/css/admin-setup-rtl.css.map (added)
-
tags/2.9.1/assets/css/admin-setup-rtl.min.css (added)
-
tags/2.9.1/assets/css/admin-setup.css (added)
-
tags/2.9.1/assets/css/admin-setup.css.map (added)
-
tags/2.9.1/assets/css/admin-setup.min.css (added)
-
tags/2.9.1/assets/css/admin.css (added)
-
tags/2.9.1/assets/css/admin.css.map (added)
-
tags/2.9.1/assets/css/admin.min.css (added)
-
tags/2.9.1/assets/css/public-rtl.css (added)
-
tags/2.9.1/assets/css/public-rtl.css.map (added)
-
tags/2.9.1/assets/css/public-rtl.min.css (added)
-
tags/2.9.1/assets/css/public.css (added)
-
tags/2.9.1/assets/css/public.css.map (added)
-
tags/2.9.1/assets/css/public.min.css (added)
-
tags/2.9.1/assets/css/theme-rtl.css (added)
-
tags/2.9.1/assets/css/theme-rtl.css.map (added)
-
tags/2.9.1/assets/css/theme-rtl.min.css (added)
-
tags/2.9.1/assets/css/theme.css (added)
-
tags/2.9.1/assets/css/theme.css.map (added)
-
tags/2.9.1/assets/css/theme.min.css (added)
-
tags/2.9.1/assets/css/webfont-rtl.css (added)
-
tags/2.9.1/assets/css/webfont-rtl.css.map (added)
-
tags/2.9.1/assets/css/webfont-rtl.min.css (added)
-
tags/2.9.1/assets/css/webfont.css (added)
-
tags/2.9.1/assets/css/webfont.css.map (added)
-
tags/2.9.1/assets/css/webfont.min.css (added)
-
tags/2.9.1/assets/fonts (added)
-
tags/2.9.1/assets/fonts/tinvwl-webfont.eot (added)
-
tags/2.9.1/assets/fonts/tinvwl-webfont.svg (added)
-
tags/2.9.1/assets/fonts/tinvwl-webfont.ttf (added)
-
tags/2.9.1/assets/fonts/tinvwl-webfont.woff (added)
-
tags/2.9.1/assets/fonts/tinvwl-webfont.woff2 (added)
-
tags/2.9.1/assets/img (added)
-
tags/2.9.1/assets/img/admin-rescue.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/admin-update.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/chevron_down.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/chevron_icon.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/color_icon.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/cyber_monday.png (added)
-
tags/2.9.1/assets/img/heart-tinv.svg (added)
-
tags/2.9.1/assets/img/icon_menu.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/logo_heart.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/money-back.svg (added)
-
tags/2.9.1/assets/img/premium_logo.png (added)
-
tags/2.9.1/assets/img/select_caret.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/select_caret_t.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/wishlists_table.png (added)
-
tags/2.9.1/assets/img/wizard_logo.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/img/wizard_setup.png (added)
-
tags/2.9.1/assets/img/[email protected] (added)
-
tags/2.9.1/assets/js (added)
-
tags/2.9.1/assets/js/admin.js (added)
-
tags/2.9.1/assets/js/admin.min.js (added)
-
tags/2.9.1/assets/js/blocks.js (added)
-
tags/2.9.1/assets/js/bootstrap.js (added)
-
tags/2.9.1/assets/js/bootstrap.min.js (added)
-
tags/2.9.1/assets/js/clipboard.min.js (added)
-
tags/2.9.1/assets/js/editor.js (added)
-
tags/2.9.1/assets/js/public.js (added)
-
tags/2.9.1/assets/js/public.min.js (added)
-
tags/2.9.1/includes (added)
-
tags/2.9.1/includes/activator.class.php (added)
-
tags/2.9.1/includes/analytics.class.php (added)
-
tags/2.9.1/includes/api (added)
-
tags/2.9.1/includes/api.class.php (added)
-
tags/2.9.1/includes/api/wishlist.class.php (added)
-
tags/2.9.1/includes/deprecated (added)
-
tags/2.9.1/includes/deprecated.class.php (added)
-
tags/2.9.1/includes/deprecated/actions.class.php (added)
-
tags/2.9.1/includes/deprecated/filters.class.php (added)
-
tags/2.9.1/includes/export.class.php (added)
-
tags/2.9.1/includes/form.helper.php (added)
-
tags/2.9.1/includes/index.php (added)
-
tags/2.9.1/includes/pluginextend.helper.php (added)
-
tags/2.9.1/includes/product (added)
-
tags/2.9.1/includes/product.helper.php (added)
-
tags/2.9.1/includes/product/index.php (added)
-
tags/2.9.1/includes/product/legacy.class.php (added)
-
tags/2.9.1/includes/product/local.class.php (added)
-
tags/2.9.1/includes/tinvwl.class.php (added)
-
tags/2.9.1/includes/update.helper.php (added)
-
tags/2.9.1/includes/view.helper.php (added)
-
tags/2.9.1/includes/viewsection.helper.php (added)
-
tags/2.9.1/includes/wishlist.class.php (added)
-
tags/2.9.1/includes/wizard.class.php (added)
-
tags/2.9.1/includes/wizardsetup.helper.php (added)
-
tags/2.9.1/index.php (added)
-
tags/2.9.1/integrations (added)
-
tags/2.9.1/integrations/advanced-product-fields-for-woocommerce-pro.php (added)
-
tags/2.9.1/integrations/advanced-product-fields-for-woocommerce.php (added)
-
tags/2.9.1/integrations/automatewoo (added)
-
tags/2.9.1/integrations/automatewoo.php (added)
-
tags/2.9.1/integrations/automatewoo/trigger-wishlist-item-added-to-cart.php (added)
-
tags/2.9.1/integrations/automatewoo/trigger-wishlist-item-added.php (added)
-
tags/2.9.1/integrations/automatewoo/trigger-wishlist-item-purchased.php (added)
-
tags/2.9.1/integrations/automatewoo/trigger-wishlist-item-removed.php (added)
-
tags/2.9.1/integrations/automatewoo/trigger-wishlist-reminder.php (added)
-
tags/2.9.1/integrations/automatewoo/wishlist.class.php (added)
-
tags/2.9.1/integrations/buy-now-button-for-woocommerce.php (added)
-
tags/2.9.1/integrations/check-pincodezipcode-for-shipping-woocommerce.php (added)
-
tags/2.9.1/integrations/cleantalk-spam-protect.php (added)
-
tags/2.9.1/integrations/clever-swatches.php (added)
-
tags/2.9.1/integrations/comet-cache.php (added)
-
tags/2.9.1/integrations/duracelltomi-google-tag-manager.php (added)
-
tags/2.9.1/integrations/elex-woocommerce-catalog-mode.php (added)
-
tags/2.9.1/integrations/gift-cards-for-woocommerce.php (added)
-
tags/2.9.1/integrations/hide-price-add-to-cart-button.php (added)
-
tags/2.9.1/integrations/honeypot.php (added)
-
tags/2.9.1/integrations/improved-variable-product-attributes.php (added)
-
tags/2.9.1/integrations/ione360-configurator.php (added)
-
tags/2.9.1/integrations/litespeed-cache.php (added)
-
tags/2.9.1/integrations/mycred.php (added)
-
tags/2.9.1/integrations/nasa-core.php (added)
-
tags/2.9.1/integrations/product-extras-for-woocommerce.php (added)
-
tags/2.9.1/integrations/product-quantity-for-woocommerce.php (added)
-
tags/2.9.1/integrations/pw-woocommerce-gift-cards.php (added)
-
tags/2.9.1/integrations/shopengine.php (added)
-
tags/2.9.1/integrations/show-single-variations.php (added)
-
tags/2.9.1/integrations/sitepress-multilingual-cms.php (added)
-
tags/2.9.1/integrations/theme-divi.php (added)
-
tags/2.9.1/integrations/theme-flatsome.php (added)
-
tags/2.9.1/integrations/theme-kallyas.php (added)
-
tags/2.9.1/integrations/theme-oceanwp.php (added)
-
tags/2.9.1/integrations/uni-woo-custom-product-options.php (added)
-
tags/2.9.1/integrations/vad-product-design.php (added)
-
tags/2.9.1/integrations/wc-fields-factory.php (added)
-
tags/2.9.1/integrations/woo-advanced-qty.php (added)
-
tags/2.9.1/integrations/woo-custom-product-addons.php (added)
-
tags/2.9.1/integrations/woo-extra-product-options.php (added)
-
tags/2.9.1/integrations/woo-payment-gateway.php (added)
-
tags/2.9.1/integrations/woo-product-bundle.php (added)
-
tags/2.9.1/integrations/woo-variation-swatches-pro.php (added)
-
tags/2.9.1/integrations/woo-variations-table-grid.php (added)
-
tags/2.9.1/integrations/woocommerce-booking.php (added)
-
tags/2.9.1/integrations/woocommerce-bookings.php (added)
-
tags/2.9.1/integrations/woocommerce-composite-products.php (added)
-
tags/2.9.1/integrations/woocommerce-custom-fields.php (added)
-
tags/2.9.1/integrations/woocommerce-fast-cart.php (added)
-
tags/2.9.1/integrations/woocommerce-gravityforms-product-addons.php (added)
-
tags/2.9.1/integrations/woocommerce-mix-and-match-products.php (added)
-
tags/2.9.1/integrations/woocommerce-multilingual.php (added)
-
tags/2.9.1/integrations/woocommerce-product-addon.php (added)
-
tags/2.9.1/integrations/woocommerce-product-addons.php (added)
-
tags/2.9.1/integrations/woocommerce-product-bundles.php (added)
-
tags/2.9.1/integrations/woocommerce-product-table.php (added)
-
tags/2.9.1/integrations/woocommerce-rental-and-booking.php (added)
-
tags/2.9.1/integrations/woocommerce-square.php (added)
-
tags/2.9.1/integrations/woocommerce-tm-extra-product-options.php (added)
-
tags/2.9.1/integrations/woocommerce-waitlist.php (added)
-
tags/2.9.1/integrations/wp-fastest-cache.php (added)
-
tags/2.9.1/integrations/wp-grid-builder.php (added)
-
tags/2.9.1/integrations/wp-multilang.php (added)
-
tags/2.9.1/integrations/wp-rocket.php (added)
-
tags/2.9.1/integrations/wpc-variations-radio-buttons.php (added)
-
tags/2.9.1/integrations/yith-woocommerce-product-add-ons.php (added)
-
tags/2.9.1/integrations/yith-woocommerce-product-bundles.php (added)
-
tags/2.9.1/integrations/yith-woocommerce-quick-view.php (added)
-
tags/2.9.1/languages (added)
-
tags/2.9.1/languages/ti-woocommerce-wishlist.pot (added)
-
tags/2.9.1/public (added)
-
tags/2.9.1/public/addtowishlist.class.php (added)
-
tags/2.9.1/public/cart.class.php (added)
-
tags/2.9.1/public/index.php (added)
-
tags/2.9.1/public/tinvwl.class.php (added)
-
tags/2.9.1/public/widget (added)
-
tags/2.9.1/public/widget/index.php (added)
-
tags/2.9.1/public/widget/wishlistcounter.class.php (added)
-
tags/2.9.1/public/wishlist (added)
-
tags/2.9.1/public/wishlist/ajax.class.php (added)
-
tags/2.9.1/public/wishlist/buttons.class.php (added)
-
tags/2.9.1/public/wishlist/index.php (added)
-
tags/2.9.1/public/wishlist/social.class.php (added)
-
tags/2.9.1/public/wishlist/view.class.php (added)
-
tags/2.9.1/public/wishlistcounter.class.php (added)
-
tags/2.9.1/readme.txt (added)
-
tags/2.9.1/templates (added)
-
tags/2.9.1/templates/ti-addedtowishlist-dialogbox.php (added)
-
tags/2.9.1/templates/ti-addtowishlist.php (added)
-
tags/2.9.1/templates/ti-wishlist-empty.php (added)
-
tags/2.9.1/templates/ti-wishlist-header.php (added)
-
tags/2.9.1/templates/ti-wishlist-item-data.php (added)
-
tags/2.9.1/templates/ti-wishlist-null.php (added)
-
tags/2.9.1/templates/ti-wishlist-product-counter.php (added)
-
tags/2.9.1/templates/ti-wishlist-social.php (added)
-
tags/2.9.1/templates/ti-wishlist-user.php (added)
-
tags/2.9.1/templates/ti-wishlist.php (added)
-
tags/2.9.1/ti-woocommerce-wishlist.php (added)
-
tags/2.9.1/tinv-wishlists-function.php (added)
-
tags/2.9.1/vendor (added)
-
tags/2.9.1/vendor/autoload.php (added)
-
tags/2.9.1/vendor/composer (added)
-
tags/2.9.1/vendor/composer/ClassLoader.php (added)
-
tags/2.9.1/vendor/composer/InstalledVersions.php (added)
-
tags/2.9.1/vendor/composer/LICENSE (added)
-
tags/2.9.1/vendor/composer/autoload_classmap.php (added)
-
tags/2.9.1/vendor/composer/autoload_namespaces.php (added)
-
tags/2.9.1/vendor/composer/autoload_psr4.php (added)
-
tags/2.9.1/vendor/composer/autoload_real.php (added)
-
tags/2.9.1/vendor/composer/autoload_static.php (added)
-
tags/2.9.1/vendor/composer/installed.json (added)
-
tags/2.9.1/vendor/composer/installed.php (added)
-
tags/2.9.1/vendor/composer/platform_check.php (added)
-
tags/2.9.1/vendor/imangazaliev (added)
-
tags/2.9.1/vendor/imangazaliev/didom (added)
-
tags/2.9.1/vendor/imangazaliev/didom/CHANGELOG.md (added)
-
tags/2.9.1/vendor/imangazaliev/didom/LICENSE (added)
-
tags/2.9.1/vendor/imangazaliev/didom/README-RU.md (added)
-
tags/2.9.1/vendor/imangazaliev/didom/README.md (added)
-
tags/2.9.1/vendor/imangazaliev/didom/composer.json (added)
-
tags/2.9.1/vendor/imangazaliev/didom/composer.lock (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/ClassAttribute.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Document.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/DocumentFragment.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Element.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Encoder.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Errors.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Exceptions (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Exceptions/InvalidSelectorException.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Node.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/Query.php (added)
-
tags/2.9.1/vendor/imangazaliev/didom/src/DiDom/StyleAttribute.php (added)
-
tags/2.9.1/views (added)
-
tags/2.9.1/views/admin (added)
-
tags/2.9.1/views/admin/export-import-settings.php (added)
-
tags/2.9.1/views/admin/index.php (added)
-
tags/2.9.1/views/admin/premium-features.php (added)
-
tags/2.9.1/views/admin/templates-status.php (added)
-
tags/2.9.1/views/admin/wishlists.php (added)
-
tags/2.9.1/views/general.php (added)
-
tags/2.9.1/views/header.php (added)
-
tags/2.9.1/views/index.php (added)
-
tags/2.9.1/views/message.php (added)
-
tags/2.9.1/views/null.php (added)
-
tags/2.9.1/views/section-field-html.php (added)
-
tags/2.9.1/views/section-field-style.php (added)
-
tags/2.9.1/views/section-field.php (added)
-
tags/2.9.1/views/section-general.php (added)
-
tags/2.9.1/views/section-group-style-e.php (added)
-
tags/2.9.1/views/section-group-style.php (added)
-
tags/2.9.1/views/section-group.php (added)
-
tags/2.9.1/views/section-infoblock.php (added)
-
tags/2.9.1/views/wizard (added)
-
tags/2.9.1/views/wizard/finish.php (added)
-
tags/2.9.1/views/wizard/footer.php (added)
-
tags/2.9.1/views/wizard/header.php (added)
-
tags/2.9.1/views/wizard/index.php (added)
-
tags/2.9.1/views/wizard/intro.php (added)
-
tags/2.9.1/views/wizard/step-button.php (added)
-
tags/2.9.1/views/wizard/step-page-field.php (added)
-
tags/2.9.1/views/wizard/step-page.php (added)
-
tags/2.9.1/views/wizard/step-processing.php (added)
-
tags/2.9.1/views/wizard/step-social.php (added)
-
tags/2.9.1/views/wizard/step-support.php (added)
-
tags/2.9.1/wpm-config.json (added)
-
tags/2.9.1/wpml-config.xml (added)
-
trunk/assets/css/admin-form-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/admin-form.min.css (modified) (1 diff)
-
trunk/assets/css/admin-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/admin-setup-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/admin-setup.min.css (modified) (1 diff)
-
trunk/assets/css/admin.min.css (modified) (1 diff)
-
trunk/assets/css/public-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/public.min.css (modified) (1 diff)
-
trunk/assets/css/theme-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/theme.min.css (modified) (1 diff)
-
trunk/assets/css/webfont-rtl.min.css (modified) (1 diff)
-
trunk/assets/css/webfont.min.css (modified) (1 diff)
-
trunk/assets/js/admin.min.js (modified) (1 diff)
-
trunk/assets/js/public.min.js (modified) (1 diff)
-
trunk/languages/ti-woocommerce-wishlist.pot (modified) (2 diffs)
-
trunk/public/addtowishlist.class.php (modified) (7 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/ti-woocommerce-wishlist.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ti-woocommerce-wishlist/trunk/assets/css/admin-form-rtl.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-form.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-rtl.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-setup-rtl.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin-setup.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/admin.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/public-rtl.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/public.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/theme-rtl.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/theme.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/webfont-rtl.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/css/webfont.min.css
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/js/admin.min.js
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/assets/js/public.min.js
r3167298 r3173781 1 1 /** 2 2 * TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free. 3 * @version 2.9. 03 * @version 2.9.1 4 4 * @link https://wordpress.org/plugins/ti-woocommerce-wishlist/ 5 5 */ -
ti-woocommerce-wishlist/trunk/languages/ti-woocommerce-wishlist.pot
r3167298 r3173781 1 # Copyright (C) 2024 TI WooCommerce Wishlist Plugin - 2.9. 02 # This file is distributed under the same license as the TI WooCommerce Wishlist Plugin - 2.9. 0package.1 # Copyright (C) 2024 TI WooCommerce Wishlist Plugin - 2.9.1 2 # This file is distributed under the same license as the TI WooCommerce Wishlist Plugin - 2.9.1 package. 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: TI WooCommerce Wishlist Plugin - 2.9. 0\n"5 "Project-Id-Version: TI WooCommerce Wishlist Plugin - 2.9.1\n" 6 6 "MIME-Version: 1.0\n" 7 7 "Content-Type: text/plain; charset=UTF-8\n" … … 9 9 "Language-Team: TemplateInvaders (https://templateinvaders.com/)\n" 10 10 "Last-Translator: TemplateInvaders (https://templateinvaders.com/)\n" 11 "POT-Creation-Date: 2024-10- 11 17:26+0000\n"11 "POT-Creation-Date: 2024-10-22 15:30+0000\n" 12 12 "Report-Msgid-Bugs-To: https://templateinvaders.com/help/\n" 13 13 "X-Poedit-Basepath: ..\n" -
ti-woocommerce-wishlist/trunk/public/addtowishlist.class.php
r3167298 r3173781 438 438 439 439 /** 440 * @param $share_key440 * @param string $share_key 441 441 * 442 442 * @return array 443 443 */ 444 444 function get_wishlists_data( $share_key ) { 445 446 445 global $wpdb; 447 446 448 $table = sprintf( '%s%s', $wpdb->prefix, 'tinvwl_items' ); 449 $table_lists = sprintf( '%s%s', $wpdb->prefix, 'tinvwl_lists' ); 450 $table_stats = sprintf( '%s%s', $wpdb->prefix, 'tinvwl_analytics' ); 451 $table_translations = sprintf( '%s%s', $wpdb->prefix, 'icl_translations' ); 452 $table_languages = sprintf( '%s%s', $wpdb->prefix, 'icl_languages' ); 453 $lang = filter_input( INPUT_POST, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); 454 $lang_default = filter_input( INPUT_POST, 'lang_default', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); 455 $stats = filter_input( INPUT_POST, 'stats', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); 447 $table = $wpdb->prefix . 'tinvwl_items'; 448 $table_lists = $wpdb->prefix . 'tinvwl_lists'; 449 $table_stats = $wpdb->prefix . 'tinvwl_analytics'; 450 $table_translations = $wpdb->prefix . 'icl_translations'; 451 $table_languages = $wpdb->prefix . 'icl_languages'; 452 453 // Sanitize inputs 454 $lang = sanitize_text_field( filter_input( INPUT_POST, 'lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS ) ); 455 $lang_default = sanitize_text_field( filter_input( INPUT_POST, 'lang_default', FILTER_SANITIZE_FULL_SPECIAL_CHARS ) ); 456 $stats = sanitize_text_field( filter_input( INPUT_POST, 'stats', FILTER_SANITIZE_FULL_SPECIAL_CHARS ) ); 457 $share_key = sanitize_text_field( $share_key ); 456 458 457 459 $data = $products = $wishlists = $results = $analytics = array(); … … 462 464 463 465 if ( ( isset( $data['author'] ) && $data['author'] ) || $share_key ) { 464 465 466 $default = array( 466 467 'count' => 99999, … … 473 474 ); 474 475 476 // Validate order and order_by parameters 477 $allowed_orders = array( 'ASC', 'DESC' ); 478 $allowed_order_by_fields = array( 'date', 'title', 'ID' ); // Add other allowed fields 479 475 480 foreach ( $default as $_k => $_v ) { 476 481 if ( array_key_exists( $_k, $data ) ) { … … 480 485 } 481 486 487 // Sanitize order parameters 488 $default['order'] = in_array( strtoupper( $default['order'] ), $allowed_orders ) ? strtoupper( $default['order'] ) : 'DESC'; 489 $default['order_by'] = in_array( $default['order_by'], $allowed_order_by_fields ) ? $default['order_by'] : 'date'; 490 482 491 $default['offset'] = absint( $default['offset'] ); 483 492 $default['count'] = absint( $default['count'] ); 484 493 494 // Build the base SELECT clause 485 495 if ( $lang ) { 486 $default['field'] = $table . '.ID, t.element_id AS product_id, t2.element_id AS variation_id, ' . $table . '.formdata,' . $table . '.author,' . $table . '.date,' . $table . '.quantity,' . $table . '.price,' . $table . '.in_stock,'; 496 $select_fields = "{$table}.ID, t.element_id AS product_id, t2.element_id AS variation_id, 497 {$table}.formdata, {$table}.author, {$table}.date, {$table}.quantity, 498 {$table}.price, {$table}.in_stock"; 487 499 } else { 488 $default['field'] = $table . '.*, '; 489 } 490 491 $default['field'] .= $table_lists . '.ID as wishlist_id, ' . $table_lists . '.status as wishlist_status, ' . $table_lists . '.title as wishlist_title, ' . $table_lists . '.share_key as wishlist_share_key'; 492 493 $sql = "SELECT {$default[ 'field' ]} FROM `{$table}` INNER JOIN `{$table_lists}` ON `{$table}`.`wishlist_id` = `{$table_lists}`.`ID` AND `{$table_lists}`.`type` = 'default'"; 494 500 $select_fields = "{$table}.*"; 501 } 502 503 // Add the wishlist fields to the SELECT clause 504 $select_fields .= ", {$table_lists}.ID as wishlist_id, {$table_lists}.status as wishlist_status, 505 {$table_lists}.title as wishlist_title, {$table_lists}.share_key as wishlist_share_key"; 506 507 // Build base query 508 $sql = "SELECT {$select_fields} 509 FROM {$table} 510 INNER JOIN {$table_lists} ON {$table}.wishlist_id = {$table_lists}.ID 511 AND {$table_lists}.type = 'default'"; 512 513 // Add share key condition if present 495 514 if ( $share_key ) { 496 $sql .= " AND `{$table_lists}`.`share_key` = '{$share_key}'"; 497 } 515 $sql .= $wpdb->prepare( " AND {$table_lists}.share_key = %s", $share_key ); 516 } 517 518 // Add language joins if needed 498 519 if ( $lang ) { 520 $language_conditions = array( $lang ); 499 521 if ( $lang_default ) { 500 $languages = sprintf( "'%s'", implode( "', '", array( $lang, $lang_default ) ) ); 501 } else { 502 $languages = "'" . $lang . "'"; 503 } 504 505 $sql .= "LEFT JOIN {$table_translations} tr ON 506 {$table}.product_id = tr.element_id AND tr.element_type = 'post_product' 507 LEFT JOIN {$table_translations} tr2 ON 508 {$table}.variation_id != 0 AND {$table}.variation_id = tr2.element_id AND tr2.element_type = 'post_product_variation' 509 LEFT JOIN {$table_translations} t ON 510 tr.trid = t.trid AND t.element_type = 'post_product' AND t.language_code IN ({$languages}) 511 LEFT JOIN {$table_translations} t2 ON 512 {$table}.variation_id != 0 AND tr2.trid = t2.trid AND t2.element_type = 'post_product_variation' AND t2.language_code IN ({$languages}) 513 JOIN {$table_languages} l ON 514 ( 515 t.language_code = l.code OR t2.language_code = l.code 516 ) AND l.active = 1"; 517 } 518 $where = '1'; 519 522 $language_conditions[] = $lang_default; 523 } 524 525 $languages_in = "'" . implode( "','", array_map( 'esc_sql', $language_conditions ) ) . "'"; 526 527 $sql .= " LEFT JOIN {$table_translations} tr ON 528 {$table}.product_id = tr.element_id AND tr.element_type = 'post_product' 529 LEFT JOIN {$table_translations} tr2 ON 530 {$table}.variation_id != 0 AND {$table}.variation_id = tr2.element_id 531 AND tr2.element_type = 'post_product_variation' 532 LEFT JOIN {$table_translations} t ON 533 tr.trid = t.trid AND t.element_type = 'post_product' 534 AND t.language_code IN ({$languages_in}) 535 LEFT JOIN {$table_translations} t2 ON 536 {$table}.variation_id != 0 AND tr2.trid = t2.trid 537 AND t2.element_type = 'post_product_variation' 538 AND t2.language_code IN ({$languages_in}) 539 JOIN {$table_languages} l ON 540 (t.language_code = l.code OR t2.language_code = l.code) AND l.active = 1"; 541 } 542 543 // Build WHERE clause 544 $where_conditions = array( '1=1' ); 520 545 if ( ! empty( $data ) && is_array( $data ) ) { 521 522 if ( array_key_exists( 'meta', $data ) ) { 523 $product_id = $variation_id = 0; 524 if ( array_key_exists( 'product_id', $data ) ) { 525 $product_id = $data['product_id']; 546 foreach ( $data as $field => $value ) { 547 if ( is_array( $value ) ) { 548 $placeholders = array_fill( 0, count( $value ), '%s' ); 549 $where_conditions[] = $wpdb->prepare( 550 "{$table}.{$field} IN (" . implode( ',', $placeholders ) . ")", 551 $value 552 ); 553 } else { 554 $where_conditions[] = $wpdb->prepare( 555 "{$table}.{$field} = %s", 556 $value 557 ); 526 558 } 527 if ( array_key_exists( 'variation_id', $data ) ) { 528 $variation_id = $data['variation_id']; 529 } 530 $data['formdata'] = ''; 531 unset( $data['meta'] ); 532 } 533 534 foreach ( $data as $f => $v ) { 535 $s = is_array( $v ) ? ' IN ' : '='; 536 if ( is_array( $v ) ) { 537 foreach ( $v as $_f => $_v ) { 538 $v[ $_f ] = $wpdb->prepare( '%s', $_v ); 539 } 540 $v = implode( ',', $v ); 541 $v = "($v)"; 542 } else { 543 $v = $wpdb->prepare( '%s', $v ); 544 } 545 $data[ $f ] = sprintf( $table . '.' . '`%s`%s%s', $f, $s, $v ); 546 } 547 548 $where = implode( ' AND ', $data ); 549 550 $sql .= ' WHERE ' . $where; 551 } 552 553 $sql .= sprintf( ' GROUP BY `%s`.ID ORDER BY `%s` %s LIMIT %d,%d;', $table, $default['order_by'], $default['order'], $default['offset'], $default['count'] ); 554 555 if ( ! empty( $default['sql'] ) ) { 556 $replacer = $replace = array(); 557 $replace[0] = '{table}'; 558 $replacer[0] = $table; 559 $replace[1] = '{where}'; 560 $replacer[1] = $where; 561 562 foreach ( $default as $key => $value ) { 563 $i = count( $replace ); 564 565 $replace[ $i ] = '{' . $key . '}'; 566 $replacer[ $i ] = $value; 567 } 568 569 $sql = str_replace( $replace, $replacer, $default['sql'] ); 570 } 571 559 } 560 } 561 562 $sql .= " WHERE " . implode( ' AND ', $where_conditions ); 563 564 // Add GROUP BY, ORDER BY, and LIMIT 565 $sql .= " GROUP BY {$table}.ID"; 566 $sql .= " ORDER BY {$default['order_by']} {$default['order']}"; 567 $sql .= $wpdb->prepare( " LIMIT %d, %d", $default['offset'], $default['count'] ); 568 569 // Execute query 572 570 $results = $wpdb->get_results( $sql, ARRAY_A ); 573 571 572 // Process results 574 573 if ( ! empty( $results ) ) { 575 574 foreach ( $results as $product ) { 576 575 $wishlists[ $product['wishlist_id'] ] = array( 577 576 'ID' => (int) $product['wishlist_id'], 578 'title' => $product['wishlist_title'],579 'status' => $product['wishlist_status'],580 'share_key' => $product['wishlist_share_key'],577 'title' => sanitize_text_field( $product['wishlist_title'] ), 578 'status' => sanitize_text_field( $product['wishlist_status'] ), 579 'share_key' => sanitize_text_field( $product['wishlist_share_key'] ), 581 580 ); 582 583 581 } 584 582 585 583 foreach ( $wishlists as $wishlist ) { 586 587 584 foreach ( $results as $product ) { 588 589 585 if ( (int) $wishlist['ID'] !== (int) $product['wishlist_id'] ) { 590 586 continue; … … 597 593 $products[ $product['product_id'] ][ $wishlist['ID'] ]['in'][] = (int) $product['variation_id']; 598 594 } 599 600 595 } 601 596 } 602 597 } 603 604 } 605 598 } 599 600 // Handle statistics query 606 601 if ( $stats ) { 607 602 $stats_count = 0; 608 603 $analytics = array(); 609 $stats_sql = "SELECT `A`.`product_id`, `A`.`variation_id`, COUNT(`B`.`ID`) AS `count` FROM `{$table_stats}` AS `A` LEFT JOIN `{$table}` AS `C` ON `C`.`wishlist_id` = `A`.`wishlist_id` AND `C`.`product_id` = `A`.`product_id` AND `C`.`variation_id` = `A`.`variation_id` LEFT JOIN `{$table_lists}` AS `B` ON `C`.`wishlist_id` = `B`.`ID` LEFT JOIN `{$table_lists}` AS `G` ON `C`.`wishlist_id` = `G`.`ID` AND `G`.`author` = 0 WHERE `A`.`product_id` > 0 GROUP BY `A`.`product_id`, `A`.`variation_id` HAVING `count` > 0 LIMIT 0, 9999999"; 604 605 $stats_sql = "SELECT A.product_id, A.variation_id, COUNT(B.ID) AS count 606 FROM {$table_stats} AS A 607 LEFT JOIN {$table} AS C ON C.wishlist_id = A.wishlist_id 608 AND C.product_id = A.product_id 609 AND C.variation_id = A.variation_id 610 LEFT JOIN {$table_lists} AS B ON C.wishlist_id = B.ID 611 LEFT JOIN {$table_lists} AS G ON C.wishlist_id = G.ID AND G.author = 0 612 WHERE A.product_id > 0 613 GROUP BY A.product_id, A.variation_id 614 HAVING count > 0 615 LIMIT 0, 9999999"; 610 616 611 617 $stats_results = $wpdb->get_results( $stats_sql, ARRAY_A ); … … 613 619 if ( ! empty( $stats_results ) ) { 614 620 foreach ( $stats_results as $product_stats ) { 615 $analytics[ $product_stats['product_id'] ][ $product_stats['variation_id'] ] = $product_stats['count'];616 $stats_count = $stats_count +$product_stats['count'];621 $analytics[ $product_stats['product_id'] ][ $product_stats['variation_id'] ] = (int) $product_stats['count']; 622 $stats_count += (int) $product_stats['count']; 617 623 } 618 624 } … … 627 633 628 634 if ( $lang ) { 629 $response['lang'] = $lang;635 $response['lang'] = sanitize_text_field( $lang ); 630 636 } 631 637 632 638 if ( $lang_default ) { 633 $response['lang_default'] = $lang_default;639 $response['lang_default'] = sanitize_text_field( $lang_default ); 634 640 } 635 641 636 642 if ( $stats ) { 637 643 $response['stats'] = $analytics; 638 $response['stats_count'] = $stats_count;644 $response['stats_count'] = (int) $stats_count; 639 645 } 640 646 -
ti-woocommerce-wishlist/trunk/readme.txt
r3167298 r3173781 4 4 Requires at least: 6.1 5 5 Tested up to: 6.6 6 Stable tag: 2.9. 06 Stable tag: 2.9.1 7 7 Requires PHP: 7.4 8 8 License: GPLv3 … … 160 160 == Changelog == 161 161 162 = 2.9.1 = 163 *Release Date - 22 October 2024* 164 165 - **Fixed**: SQL Injection vulnerability related to multilingual plugins 166 162 167 = 2.9.0 = 163 168 *Release Date - 11 October 2024* … … 171 176 == Upgrade Notice == 172 177 173 = 2.9. 0=174 Fixed SQL Injection vulnerability 178 = 2.9.1 = 179 **Fixed**: SQL Injection vulnerability related to multilingual plugins -
ti-woocommerce-wishlist/trunk/ti-woocommerce-wishlist.php
r3167298 r3173781 5 5 * Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/ 6 6 * Description: Wishlist functionality for your WooCommerce store. 7 * Version: 2.9. 07 * Version: 2.9.1 8 8 * Requires at least: 6.1 9 9 * Tested up to: 6.6 … … 30 30 defined( 'TINVWL_PREFIX' ) || define( 'TINVWL_PREFIX', 'tinvwl' ); 31 31 defined( 'TINVWL_DOMAIN' ) || define( 'TINVWL_DOMAIN', 'ti-woocommerce-wishlist' ); 32 defined( 'TINVWL_FVERSION' ) || define( 'TINVWL_FVERSION', '2.9. 0' );32 defined( 'TINVWL_FVERSION' ) || define( 'TINVWL_FVERSION', '2.9.1' ); 33 33 defined( 'TINVWL_LOAD_FREE' ) || define( 'TINVWL_LOAD_FREE', plugin_basename( __FILE__ ) ); 34 34 defined( 'TINVWL_NAME' ) || define( 'TINVWL_NAME', 'TI WooCommerce Wishlist' );
Note: See TracChangeset
for help on using the changeset viewer.