You've already forked wc-licensed-product
Add dashboard widget and auto-expire license cron (v0.3.5)
- Add admin dashboard widget with license statistics - Add daily wp-cron to auto-expire licenses past expiration date - Add LicenseExpiredEmail notification for expired licenses - Add getExpiredActiveLicenses() and autoExpireLicense() to LicenseManager Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
38
CLAUDE.md
38
CLAUDE.md
@@ -36,6 +36,10 @@ This project is proudly **"vibe-coded"** using Claude.AI - the entire codebase w
|
||||
|
||||
No known bugs at the moment.
|
||||
|
||||
### Version 0.4.0
|
||||
|
||||
- On first plugin activation, get the checksums of all security related files (at least in `src/`) as hashes, store them encrypted on the server and add a mechanism to check the integrity of the files and the license validity periodically, control via wp-cron.
|
||||
|
||||
## Technical Stack
|
||||
|
||||
- **Language:** PHP 8.3.x
|
||||
@@ -933,26 +937,40 @@ Added current version display on single product pages for licensed products.
|
||||
- Only displays if product has at least one version defined
|
||||
- Uses `LicensedProduct::get_current_version()` which queries `VersionManager::getLatestVersion()`
|
||||
|
||||
### 2026-01-23 - Version 0.3.5 - Download List UI Improvement
|
||||
### 2026-01-23 - Version 0.3.5 - Dashboard Widget & Auto-Expire
|
||||
|
||||
**Overview:**
|
||||
|
||||
Improved the download list layout in customer account licenses page with a two-row format.
|
||||
Added admin dashboard widget for license statistics and automatic license expiration via daily cron job.
|
||||
|
||||
**Implemented:**
|
||||
|
||||
- Downloads now displayed in two rows per entry
|
||||
- First row: File download link
|
||||
- Second row: Metadata (version, date, checksum)
|
||||
- Better visual separation and readability
|
||||
- Admin dashboard widget showing license statistics (total, active, expiring soon, expired)
|
||||
- Status breakdown display with color-coded badges
|
||||
- License type breakdown (time-limited vs lifetime)
|
||||
- Daily wp-cron job to auto-expire licenses past their expiration date
|
||||
- License expired email notification sent when license auto-expires
|
||||
- Downloads in customer account now displayed in two-row format
|
||||
|
||||
**New files:**
|
||||
|
||||
- `src/Admin/DashboardWidgetController.php` - WordPress dashboard widget controller
|
||||
- `src/Email/LicenseExpiredEmail.php` - WooCommerce email for expired license notifications
|
||||
|
||||
**Modified files:**
|
||||
|
||||
- `src/Plugin.php` - Added DashboardWidgetController instantiation
|
||||
- `src/License/LicenseManager.php` - Added `getExpiredActiveLicenses()` and `autoExpireLicense()` methods
|
||||
- `src/Email/LicenseEmailController.php` - Added auto-expire logic and LicenseExpiredEmail registration
|
||||
- `templates/frontend/licenses.html.twig` - Restructured download list with two-row layout
|
||||
- `assets/css/frontend.css` - Added `.download-item`, `.download-row-file`, `.download-row-meta` styles
|
||||
- `assets/css/frontend.css` - Added dashboard widget and download list styles
|
||||
|
||||
**Technical notes:**
|
||||
|
||||
- Changed `<li>` from single-row flex to column flex layout
|
||||
- Metadata row indented with left padding for visual hierarchy
|
||||
- Updated responsive CSS for mobile devices
|
||||
- Dashboard widget uses `wp_add_dashboard_widget()` hook, requires `manage_woocommerce` capability
|
||||
- Widget displays statistics from existing `LicenseManager::getStatistics()` method
|
||||
- Auto-expire runs during daily `wclp_check_expiring_licenses` cron event
|
||||
- `getExpiredActiveLicenses()` finds licenses with past expiration date but still active status
|
||||
- `autoExpireLicense()` updates status to expired and returns true if changed
|
||||
- LicenseExpiredEmail follows same pattern as LicenseExpirationEmail (warning vs expired)
|
||||
- Expired notification tracked via user meta to prevent duplicate emails
|
||||
|
||||
Reference in New Issue
Block a user