You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Helpdesk**: Awesome Support, SupportCandy, and Fluent Support are mutually exclusive (all target `helpdesk.ticket` / `project.task`). First-registered wins — registration order: Awesome Support → SupportCandy → Fluent Support.
773
783
-**Gamification**: GamiPress and myCRED are mutually exclusive (both target `loyalty.card` via `Loyalty_Card_Resolver` with `partner_id` + `program_id`). First-registered wins (GamiPress before myCRED in registration order).
774
784
-**Events**: Events Calendar and MEC are mutually exclusive (both target `event.event` / `calendar.event` with exclusive group `events`). First-registered wins — registration order: Events Calendar → MEC. Note: FooEvents is independent (not in the exclusive group) — it coexists with either events module.
-**Integration Handlers** (with side effects): access plugin DB tables via `$wpdb`, call third-party APIs, or manage external state. Examples: `Amelia_Handler`, `Bookly_Handler`, `Ecwid_Handler`, `ShopWP_Handler`, `SimplePay_Handler`.
817
828
818
829
**Key rule**: a handler must NEVER call `Odoo_Client` directly — all Odoo interaction goes through the parent module. This preserves the module as the single synchronization orchestrator.
819
830
820
831
### Abstract Method Naming Convention
821
832
822
-
Intermediate base classes (`Membership_Module_Base`, `Dual_Accounting_Module_Base`, `Booking_Module_Base`, `Events_Module_Base`, `Helpdesk_Module_Base`, `LMS_Module_Base`) define abstract methods for subclass configuration. Two naming prefixes distinguish their purpose:
833
+
Intermediate base classes (`Membership_Module_Base`, `Dual_Accounting_Module_Base`, `Booking_Module_Base`, `Events_Module_Base`, `Helpdesk_Module_Base`, `LMS_Module_Base`, `Marketplace_Module_Base`) define abstract methods for subclass configuration. Two naming prefixes distinguish their purpose:
823
834
824
835
-**`handler_*()`** — delegates to the handler class for data operations (load, save, parse, delete). These methods interact with the WordPress database or plugin APIs. Examples: `handler_load_level()`, `handler_load_child()`, `handler_parse_service_from_odoo()`, `handler_save_service()`.
825
836
@@ -2338,6 +2349,55 @@ All user inputs are sanitized with:
**Odoo models:**`res.partner` (vendors as suppliers), `purchase.order` (sub-orders), `account.move` (commissions as vendor bills, withdrawals as payments)
2376
+
2377
+
**Key features:**
2378
+
- Multi-vendor marketplace sync via `Marketplace_Module_Base`
2379
+
- Exclusive group: `marketplace` (conflicts with Dokan, WC Vendors)
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
10
10
### Fixed
11
11
-**WP Crowdfunding compatibility** — Updated module detection from `wpneo_crowdfunding_init()` function to `WPCF_VERSION` constant, meta keys from `_wpneo_*` to `_nf_*` prefix, and version constant from `STARTER_VERSION` to `WPCF_VERSION`, matching WP Crowdfunding 2.x API surface
12
12
13
+
### Changed
14
+
-**Marketplace base classes** — Extracted shared logic from Dokan, WCFM, and WC Vendors into `Marketplace_Module_Base` and `Marketplace_Handler_Base`, eliminating ~477 lines of duplicated code across 6 module/handler files
15
+
-**LMS handler template method** — Added `load_course()` template method to `LMS_Handler_Base` with 3 abstract hooks (`get_course_post_type()`, `get_course_price()`, `get_lms_label()`), eliminating identical implementations from 5 LMS handlers (~80 lines)
16
+
-**LMS module shared enrollment** — Moved identical `load_enrollment_data()` from 5 LMS modules into `LMS_Module_Base` via `get_lms_handler()` abstract (~35 lines)
17
+
-**Test stub consolidation** — Consolidated 14 single-constant stub files into `constants-only.php` and removed 4 empty stubs, reducing `bootstrap.php` requires from 68 to 50
18
+
-**PHPDoc generics** — Added `array<string, mixed>` return types to 11 methods in `Module_Base` and `Settings_Repository`
0 commit comments