Fix stock indicator on licensed variable products (v0.5.12)

- Fixed stock indicator appearing in cart for licensed variable products
- Override get_children() with direct SQL query to bypass WooCommerce type check
- Override get_variation_attributes() for proper taxonomy attribute loading
- Override get_variation_prices() to prevent null array errors
- Override get_available_variations() with empty availability_html
- Added is_type() override to pass variable type checks
- Added multiple stock-related filters for comprehensive coverage
- Improved isLicensedProductOrVariation() with DB-level parent type check

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-27 14:44:57 +01:00
parent 20fb39d1a1
commit 142500cab0
11 changed files with 534 additions and 81 deletions

View File

@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: WC Licensed Product 0.5.8\n"
"Project-Id-Version: WC Licensed Product 0.5.12\n"
"Report-Msgid-Bugs-To: magdev3.0@gmail.com\n"
"POT-Creation-Date: 2026-01-27 13:34+0100\n"
"POT-Creation-Date: 2026-01-27 14:41+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -304,10 +304,10 @@ msgstr ""
#: src/Admin/DashboardWidgetController.php:136
#: src/Admin/OrderLicenseController.php:260
#: src/Admin/SettingsController.php:192
#: src/Product/LicensedProductVariation.php:139
#: src/Product/LicensedProductType.php:136
#: src/Product/LicensedProductType.php:184
#: src/Product/LicensedProductType.php:403
#: src/Product/LicensedProductVariation.php:194
#: src/Product/LicensedProductType.php:164
#: src/Product/LicensedProductType.php:212
#: src/Product/LicensedProductType.php:553
#: src/Frontend/AccountController.php:286
msgid "Lifetime"
msgstr ""
@@ -485,6 +485,7 @@ msgstr ""
msgid "License set to lifetime successfully."
msgstr ""
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1106
#, php-format
msgid "%d license activated."
@@ -492,6 +493,7 @@ msgid_plural "%d licenses activated."
msgstr[0] ""
msgstr[1] ""
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1114
#, php-format
msgid "%d license deactivated."
@@ -499,6 +501,7 @@ msgid_plural "%d licenses deactivated."
msgstr[0] ""
msgstr[1] ""
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1122
#, php-format
msgid "%d license revoked."
@@ -506,6 +509,7 @@ msgid_plural "%d licenses revoked."
msgstr[0] ""
msgstr[1] ""
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1130
#, php-format
msgid "%d license deleted."
@@ -513,6 +517,7 @@ msgid_plural "%d licenses deleted."
msgstr[0] ""
msgstr[1] ""
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1138
#, php-format
msgid "%d license extended."
@@ -532,6 +537,7 @@ msgstr ""
msgid "No licenses to export."
msgstr ""
#. translators: %d: number of licenses imported
#: src/Admin/AdminController.php:1159
#, php-format
msgid "%d license imported."
@@ -539,6 +545,7 @@ msgid_plural "%d licenses imported."
msgstr[0] ""
msgstr[1] ""
#. translators: %d: number of licenses updated
#: src/Admin/AdminController.php:1166
#, php-format
msgid "%d updated."
@@ -546,6 +553,7 @@ msgid_plural "%d updated."
msgstr[0] ""
msgstr[1] ""
#. translators: %d: number of licenses skipped
#: src/Admin/AdminController.php:1174
#, php-format
msgid "%d skipped."
@@ -553,6 +561,7 @@ msgid_plural "%d skipped."
msgstr[0] ""
msgstr[1] ""
#. translators: %d: number of errors
#: src/Admin/AdminController.php:1182
#, php-format
msgid "%d error."
@@ -997,6 +1006,7 @@ msgstr ""
msgid "View in Licenses"
msgstr ""
#. translators: %s: Link to licenses page
#: src/Admin/OrderLicenseController.php:280
#, php-format
msgid "For more actions (revoke, extend, delete), go to the %s page."
@@ -1133,8 +1143,8 @@ msgid ""
"product settings override these defaults."
msgstr ""
#: src/Admin/SettingsController.php:176 src/Product/LicensedProductType.php:154
#: src/Product/LicensedProductType.php:420
#: src/Admin/SettingsController.php:176 src/Product/LicensedProductType.php:182
#: src/Product/LicensedProductType.php:570
msgid "Max Activations"
msgstr ""
@@ -1142,7 +1152,7 @@ msgstr ""
msgid "Default maximum number of domain activations per license."
msgstr ""
#: src/Admin/SettingsController.php:187 src/Product/LicensedProductType.php:172
#: src/Admin/SettingsController.php:187 src/Product/LicensedProductType.php:200
msgid "License Validity (Days)"
msgstr ""
@@ -1152,7 +1162,7 @@ msgid ""
"lifetime licenses."
msgstr ""
#: src/Admin/SettingsController.php:199 src/Product/LicensedProductType.php:190
#: src/Admin/SettingsController.php:199 src/Product/LicensedProductType.php:218
msgid "Bind to Major Version"
msgstr ""
@@ -1176,6 +1186,7 @@ msgstr ""
msgid "Expiration Warning Schedule"
msgstr ""
#. translators: %s: URL to WooCommerce email settings
#: src/Admin/SettingsController.php:230
#, php-format
msgid ""
@@ -1299,6 +1310,7 @@ msgstr ""
msgid "Each license requires a unique domain."
msgstr ""
#. translators: %d: license number
#: src/Checkout/CheckoutBlocksIntegration.php:129
#: src/Checkout/CheckoutController.php:224
#, php-format
@@ -1310,6 +1322,16 @@ msgstr ""
msgid "required"
msgstr ""
#: src/Checkout/CheckoutController.php:215
#, php-format
msgid "licensed_domains[%s][%d]"
msgstr ""
#: src/Checkout/CheckoutController.php:216
#, php-format
msgid "licensed_domain_%s_%d"
msgstr ""
#: src/Checkout/CheckoutController.php:323
msgid "Please enter a domain for your license."
msgstr ""
@@ -1318,16 +1340,19 @@ msgstr ""
msgid "Please enter a valid domain for your license."
msgstr ""
#. translators: 1: product name, 2: license number
#: src/Checkout/CheckoutController.php:356
#, php-format
msgid "Please enter a domain for %1$s (License %2$d)."
msgstr ""
#. translators: 1: product name, 2: license number
#: src/Checkout/CheckoutController.php:371
#, php-format
msgid "Please enter a valid domain for %1$s (License %2$d)."
msgstr ""
#. translators: 1: domain name, 2: product name
#: src/Checkout/CheckoutController.php:385
#, php-format
msgid ""
@@ -1389,103 +1414,109 @@ msgstr ""
msgid "Attachment file not found."
msgstr ""
#. translators: 1: provided hash, 2: calculated hash
#: src/Product/VersionManager.php:177
#, php-format
msgid "File checksum does not match. Expected: %1$s, Got: %2$s"
msgstr ""
#: src/Product/LicensedProductVariation.php:143
#: src/Product/LicensedProductVariation.php:198
msgid "Monthly"
msgstr ""
#: src/Product/LicensedProductVariation.php:147
#: src/Product/LicensedProductVariation.php:202
msgid "Quarterly"
msgstr ""
#: src/Product/LicensedProductVariation.php:151
#: src/Product/LicensedProductVariation.php:206
msgid "Yearly"
msgstr ""
#: src/Product/LicensedProductVariation.php:156
#. translators: %d: number of days
#: src/Product/LicensedProductVariation.php:211
#, php-format
msgid "%d day"
msgid_plural "%d days"
msgstr[0] ""
msgstr[1] ""
#: src/Product/LicensedProductType.php:72
#: src/Product/LicensedProductType.php:82
msgid "Licensed Product"
msgstr ""
#: src/Product/LicensedProductType.php:73
#: src/Product/LicensedProductType.php:83
msgid "Licensed Variable Product"
msgstr ""
#: src/Product/LicensedProductType.php:108
#: src/Product/LicensedProductType.php:136
msgid "License Settings"
msgstr ""
#: src/Product/LicensedProductType.php:135
#: src/Product/LicensedProductType.php:402
#: src/Product/LicensedProductType.php:163
#: src/Product/LicensedProductType.php:552
#, php-format
msgid "%d days"
msgstr ""
#: src/Product/LicensedProductType.php:145
#. translators: %s: URL to settings page
#: src/Product/LicensedProductType.php:173
#, php-format
msgid "Leave fields empty to use default settings from %s."
msgstr ""
#: src/Product/LicensedProductType.php:147
#: src/Product/LicensedProductType.php:175
msgid "WooCommerce > Settings > Licensed Products"
msgstr ""
#: src/Product/LicensedProductType.php:157
#. translators: %d: default max activations value
#: src/Product/LicensedProductType.php:185
#, php-format
msgid "Maximum number of domain activations per license. Default: %d"
msgstr ""
#: src/Product/LicensedProductType.php:175
#. translators: %s: default validity value
#: src/Product/LicensedProductType.php:203
#, php-format
msgid "Number of days the license is valid. Leave empty for default (%s)."
msgstr ""
#: src/Product/LicensedProductType.php:193
#. translators: %s: default bind to version value (Yes/No)
#: src/Product/LicensedProductType.php:221
#, php-format
msgid ""
"If enabled, licenses are bound to the major version at purchase time. "
"Default: %s"
msgstr ""
#: src/Product/LicensedProductType.php:194
#: src/Product/LicensedProductType.php:222
msgid "Yes"
msgstr ""
#: src/Product/LicensedProductType.php:194
#: src/Product/LicensedProductType.php:222
msgid "No"
msgstr ""
#: src/Product/LicensedProductType.php:329
#: src/Product/LicensedProductType.php:447
msgid "Version:"
msgstr ""
#: src/Product/LicensedProductType.php:373
#: src/Product/LicensedProductType.php:523
msgid "Licensed products are always virtual"
msgstr ""
#: src/Product/LicensedProductType.php:375
#: src/Product/LicensedProductType.php:525
msgid "Virtual"
msgstr ""
#: src/Product/LicensedProductType.php:408
#: src/Product/LicensedProductType.php:558
msgid "License Duration (Days)"
msgstr ""
#: src/Product/LicensedProductType.php:417
#: src/Product/LicensedProductType.php:567
msgid "Leave empty for parent default. 0 = Lifetime."
msgstr ""
#: src/Product/LicensedProductType.php:429
#: src/Product/LicensedProductType.php:579
msgid "Leave empty for parent default."
msgstr ""
@@ -1548,6 +1579,7 @@ msgstr ""
msgid "You have no licenses yet."
msgstr ""
#. translators: %s: order number
#: src/Frontend/AccountController.php:245
#, php-format
msgid "Order #%s"
@@ -1697,6 +1729,7 @@ msgid ""
"expiration date."
msgstr ""
#. translators: %s: list of placeholders
#: src/Email/LicenseExpirationEmail.php:301
#: src/Email/LicenseExpiredEmail.php:288
#, php-format
@@ -1827,6 +1860,7 @@ msgstr ""
msgid "Configure License"
msgstr ""
#. translators: %s: WooCommerce plugin name
#: wc-licensed-product.php:61
#, php-format
msgid "%s requires WooCommerce to be installed and active."