This commit is contained in:
Javier Casares 2026-06-03 06:29:56 +00:00
commit 98b1cf0f3b
17 changed files with 2968 additions and 1313 deletions

View file

@ -5,11 +5,11 @@ Requires at least: 6.8
Tested up to: 7.0
Requires PHP: 8.2
Requires Plugins: action-scheduler
Stable tag: 1.5.0
Stable tag: 1.6.0
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
Audit your media library for copyright risks: track internal usage and run reverse image search via Google Vision and TinEye.
Audit your media library for copyright risks: track internal usage, run reverse image search via Google Vision, TinEye, and PicDefense, and classify results against configurable alert and ignored hostname lists.
== Description ==
@ -20,7 +20,7 @@ Media Audit helps site owners and editors understand where their media files are
* **Internal usage scan** — identifies every post, page, and custom post type that references each attachment as featured image, inline content, or post meta.
* **External reverse image search** — submits images to Google Cloud Vision (Web Detection) and TinEye Commercial API to find matching pages across the web.
* **Consensus detection** — surfaces domains independently confirmed by multiple providers, providing stronger copyright-risk signals.
* **Audit list** — filterable admin page showing each attachment's external scan status and top matching domains.
* **Audit list** — filterable admin page showing each attachment's external scan status, alert classification, and top matching domains.
* **WP-CLI support** — run or schedule scans from the command line.
* **GDPR compliance** — full WordPress privacy API integration for personal data export and erasure on request.
* **Async processing** — all scanning runs via Action Scheduler to avoid blocking web requests.
@ -98,6 +98,17 @@ By default, no. Enable **Settings → Delete data on uninstall** if you want all
Only the 3 latest versions. The full changelog is in [changelog.txt](changelog.txt).
= 1.6.0 =
* Settings page reorganised into four tabs: General, API Credentials, Filters, External Scanning.
* New Filters tab: configurable Alert Hostnames and Ignored Hostnames lists with wildcard support (`*.example.com`), auto-normalization (strips scheme/path/port/www., deduplicates, sorts), and default pre-populated lists (60 alert domains, 56 ignored domains) seeded on first activation.
* New "Alert" status filter in the audit list and alert badge in the External Status column.
* Dashboard stats: new "Alert" card showing attachments with at least one alert domain match.
* Quick-view modal: ignored domains filtered out; alert domains highlighted with a status badge.
* Full Report detail page: external results split into three sections — Alert, Other, and Ignored domains.
* Unified CSV export replacing separate internal/external exports: "Export CSV" (all) and "Export CSV (Alerts only)", one row per attachment with all internal and external data including per-provider match counts and classified domain lists.
* "Media Audit" admin menu repositioned immediately below the built-in Media menu.
= 1.5.0 =
* Added PicDefense as a third external scan provider: POST-based reverse image search with risk classification (high/medium/low), backlinks with similarity scores, risk flags (face/logo/landmark/stock/EXIF copyright), and label detection.
@ -111,13 +122,6 @@ Only the 3 latest versions. The full changelog is in [changelog.txt](changelog.t
* Fixed `external_batch_size` setting being ignored by Action Scheduler batch processing.
* Fixed TinEye domain extraction using the image CDN URL instead of the webpage URL (API field `backlink`, not `url`).
= 1.3.0 =
* Added per-provider scan tracking table (`mra_provider_status`) so each API is tracked independently.
* Added "Sync providers" operation: registers newly configured providers for all existing attachments without rescanning already-completed work.
* Changed `mra_external_results.provider` from a fixed ENUM to `varchar(100)` for extensibility.
* DB schema bumped to 1.1.0 with an automatic migration on update.
= 1.2.0 =
* Added browser-based AJAX scan runner in the Tools page (runs without WP-Cron or Action Scheduler).