Multi-Vendor LMS
Marketplace-style LMS — multiple independent tutors, courses with modules/lessons, video + PDF + live sessions, PayHere/WebXPay/Mobile-Wallet/Bank-Slip payments, watermarked videos, device limit, smart discovery, vendor & admin dashboards.
by Cyberdeck · github.com/esupporttechnology/multi-vendor-lms-plugin · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/esupporttechnology/multi-vendor-lms-plugin/archive/refs/heads/main.zipA marketplace-style Learning Management System with independent tutors, hybrid learning, multiple Sri Lankan payment gateways, video watermarks, device limit, smart discovery, and admin/vendor dashboards.
Features
- Two user roles: Student, Teacher (Vendor) — admin-approved
- Course → Module → Lesson hierarchy
- Lesson types: Video (MP4/streaming URL), PDF, External Link, Live Session (Zoom/Meet)
- Multiple Sri Lankan payment gateways: PayHere, WebXPay, plus Bank Slip upload
- Configurable commission per teacher
- Device limit (default 2 per user)
- Anti-piracy watermark overlay on videos (student email/name drifts across corners)
- Smart discovery: filter by Year / Subject / Topic / Teacher; keyword search with autosuggest
- Per-teacher revenue tracking + consolidated admin reports
- Optional 2FA on login (6-digit email code)
- Forgot password flow
Installation
- Upload the plugin folder to
/wp-content/plugins/and activate it - Go to LMS → Settings and:
- Set currency, default commission %, device limit
- Configure PayHere merchant ID & secret (use sandbox first)
- Paste WebXPay public key and secret if using WebXPay
- Add bank account details for the Bank Slip option
- Configure watermark text
- Create six pages, each containing one shortcode:
[mvlms_login]— login + 2FA + forgot password[mvlms_student_register]— student signup[mvlms_teacher_register]— teacher application[mvlms_student_dashboard]— student dashboard[mvlms_teacher_dashboard]— vendor dashboard[mvlms_courses]— public catalog with filters[mvlms_course]— course detail (uses?slug=course-slug)[mvlms_lesson]— lesson player (uses?slug=course-slug&lesson=ID)
- In LMS → Settings → Pages, assign each page
Roles
mvlms_student— students who enroll in coursesmvlms_teacher— vendor teachers (only see their own courses + students)
Payment Notes
PayHere: works out of the box. Use sandbox mode while testing. The notify URL is /wp-admin/admin-ajax.php?action=mvlms_payhere_notify — set this in your PayHere dashboard if required.
WebXPay: WebXPay's checkout requires RSA-encrypted payment payloads using their public key. This plugin ships with a stub implementation. After signup, paste your public key in settings. You may need to adjust the request format and the webxpay_notify() handler in class-mvlms-payments.php to match the exact response format WebXPay sends you.
Bank Slip: students upload a transfer receipt; appears in LMS → Payments for admin review. Approving the slip auto-enrolls the student.
Limitations & Known Roughness
This is a fast-built scaffold covering the full spec. Production hardening still needed:
- Watermark is client-side CSS overlay. A determined user can remove it with browser dev tools or by screen-recording. Server-side per-student video transcoding (FFmpeg) is the only piracy-proof option, and adds significant infra cost.
- Device limit uses a long-lived cookie + UA hash. Clearing cookies bypasses it.
- Live sessions are link-based only — teachers paste their Zoom/Meet URL. No OAuth integration with Zoom or Google Meet (no auto-create, no auto-record).
- No video hosting included — paste URLs to your own MP4/HLS host (S3, Bunny, Cloudflare Stream, etc.).
- No refunds workflow — handle manually via the payments admin.
- No bulk course import / CSV.
Changelog
1.0.0
Initial release.