Changeset 3652941
- Timestamp:
- 08/18/2026 01:15:39 PM (2 months ago)
- File:
-
- 1 edited
-
edutain-certificate-validator/trunk/readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
edutain-certificate-validator/trunk/readme.txt
r3649741 r3652941 1 === Edutain Certificate Validator ===2 Contributors: edutainmentuk , freemius3 Tags: certificate , certificate verification, csv, qr code, pdfcertificate1 === Edutain Certificate Validator – Certificate Verification, QR Code & Digital Credentials === 2 Contributors: edutainmentuk 3 Tags: certificate verification, certificate validator, verify certificate, id card verify, course certificate 4 4 Requires at least: 5.0 5 5 Tested up to: 7.0 … … 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 Upload certificate records and add LMS-independent certificate verification to WordPress with a shortcode. 11 12 Verify certificates, id cards or licenses online from your own WordPress site. No LMS, no external service. 13 12 14 13 15 == Description == 14 16 15 Edutain Certificate Validator adds online certificate verification to your WordPress site without requiring an LMS. Upload certificate records from CSV or add them individually, then let learners, employers and other visitors verify a certificate by entering its unique code. 16 17 The core certificate validator is fully functional, unlimited and free. CSV certificate upload, individual record management, CSV/XLSX export and the public verification form are not restricted by Pro. 18 19 = Free certificate verification features = 20 21 * Upload and merge certificate records from CSV files up to 10 MB. 22 * Import up to 100,000 data rows per uploaded file. 23 * Use four required columns in any order: Name, Authentication Code and Issue Date. 24 * Optionally store a Email address with each record. 25 * Add and edit records individually. 26 * Search, sort and paginate the records table. 27 * Delete individual records, or delete all records after confirmation. 28 * Export the complete dataset as CSV or XLSX. 29 * Use `[edcv_validator]` as a certificate verification shortcode on any page or post. 30 * Share direct verification links using `?certificate_code=CODE` or `?code=CODE`. 31 * Display a verification result with the learner name, course, completion date and Authentication Code. 32 * Let visitors copy a verification link or print the result. 33 * Limit public verification attempts to reduce automated certificate-code guessing. 34 * Automatically create a published Validate Certificate page on activation. 35 * Keep certificate records in a dedicated, indexed WordPress database table. 36 37 = CSV certificate upload = 38 39 Your CSV must contain these three headers, in any order and with case-insensitive matching: 40 41 42 * Name 43 * Authentication Code 44 * Issue Date 45 46 `Email` is optional. Issue dates may use `dd/mm/yyyy` or `yyyy-mm-dd` and are stored in ISO format. Authentication Codes must be unique. Duplicate codes and invalid rows are skipped and reported. Duplicate column names stop the import so ambiguous data is not processed. 47 48 Free imports accept the core columns only. With Pro active, additional CSV columns can be stored as certificate extras. `Expiry Date` and `Certificate Status` are recognised Pro columns; other additional columns become public custom fields, up to 30 custom fields per record. 49 50 = Pro certificate management features = 51 52 Pro features are delivered through the licensed Premium edition of Edutain Certificate Validator;[Learn more about Pro](https://edutain-certificate-validator.edutainmentuk.com/). 53 54 * Generate individual QR codes that open direct certificate verification links. 55 * Download QR codes as PNG or PDF, create multi-certificate QR PDF sheets, and print QR sheets. 56 * Generate branded landscape PDF certificates with an optional Media Library logo, accent colour, signature name and embedded QR code. 57 * Optionally let learners download PDFs from valid public verification results. 58 * Add expiry dates and mark certificates as valid, revoked or suspended, with an optional status reason. 59 * Show expired, revoked and suspended states on the public verification result. 60 * Add up to 30 custom label/value fields per certificate and choose which are public. 61 * Bulk delete selected records and bulk-set expiry, status, Email or custom-field values. 62 * Send or resend certificate emails manually using the stored Email address. 63 * Customise the email subject and message with certificate placeholders. 64 * Queue bulk email sends in WP-Cron batches of 15 to reduce request timeouts and pressure on host mail limits. 65 * Log verification attempts and view totals, failed attempts, recent activity and most-verified Authentication Codes. 66 * Choose a verification-log retention period or retain the log indefinitely. 67 68 = Email management = 69 70 Pro email management uses the optional core `Email` value for each certificate record. The subject and message support these placeholders: 71 72 `{name}` `{course_name}` `{issue_date}` `{authentication_code}` `{verify_link}` `{site_name}` 73 74 Bulk sends are queued in the background in groups of 15. They use WordPress WP-Cron, so processing time depends on site traffic and the site's email configuration. Email is sent through WordPress using `wp_mail()`. 17 18 [Edutain Certificate Validator](https://edutain-certificate-validator.edutainmentuk.com/) is a professional WordPress certificate verification plugin that lets anyone verify a certificate online, in seconds, on your own website. It is a no-code certificate validator built for training providers, educators, online course creators, and organizations that issue certificates. 19 20 21 Edutain Certificate Validator gives you a complete online certificate verification system inside WordPress. **No LMS required.** No external certificate platform. No monthly credential service. Your certificate database stays on your own site, under your own control. 22 23 24 Upload your certificate records, publish your verification page, and give anyone a secure way to verify certificates online. Learners, employers, and visitors verify a certificate instantly using its unique authentication code. 25 26 27 The core certificate validator, including CSV import, unlimited records, and the public verification form, is free forever and is never restricted by the Pro version. 28 29 30 31 32 = Key features in the free version = 33 34 35 * Add certificate records individually from your WordPress dashboard 36 * Bulk import certificates from a CSV file 37 * Import up to 100,000 data rows per uploaded file 38 * Publish a public certificate verification page in minutes 39 * Let visitors verify certificates using unique authentication codes 40 * Share direct certificate verification links 41 * Display professional verification results, including learner name, course name, completion date, and certificate details 42 * One-click social sharing to LinkedIn, Facebook, and X 43 * Add and edit records individually 44 * Search, sort, and paginate the records table 45 * Delete individual records, or delete all records after confirmation 46 * Download your complete dataset as CSV or XLSX 47 * Certificate records stored securely in your own WordPress database 48 * Built-in protection against automated verification attempts 49 * No external certificate storage required 50 * Works independently, with or without an LMS 51 * Import summary reporting records added, duplicate codes skipped, and invalid rows 52 * Downloadable CSV template, so your certificate data imports correctly first time 53 * Unlimited certificate records, with no cap on your certificate database 54 55 56 = Do more with the Pro version = 57 58 59 * **Custom fields** — add up to 30 label and value fields per certificate and choose which ones are public. Record grades, credit hours, CPD points, license numbers, or awarding body details. 60 * **Certificate QR code generator** — generate a QR code that opens the verification page for that exact certificate. 61 * Download QR codes as PNG or PDF, build multi-certificate QR PDF sheets, and print them. 62 * **Branded PDF certificates** — generate landscape PDF certificates with an optional Media Library logo, accent color, signature name, and embedded QR code. 63 * Optionally let learners download their PDF certificate straight from a valid verification result. 64 * **Certificate expiry management** — set expiry dates and control valid, revoked, and suspended states. 65 * Show expired, revoked, and suspended states clearly on the public verification result. 66 * **Bulk record management** — bulk delete selected records, and bulk edit expiry, status, email, or custom field values. 67 * **Certificate email management** — send or resend customized certificate emails manually or in bulk, using the stored email address. 68 * **Verification analytics** — log verification attempts and review totals, failed attempts, recent activity, and your most-verified authentication codes. 69 * Choose how long verification logs are kept, or retain them indefinitely. 70 71 72 = Verify ID cards, gym memberships, test results, and almost anything else = 73 74 75 Your organization issues more than course certificates. Staff ID cards. Gym memberships. Library cards. Medical test results. Professional licenses. Every one of them needs a way for someone to check it is real. 76 77 78 Edutain Certificate Validator Pro handles all of them, so the same plugin doubles as an ID card verifier, a library card verifier, or a general document verification tool. 79 80 81 Leave the course name field empty, add your own custom fields — ID Card Number, Card Type, Test Name, Test Result, License Expiry — and the plugin becomes whatever verifier you need. Someone can then verify an ID card, membership, or document on the same trusted public page your learners already use. Same simple setup. No extra plugins, no developer required. 82 83 84 = Why choose Edutain Certificate Validator? = 85 86 87 Manual certificate checking and spreadsheet tracking do not scale, and they give employers no way to confirm anything independently. Edutain Certificate Validator gives your organization a complete WordPress certificate verification system that helps you: 88 89 90 * Prevent fake certificates 91 * Build trust in the credentials you issue 92 * Reduce time spent answering verification requests by hand 93 * Provide instant certificate validation, around the clock 94 * Manage digital certificates professionally 95 75 96 76 97 = External services = 77 98 78 Edutain Certificate Validator integrates services provided by Freemius, Inc. Freemius is used for optional account connection and management, Pro licence activation and entitlement checks, premium software updates, and the Pro checkout process. 79 80 The plugin loads the Freemius Checkout JavaScript from `https://checkout.freemius.com/js/v1/` on EDCV's Dashboard, Data Management, dedicated Upgrade, and Freemius Account admin pages, where purchasing or upgrading controls may be needed. This remote script request can occur before a Freemius account connection or licence activation and communicates with Freemius. As with other web requests, Freemius and its infrastructure may receive request information such as the requesting device's IP address, browser or user-agent headers, and the referring admin-page URL. Opening Checkout sends the selected EDCV product and plan, licence quantity, and billing cycle to Freemius. Contact, billing, payment, tax, and purchase information entered during Checkout is handled by Freemius and its payment providers. 81 82 When an administrator chooses to connect a Freemius account, opts into data sharing, activates or manages a Pro licence, uses the Freemius Account screen, checks or receives Freemius-managed premium updates, or interacts with related Freemius notices, the bundled SDK may communicate with Freemius. Depending on the action and permissions shown in the Freemius interface, transmitted information may include: 83 84 * The site or homepage URL and site title. 85 * The WordPress and PHP versions, site language, and multisite or network context. 86 * The EDCV plugin version, Freemius SDK version, and whether the plugin is active, deactivated, or uninstalled. 87 * The WordPress administrator's first name, last name, and email address when connecting an account. 88 * Freemius user, site, install, product, plan, licence, and activation identifiers, including a licence key when one is submitted. 89 * Optional diagnostic information, which can include installed plugin and theme names, slugs, versions, and activation states when that permission is enabled. 90 91 Freemius presents its connection, licence, and diagnostic permissions in WordPress. Some communication is required to activate and validate a Pro licence or use a Freemius account, while optional diagnostic sharing can be controlled through the Freemius permissions and opt-out controls. Checkout communication occurs when its remote script is loaded and when the administrator opens or completes a purchase. Freemius-managed update checks and installation-state updates may also communicate information needed for licence and update delivery. 92 93 No EDCV code path was found that passes learner names, Email addresses, course names, issue dates, Authentication Codes, certificate custom fields, or verification analytics to the Freemius SDK or Checkout configuration. These certificate-related values are used by EDCV's local database, verification, PDF, QR, analytics, export, and email features instead. This statement describes EDCV's own integration code and does not replace Freemius's policies for information processed through its SDK, checkout, account, licence, or update services. 94 95 Freemius terms: https://freemius.com/terms/ 96 99 100 This plugin connects to Freemius, Inc. for optional account connection, Pro license activation and validation, premium plugin updates, and Pro checkout. It is a third-party service, so using these features means data is sent to Freemius. 101 102 103 The Freemius Checkout script is loaded from `https://checkout.freemius.com/js/v1/` on the plugin's Dashboard, Data Management, Upgrade, and Freemius Account screens, where purchasing controls may appear. As with any remote request, this can send your IP address, browser user-agent, and the referring admin page URL. Opening Checkout also sends the selected product, plan, license quantity, and billing cycle. Any contact, billing, and payment details you enter during Checkout are handled by Freemius and its payment providers. 104 105 106 When an administrator connects a Freemius account, activates or manages a license, checks for premium updates, or opts into data sharing, the bundled Freemius SDK may send: your site URL and title; WordPress, PHP, and SDK versions; site language and multisite context; the plugin version and its active, deactivated, or uninstalled state; the administrator's name and email address; Freemius account, site, install, product, plan, and license identifiers, including a submitted license key; and, only if you enable that optional permission, a list of installed plugin and theme names and versions. 107 108 109 Freemius permissions are shown to you inside WordPress, and optional diagnostic sharing can be turned off there. Some communication is required to activate and validate a Pro license. 110 111 112 Certificate data is never sent to Freemius. Learner names, email addresses, course names, issue dates, authentication codes, custom fields, and verification analytics stay in your own WordPress database. 113 114 115 Freemius terms of service: https://freemius.com/terms/ 97 116 Freemius privacy policy: https://freemius.com/privacy/ 98 117 99 If an administrator configures a certificate logo using an external image URL instead of the WordPress Media Library, the site fetches that image when generating a PDF. The image host may receive normal request information such as the site server's IP address and request headers. EDCV does not add certificate-record values to the logo request. 118 119 If you configure a certificate logo using an external image URL instead of the WordPress Media Library, your site downloads that image while generating a PDF, and the image host may receive your server's IP address and standard request headers. No certificate data is included in that request. 120 100 121 101 122 = Usage = 123 102 124 103 125 1. Install and activate the plugin. 104 126 2. Open *Certificate Validator > Data Management*. 105 127 3. Download the example CSV, upload your completed file, or add a certificate record manually. 106 4. Open the automatically created *Validate Certificate* page, or add `[edcv_validator]` to another page or post. 107 5. Give each learner their Authentication Code or a direct verification link. 128 4. Open the automatically created *Validate Certificate* page, or add `[edcv_validator]` to any page or post. 129 5. Give each learner their authentication code or a direct verification link. 130 108 131 109 132 == Installation == 133 110 134 111 135 1. Install *Edutain Certificate Validator* from the WordPress Plugins screen, or upload the `edutain-certificate-validator` folder to `/wp-content/plugins/`. … … 113 137 3. Go to *Certificate Validator > Data Management* to add or import certificate records. 114 138 4. Confirm the automatically created *Validate Certificate* page is published, or place `[edcv_validator]` on your preferred page. 115 5. Optional: enter Email values if you plan to use Pro email management. 139 5. Optional: enter email values if you plan to use Pro email management. 140 141 142 = Support = 143 * FAQ : https://edutain-certificate-validator.edutainmentuk.com/faqs/ 144 * Documentation:https://edutain-certificate-validator.edutainmentuk.com/documentation/ 145 * Website: https://edutain-certificate-validator.edutainmentuk.com/ 146 147 148 149 150 = Follow Edutain Certificate Validator on Social Media = 151 [LinkedIn](https://www.linkedin.com/showcase/edutain-certificate-validator/) | [Facebook](https://www.facebook.com/edutaincertificatevalidator/) | [Youtube](https://www.youtube.com/@EdutainCertificateValidator) | 152 [Instagram](https://www.instagram.com/edutaincertificatevalidator/) 153 116 154 117 155 == Frequently Asked Questions == 118 156 157 119 158 = Is the free certificate validator limited? = 120 159 121 No. The core CSV upload, individual record management, CSV/XLSX export, unlimited stored records and public certificate verification form are available without Pro. A single CSV upload is limited to 10 MB and 100,000 data rows for safe processing; this is an import-operation limit, not a stored-record limit. 160 161 No. CSV upload, individual record management, CSV and XLSX export, unlimited stored records, and the public certificate verification form are all available without Pro. A single CSV upload is limited to 10 MB and 100,000 data rows for safe processing. That is a limit on one import operation, not on how many records you can store. 162 122 163 123 164 = What columns must my CSV contain? = 124 165 125 The required columns are `Name`, `Issue Date` (or `Completion Date`) and `Authentication Code`. Columns can be in any order and header matching is case-insensitive. `Email` is optional. 166 167 The required columns are `Name`, `Issue Date` (or `Completion Date`), and `Authentication Code`. Columns can be in any order, and header matching is not case-sensitive. `Email` is optional. 168 126 169 127 170 = Which date formats can I import? = 128 171 129 Completion Date and the Pro Expiry Date column accept `dd/mm/yyyy` or `yyyy-mm-dd`. Invalid calendar dates are skipped and reported. 172 173 Completion Date and the Pro Expiry Date column accept `dd/mm/yyyy` or `yyyy-mm-dd`. Invalid calendar dates are skipped and reported back to you. 174 130 175 131 176 = Can I upload multiple CSV files? = 132 177 133 Yes. Each upload is merged into the existing dataset. Existing Authentication Codes are skipped as duplicates and reported. 178 179 Yes. Each upload is merged into your existing dataset. Authentication codes that already exist are skipped as duplicates and listed in the import summary. 180 134 181 135 182 = Can I export my certificate records? = 136 183 137 Yes. The complete dataset can be downloaded as CSV or XLSX. With Pro active, exports also include expiry information and custom fields. 184 185 Yes. Your complete dataset can be downloaded as CSV or XLSX. With Pro active, exports also include expiry information and custom fields. 186 138 187 139 188 = Where is certificate data stored? = 140 189 141 Certificate records are stored in the `{prefix}_edcv_certificates` table in your WordPress database. Pro certificate metadata and verification analytics use separate plugin tables. 190 191 Certificate records are stored in the `{prefix}_edcv_certificates` table in your own WordPress database. Pro certificate metadata and verification analytics use separate plugin tables. 192 142 193 143 194 = How do visitors verify a certificate? = 144 195 145 Visitors enter a Authentication Code on the automatically created Validate Certificate page or any page containing `[edcv_validator]`. A URL containing `?certificate_code=THEIR-CODE` or `?code=THEIR-CODE` pre-fills the form and starts verification automatically. 196 197 Visitors enter an authentication code on the automatically created Validate Certificate page, or on any page containing `[edcv_validator]`. A URL containing `?certificate_code=THEIR-CODE` or `?code=THEIR-CODE` fills in the form and starts verification automatically, which makes it easy to verify a certificate from a link or a QR code. 198 199 200 = Can I use this to verify ID cards, memberships, or other documents? = 201 202 203 Yes, with Pro. Custom fields let you record whatever the document needs — ID card numbers, membership types, test results, license details — so the same public page works as an ID card verifier, a library card verifier, or a general document verification page. The course name field can be left empty. 204 146 205 147 206 = Is the public verification form protected against abuse? = 148 207 149 The verification endpoint is nonce-protected and allows 30 attempts per IP in a fixed 60-second window. Public PDF downloads use a separate limit of 10 attempts per IP in their own fixed 60-second window. Developers can adjust limits with the `edcv_rate_limit_max_attempts` and `edcv_rate_limit_window` filters; trusted hosting environments can provide a validated, server-normalized client IP with `edcv_rate_limit_visitor_identity`. 150 151 = Does the plugin require an LMS or external verification API? = 152 153 No LMS or external verification API is required. Certificate lookup, QR generation and PDF generation run on your WordPress site. Freemius is used for licensing, account and checkout services, and WordPress email delivery depends on your site's mail configuration. 208 209 Yes. The verification endpoint is nonce-protected and allows 30 attempts per IP address in a fixed 60-second window. Public PDF downloads use a separate limit of 10 attempts per IP in their own 60-second window. 210 211 212 = Does the plugin require an LMS or an external verification API? = 213 214 215 No. Certificate lookup, QR generation, and PDF generation all run on your own WordPress site. Freemius is used only for licensing, account, and checkout services, and email delivery depends on your site's existing mail configuration. 216 154 217 155 218 = Will the shortcode work with my theme or page builder? = 156 219 157 Yes. `[edcv_validator]` is a standard WordPress shortcode, so it works in the block editor, classic editor and any page builder that supports shortcodes, including Elementor, Divi and Beaver Builder. 220 221 Yes. `[edcv_validator]` is a standard WordPress shortcode, so it works in the block editor, the classic editor, and any page builder that supports shortcodes, including Elementor, Divi, and Beaver Builder. 222 158 223 159 224 = Who can access the certificate admin area? = 160 225 161 Only Administrators by default. Editors, Authors and other roles cannot see or manage certificate data. 226 227 Administrators only, by default. Editors, Authors, and other roles cannot see or manage certificate data. 228 162 229 163 230 = How does Pro email management choose recipients? = 164 231 165 It uses the valid `Email` stored in each core certificate record. Records without a valid email address are skipped. Bulk sends are queued through WP-Cron in batches of 15. 166 167 = What does Pro require for QR codes? = 168 169 QR generation requires the PHP GD extension. If GD is unavailable, the plugin shows an administrator notice and does not generate QR images. 232 233 It uses the valid `Email` value stored in each certificate record. Records without a valid email address are skipped. Bulk sends are queued through WP-Cron in batches of 15. 234 235 236 = What does the Pro QR code generator require? = 237 238 239 QR generation requires the PHP GD extension, which most hosts enable by default. If GD is unavailable, the plugin shows an administrator notice and does not generate QR images. 240 170 241 171 242 = What happens when a certificate expires or is revoked? = 172 243 173 With Pro active, the public result changes to show expired, revoked or suspended status. Public PDF download is offered only for certificates whose current state is valid. 244 245 With Pro active, the public result changes to show expired, revoked, or suspended status. Public PDF download is offered only for certificates that are currently valid. 246 174 247 175 248 = Do generated PDF certificates support all languages and characters? = 176 249 177 Generated PDF certificates currently work best with Latin-based text. Unsupported characters in learner names, course titles, issuer names or signature names may be transliterated or omitted in the PDF. Certificate records and the public verification page continue to use WordPress's normal UTF-8 text handling and do not share this PDF limitation. 250 251 Generated PDF certificates work best with Latin-based text. Unsupported characters in learner names, course titles, issuer names, or signature names may be transliterated or omitted in the PDF. Certificate records and the public verification page use WordPress's normal UTF-8 text handling and are not affected by this limitation. 252 178 253 179 254 = Will updating from version 1.0 delete existing certificates? = 180 255 181 No. The plugin migrates the legacy CSV dataset into its database table and keeps a backup under a random filename. Version 2.0.0 also migrates the former Pro `email` metadata value into the core Email column when available. 182 183 = What happens to data when I deactivate or uninstall the plugin? = 184 185 Deactivating leaves everything untouched. Uninstalling also retains data by default. The Data Management page includes an opt-in setting to delete core certificate data on uninstall. Pro settings include a separate opt-in control for deleting Pro metadata, analytics and settings. Review both controls before uninstalling. 186 256 257 No. The plugin migrates your legacy CSV dataset into its database table and keeps a backup under a random filename. Version 2.0.0 also migrates the former Pro `email` metadata value into the core Email column where one is available. 258 259 260 = What happens to my data when I deactivate or uninstall the plugin? = 261 262 263 Deactivating leaves everything untouched. Uninstalling also keeps your data by default. The Data Management page includes an opt-in setting to delete core certificate data on uninstall, and Pro settings include a separate opt-in control for deleting Pro metadata, analytics, and settings. Check both before uninstalling. 264 265 266 = For developers = 267 268 269 Rate limits can be adjusted with the `edcv_rate_limit_max_attempts` and `edcv_rate_limit_window` filters. Trusted hosting environments can supply a validated, server-normalized client IP through `edcv_rate_limit_visitor_identity`. Record lifecycle actions and verification card filters are preserved from earlier versions. 187 270 188 271 189 272 == Screenshots == 190 273 191 1. Add a Record. 192 2. Bulk Upload. 193 3. Certificate Verification. 194 4. LinkedIn Sharing. 195 5. Data Table. 274 275 1. Add a record. 276 2. Bulk upload. 277 3. Certificate verification. 278 4. LinkedIn sharing. 279 5. Data table. 280 196 281 197 282 == Changelog == 198 283 284 199 285 = 2.0.0 = 200 * New: added Email as an optional core certificate field for manual entry, CSV import and record editing.201 * New: added complete-record CSV and XLSX exports, including Pro expiry and custom -field data when Pro is active.286 * New: added Email as an optional core certificate field for manual entry, CSV import, and record editing. 287 * New: added complete-record CSV and XLSX exports, including Pro expiry and custom field data when Pro is active. 202 288 * New: added Pro bulk record deletion and bulk field updates. 203 * New: added Pro QR PNG downloads, QR PDF downloads and multi-record QR PDF sheets.289 * New: added Pro QR PNG downloads, QR PDF downloads, and multi-record QR PDF sheets. 204 290 * New: added tabbed Data Management and Pro Settings workflows. 205 291 * New: added Pro manual email management and queued bulk sending from core Email values. 206 * Improved: added live eligible-recipient counts, a capped recipient preview and loading/error states before a bulk email is queued.207 * Changed: Pro features now unlock with a licen ce key, instead of installinga separate add-on plugin.208 * Changed: certificate email sending is manual -only; adding or importing records does not automatically send email.292 * Improved: added live eligible-recipient counts, a capped recipient preview, and loading and error states before a bulk email is queued. 293 * Changed: Pro features now unlock with a license key instead of a separate add-on plugin. 294 * Changed: certificate email sending is manual only. Adding or importing records no longer sends email automatically. 209 295 * Changed: custom fields are limited to 30 per certificate record. 210 * Improved: CSV imports validate supported date formats, reject duplicate headers and report invalid dates.296 * Improved: CSV imports validate supported date formats, reject duplicate headers, and report invalid dates. 211 297 * Improved: legacy Pro email metadata is migrated to the core Email column. 212 * Security: added capability and nonce checks to administrative AJAX operations and retained rate limiting on public verification and PDF endpoints. 213 * Security: CSV and XLSX exports neutralise cells that could be interpreted as spreadsheet formulas. 214 * Developer: preserved record lifecycle actions, verification-card filters and configurable rate-limit filters. 215 * Merged the former Pro add-on into the same plugin product and licence flow. 216 * Kept CSV upload, record management and public verification free and unlimited. 298 * Security: added capability and nonce checks to administrative AJAX operations, and retained rate limiting on public verification and PDF endpoints. 299 * Security: CSV and XLSX exports neutralize cells that could be interpreted as spreadsheet formulas. 300 * Developer: preserved record lifecycle actions, verification card filters, and configurable rate-limit filters. 301 217 302 218 303 = 1.1.0 = 219 304 * Moved certificate data from a legacy CSV file to a dedicated database table, with automatic migration. 220 * Added the redesigned public verification result, direct verification links and rate limiting.221 * Added individual record management, search, sorting and pagination.222 * Added drag-and-drop CSV upload, flexible column order and import summaries.305 * Added the redesigned public verification result, direct verification links, and rate limiting. 306 * Added individual record management, search, sorting, and pagination. 307 * Added drag-and-drop CSV upload, flexible column order, and import summaries. 223 308 * Added the optional core-data deletion setting for uninstall. 309 224 310 225 311 = 1.0.0 = 226 312 * Initial release. 227 313 314 228 315 == Upgrade Notice == 229 316 317 230 318 = 2.0.0 = 231 This update completes the merged Free/Pro architecture, adds Email and export tools, and introduces manual queued Pro email management. Existing certificate records are retained, and legacy Pro email metadata is migrated when available. Review your email template and uninstall-retention settings after updating. 319 Adds Email support, full data exports, and Pro QR, bulk, and email tools. Your certificate records are kept. Review your uninstall settings after updating. 320 232 321 233 322 = 1.1.0 = 234 Major update: database storage with automatic migration, redesigned verification card, direct verification links and rate limiting. 323 Major update: database storage with automatic migration, redesigned verification card, direct verification links, and rate limiting. 324 235 325 236 326 == Privacy == 237 327 238 Certificate records, including learner names, optional Email addresses and the optional `expiry_date` value, are stored in a dedicated table in your WordPress database. Pro expiry logic uses that core `expiry_date` value. Pro certificate status and custom fields are stored in a separate metadata table. 239 240 Public verification compares a submitted Authentication Code with the local certificate table. Rate limiting creates a temporary transient keyed by an MD5 hash of the visitor's IP address. With Pro analytics active, each verification attempt is stored with the submitted Authentication Code, result, certificate state, timestamp and a salted MD5 hash of the visitor's IP address. The analytics retention setting controls scheduled deletion; it can also be set to retain logs indefinitely. 241 242 Pro email management sends certificate information to valid Email recipients through WordPress `wp_mail()`. Bulk email jobs store temporary job state in the `edcv_pro_email_queue` option, including a job identifier, record-scan cursor and maximum record ID, recipient/count progress, status, and timestamps. WP-Cron processes eligible records in batches of 15. Legacy jobs created by earlier 2.0.0 development builds may temporarily retain pending record IDs until those jobs finish or are cancelled. Delivery and any transfer to an email provider depend on the WordPress site's mail setup. 243 244 QR codes and PDFs are generated locally. QR generation uses temporary files that are deleted after use. A PDF logo selected from the Media Library is read from its local attachment file; a manually configured external logo URL is downloaded temporarily during PDF generation and then deleted. 245 246 The bundled Freemius SDK provides account, licensing, entitlement, premium-update and Checkout functionality. Its remote Checkout script is loaded on EDCV's Dashboard, Data Management, dedicated Upgrade, and Freemius Account admin pages where purchasing or upgrading controls may be needed, while account, licence, update and optional diagnostic communication depends on the administrator's actions and the permissions presented by Freemius. See the External services section for the categories of information involved and links to Freemius's terms and privacy policy. 247 248 Plugin data is retained on uninstall unless the administrator enables the relevant deletion settings. Core certificate data and Pro metadata/analytics have separate opt-in deletion controls. 328 329 Certificate records, including learner names, optional email addresses, and the optional `expiry_date` value, are stored in a dedicated table in your WordPress database. Pro certificate status and custom fields are stored in a separate metadata table. 330 331 332 Public verification compares a submitted authentication code against your local certificate table. Rate limiting creates a temporary transient keyed by a hashed version of the visitor's IP address. With Pro analytics active, each verification attempt is stored with the submitted code, result, certificate state, timestamp, and a salted hash of the visitor's IP address. The analytics retention setting controls scheduled deletion, and can also be set to keep logs indefinitely. 333 334 335 Pro email management sends certificate information to valid recipients through WordPress `wp_mail()`. Bulk email jobs store temporary job state in the `edcv_pro_email_queue` option, including a job identifier, record-scan cursor, maximum record ID, recipient progress, status, and timestamps. WP-Cron processes eligible records in batches of 15. Delivery, and any transfer to an email provider, depends on your site's mail setup. 336 337 338 QR codes and PDFs are generated locally. QR generation uses temporary files that are deleted after use. A PDF logo selected from the Media Library is read from its local attachment file. A manually configured external logo URL is downloaded temporarily during PDF generation and then deleted. 339 340 341 The bundled Freemius SDK provides account, licensing, premium update, and checkout functionality. See the External services section above for what is sent, when, and links to Freemius's terms and privacy policy. 342 343 344 Plugin data is kept on uninstall unless you enable the relevant deletion settings. Core certificate data and Pro metadata and analytics have separate opt-in deletion controls.
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)