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

@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WC Licensed Product 0.5.0\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: 2026-01-25T18:30:00+00:00\n"
"Last-Translator: Marco Graetsch <magdev3.0@gmail.com>\n"
"Language-Team: German (Switzerland) <de_CH@li.org>\n"
@@ -311,10 +311,10 @@ msgstr "Speichern"
#: 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 "Lebenslang"
@@ -492,6 +492,7 @@ msgstr "Lizenz erfolgreich verlängert."
msgid "License set to lifetime successfully."
msgstr "Lizenz erfolgreich auf lebenslang gesetzt."
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1106
#, php-format
msgid "%d license activated."
@@ -499,6 +500,7 @@ msgid_plural "%d licenses activated."
msgstr[0] "%d Lizenz aktiviert."
msgstr[1] "%d Lizenzen aktiviert."
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1114
#, php-format
msgid "%d license deactivated."
@@ -506,6 +508,7 @@ msgid_plural "%d licenses deactivated."
msgstr[0] "%d Lizenz deaktiviert."
msgstr[1] "%d Lizenzen deaktiviert."
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1122
#, php-format
msgid "%d license revoked."
@@ -513,6 +516,7 @@ msgid_plural "%d licenses revoked."
msgstr[0] "%d Lizenz widerrufen."
msgstr[1] "%d Lizenzen widerrufen."
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1130
#, php-format
msgid "%d license deleted."
@@ -520,6 +524,7 @@ msgid_plural "%d licenses deleted."
msgstr[0] "%d Lizenz gelöscht."
msgstr[1] "%d Lizenzen gelöscht."
#. translators: %d: number of licenses
#: src/Admin/AdminController.php:1138
#, php-format
msgid "%d license extended."
@@ -541,6 +546,7 @@ msgstr ""
msgid "No licenses to export."
msgstr "Keine Lizenzen zum Exportieren."
#. translators: %d: number of licenses imported
#: src/Admin/AdminController.php:1159
#, php-format
msgid "%d license imported."
@@ -548,6 +554,7 @@ msgid_plural "%d licenses imported."
msgstr[0] "%d Lizenz importiert."
msgstr[1] "%d Lizenzen importiert."
#. translators: %d: number of licenses updated
#: src/Admin/AdminController.php:1166
#, php-format
msgid "%d updated."
@@ -555,6 +562,7 @@ msgid_plural "%d updated."
msgstr[0] "%d aktualisiert."
msgstr[1] "%d aktualisiert."
#. translators: %d: number of licenses skipped
#: src/Admin/AdminController.php:1174
#, php-format
msgid "%d skipped."
@@ -562,6 +570,7 @@ msgid_plural "%d skipped."
msgstr[0] "%d übersprungen."
msgstr[1] "%d übersprungen."
#. translators: %d: number of errors
#: src/Admin/AdminController.php:1182
#, php-format
msgid "%d error."
@@ -1020,6 +1029,7 @@ msgstr "Domain bearbeiten"
msgid "View in Licenses"
msgstr "In Lizenzen anzeigen"
#. 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."
@@ -1166,8 +1176,8 @@ msgstr ""
"Diese Einstellungen dienen als Standard für neue lizensierte Produkte. "
"Individuelle Produkteinstellungen überschreiben diese Standards."
#: 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 "Max. Aktivierungen"
@@ -1175,7 +1185,7 @@ msgstr "Max. Aktivierungen"
msgid "Default maximum number of domain activations per license."
msgstr "Standard maximale Anzahl der Domain-Aktivierungen pro Lizenz."
#: 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 "Lizenz-Gültigkeit (Tage)"
@@ -1187,7 +1197,7 @@ msgstr ""
"Standard Anzahl Tage, die eine Lizenz gültig ist. Leer lassen oder auf 0 "
"setzen für lebenslange Lizenzen."
#: 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 "An Hauptversion binden"
@@ -1215,6 +1225,7 @@ msgstr ""
msgid "Expiration Warning Schedule"
msgstr "Ablaufwarnung Zeitplan"
#. translators: %s: URL to WooCommerce email settings
#: src/Admin/SettingsController.php:230
#, php-format
msgid ""
@@ -1346,6 +1357,7 @@ msgstr "Lizenz-Domains"
msgid "Each license requires a unique domain."
msgstr "Jede Lizenz erfordert eine eindeutige Domain."
#. translators: %d: license number
#: src/Checkout/CheckoutBlocksIntegration.php:129
#: src/Checkout/CheckoutController.php:224
#, php-format
@@ -1357,6 +1369,16 @@ msgstr "Lizenz %d:"
msgid "required"
msgstr "erforderlich"
#: src/Checkout/CheckoutController.php:215
#, php-format
msgid "licensed_domains[%s][%d]"
msgstr "licensed_domains[%s][%d]"
#: src/Checkout/CheckoutController.php:216
#, php-format
msgid "licensed_domain_%s_%d"
msgstr "licensed_domain_%s_%d"
#: src/Checkout/CheckoutController.php:323
msgid "Please enter a domain for your license."
msgstr "Bitte geben Sie eine Domain für Ihre Lizenz ein."
@@ -1365,16 +1387,19 @@ msgstr "Bitte geben Sie eine Domain für Ihre Lizenz ein."
msgid "Please enter a valid domain for your license."
msgstr "Bitte geben Sie eine gültige Domain für Ihre Lizenz ein."
#. 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 "Bitte geben Sie eine Domain für %1$s (Lizenz %2$d) ein."
#. 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 "Bitte geben Sie eine gültige Domain für %1$s (Lizenz %2$d) ein."
#. translators: 1: domain name, 2: product name
#: src/Checkout/CheckoutController.php:385
#, php-format
msgid ""
@@ -1438,68 +1463,74 @@ msgstr "Diese Lizenz ist für diese Domain nicht gültig."
msgid "Attachment file not found."
msgstr "Anhangs-Datei nicht gefunden."
#. 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 "Datei-Prüfsumme stimmt nicht überein. Erwartet: %1$s, Erhalten: %2$s"
#: src/Product/LicensedProductVariation.php:143
#: src/Product/LicensedProductVariation.php:198
msgid "Monthly"
msgstr "Monatlich"
#: src/Product/LicensedProductVariation.php:147
#: src/Product/LicensedProductVariation.php:202
msgid "Quarterly"
msgstr "Vierteljährlich"
#: src/Product/LicensedProductVariation.php:151
#: src/Product/LicensedProductVariation.php:206
msgid "Yearly"
msgstr "Jährlich"
#: 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] "%d Tag"
msgstr[1] "%d Tage"
#: src/Product/LicensedProductType.php:72
#: src/Product/LicensedProductType.php:82
msgid "Licensed Product"
msgstr "Lizensiertes Produkt"
#: src/Product/LicensedProductType.php:73
#: src/Product/LicensedProductType.php:83
msgid "Licensed Variable Product"
msgstr "Lizensiertes variables Produkt"
#: src/Product/LicensedProductType.php:108
#: src/Product/LicensedProductType.php:136
msgid "License Settings"
msgstr "Lizenz-Einstellungen"
#: 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 "%d Tage"
#: 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 "Felder leer lassen, um Standardeinstellungen von %s zu verwenden."
#: src/Product/LicensedProductType.php:147
#: src/Product/LicensedProductType.php:175
msgid "WooCommerce > Settings > Licensed Products"
msgstr "WooCommerce > Einstellungen > Lizensierte Produkte"
#: 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 "Maximale Anzahl der Domain-Aktivierungen pro Lizenz. Standard: %d"
#: 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 "Anzahl Tage, die die Lizenz gültig ist. Leer lassen für Standard (%s)."
#: 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. "
@@ -1508,35 +1539,35 @@ msgstr ""
"Falls aktiviert, werden Lizenzen an die Hauptversion zum Kaufzeitpunkt "
"gebunden. Standard: %s"
#: src/Product/LicensedProductType.php:194
#: src/Product/LicensedProductType.php:222
msgid "Yes"
msgstr "Ja"
#: src/Product/LicensedProductType.php:194
#: src/Product/LicensedProductType.php:222
msgid "No"
msgstr "Nein"
#: src/Product/LicensedProductType.php:329
#: src/Product/LicensedProductType.php:447
msgid "Version:"
msgstr "Version:"
#: src/Product/LicensedProductType.php:373
#: src/Product/LicensedProductType.php:523
msgid "Licensed products are always virtual"
msgstr "Lizenzierte Produkte sind immer virtuell"
#: src/Product/LicensedProductType.php:375
#: src/Product/LicensedProductType.php:525
msgid "Virtual"
msgstr "Virtuell"
#: src/Product/LicensedProductType.php:408
#: src/Product/LicensedProductType.php:558
msgid "License Duration (Days)"
msgstr "Lizenz-Gültigkeit (Tage)"
#: src/Product/LicensedProductType.php:417
#: src/Product/LicensedProductType.php:567
msgid "Leave empty for parent default. 0 = Lifetime."
msgstr "Leer lassen für übergeordneten Standard. 0 = Lebenslang."
#: src/Product/LicensedProductType.php:429
#: src/Product/LicensedProductType.php:579
msgid "Leave empty for parent default."
msgstr "Leer lassen für übergeordneten Standard."
@@ -1599,6 +1630,7 @@ msgstr "Bitte melden Sie sich an, um Ihre Lizenzen zu sehen."
msgid "You have no licenses yet."
msgstr "Sie haben noch keine Lizenzen."
#. translators: %s: order number
#: src/Frontend/AccountController.php:245
#, php-format
msgid "Order #%s"
@@ -1756,6 +1788,7 @@ msgstr ""
"Um dieses Produkt weiterhin zu nutzen, verlängern Sie bitte Ihre Lizenz vor "
"dem Ablaufdatum."
#. translators: %s: list of placeholders
#: src/Email/LicenseExpirationEmail.php:301
#: src/Email/LicenseExpiredEmail.php:288
#, php-format
@@ -1894,6 +1927,7 @@ msgstr ""
msgid "Configure License"
msgstr "Lizenz konfigurieren"
#. translators: %s: WooCommerce plugin name
#: wc-licensed-product.php:61
#, php-format
msgid "%s requires WooCommerce to be installed and active."