No description
  • PHP 90.3%
  • CSS 6.6%
  • JavaScript 3.1%
Find a file
2026-05-13 09:00:23 +00:00
assets release: v0.9.14.2 2026-05-13 09:00:23 +00:00
includes release: v0.9.14.2 2026-05-13 09:00:23 +00:00
languages release: v0.9.14.2 2026-05-13 09:00:23 +00:00
BLUEPRINT.md release: v0.9.14.2 2026-05-13 09:00:23 +00:00
LICENSE release: v0.9.14.2 2026-05-13 09:00:23 +00:00
millaredos-gdpr-comments.php release: v0.9.14.2 2026-05-13 09:00:23 +00:00
README.txt release: v0.9.14.2 2026-05-13 09:00:23 +00:00
uninstall.php release: v0.9.14.2 2026-05-13 09:00:23 +00:00

=== Millaredos GDPR Comments ===
Contributors: millaredos
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=YSB2YH7HHD4L2
Tags: gdpr, comments, privacy, compliance, rgpd
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 8.2
Stable tag: 0.9.14.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Professional compliance framework for WordPress comments focusing on immutable traceability and data integrity.

== Description ==

Millaredos GDPR Comments provides a technical architecture to ensure EU GDPR (RGPD) compliance. It implements a privacy-by-design approach centered on accountability and data integrity.

1. **Granular Consent**: Customizable mandatory checkbox for legal acceptance.
2. **Policy Versioning**: Snapshot system that records the legal text version accepted by each user.
3. **ARCO Rights Portal**: Self-service portal using `[mgc_gdpr_dashboard]` and Magic Links for data access and anonymization. Includes optional content removal checkbox and formal hash invalidation for full audit traceability.
4. **Cryptographic Integrity**: HMAC-based proofs linking comments to specific policy versions.
5. **Legible Audit Trail**: Technical logs in plain text for administrative auditing, with SHA-256 irreversible hashing for erasure events.
6. **Analytics**: Dashboard monitoring compliance rates and integrity health.

== Technical Requirements ==

* **PHP**: 8.2 or higher.
* **WordPress**: 6.5 or higher.
* **Database**: MariaDB 10.4+ or MySQL 8.0+.

== Installation ==

1. Upload to `/wp-content/plugins/millaredos-gdpr-comments`.
2. Activate the plugin.
3. Configure legal texts in Settings -> Millaredos GDPR.

== Frequently Asked Questions ==

= How is data erasure handled? =
When a user requests anonymization via the ARCO Portal, their personal data (author name, email, URL, IP) is removed from the comments table. The comment content is preserved by default; an optional checkbox allows full content removal with an i18n placeholder. The consent proof hash is formally invalidated (not deleted) with `_mgc_hash_status='invalidated_erasure'`, preserving the audit chain. The audit log records the event using a SHA-256 hash of the email address, ensuring zero personal data retention while maintaining legal accountability.

== Upgrade Notice ==

= 0.9.14 =
ARCO self-service integrity redesign. Formal hash invalidation (not deletion), hash regeneration on user self-edits, new integrity filters in admin, and optional comment content removal. Requires careful review of new meta keys and hooks listed in the changelog.

= 0.9.13.3 =
Complete architectural redesign of the logging and traceability system. Implements policy versioning, cryptographic proofing, and full WordPress 6.7 compatibility. Critical security and stability update.

== Changelog ==

= 0.9.14.2 =
* **Fix**: Release mirror workflow — corrected tag propagation, branch naming ambiguity, and error handling to fix "repo is empty" failure on Forgejo releases.
* **Fix (CI)**: Release mirror workflow — replaced `git init` with `git init -b main` to eliminate branch name ambiguity.
* **Fix (CI)**: Release mirror workflow — replaced `git push -f public master:main` with `git push -f public main:main` for explicit branch push.
* **Fix (CI)**: Release mirror workflow — added `git tag "${{ github.ref_name }}" && git push public "${{ github.ref_name }}"` to ensure tags exist in the public repo before release creation.
* **Fix (CI)**: Release mirror workflow — added `set -euo pipefail` to all 5 shell steps for early error detection.
* **Fix (CI)**: Release mirror workflow — added `-f` flag to `curl` commands to fail on HTTP errors.
* **Fix (CI)**: Release mirror workflow — added Python validation of API response (`if 'id' not in data`) with descriptive error message.
* **Fix (CI)**: Release mirror workflow — added ZIP file existence check before asset upload.
* **Fix (CI)**: Release mirror workflow — added `target_commitish: "main"` to release creation payload for Forgejo compatibility.

= 0.9.14.1 =
* **Fix**: Migrated updater from GitHub API to Forgejo API.
* **Fix**: Changed endpoint from `api.github.com/.../releases/latest` (objeto) to `git.millaredos.com/api/v1/.../releases?limit=1&draft=false&pre-release=false` (array, índice `[0]`).
* **Fix**: Replaced `zipball_url` (git archive) with `get_download_url()` method that selects the production ZIP asset (`assets[*]->browser_download_url`). No fallback to `zipball_url`; empty assets log an error and skip the update.
* **Refactor**: Renamed internal property `$github_response` to `$api_response` (neutral provider nomenclature).
* **Fix**: Added guard in `after_install()` to skip `$wp_filesystem->move()` when `destination === install_directory` (the production ZIP root already matches the plugin slug).
* **Chore**: Updated User-Agent header to `Millaredos-GDPR-Comments/{MGC_VERSION}` for server-side identification.
* **Chore**: Added private class constant `FORGEJO_API_BASE` for centralized API URL management.

= 0.9.14 =
* **Feature**: ARCO Self-Service Integrity. Hybrid approach: Alternative B (preserve content, invalidate hash) with optional "Also remove my comment content" checkbox for full content erasure.
* **Feature**: Formal hash invalidation. New meta keys `_mgc_hash_status`, `_mgc_hash_invalidated_at` signalize consent proof state without deleting the original hash. Audit trail preserved.
* **Feature**: Hash regeneration on user self-edits. When a user edits their own comment, `_mgc_consent_proof_hash` is recalculated and `_mgc_hash_revision_count` is incremented (no false `compromised` flag).
* **Security**: Hash guard against spurious regeneration. `_mgc_anonymized` meta is set before `wp_update_comment()` to prevent `handle_comment_edit()` from regenerating the hash on already-anonymized comments.
* **Feature**: New WordPress hooks. `transition_comment_status` invalidates hash on spam/trash/deleted; `delete_comment` captures consent metas before permanent deletion.
* **Admin**: New integrity filters (`invalidated_erasure`, `invalidated_status_change`) in audit table. New audit types: `arco_erasure_hash_invalidated`, `hash_regenerated`, `comment_deleted`, `hash_invalidated_status_change`, `anonymized_no_regenerable`.
* **Fix**: Return value check for `wp_update_comment()` — failure now prevents orphaned meta writes.
* **Fix**: UI feedback in ARCO portal. Anonymized comments display a notice instead of action form. Success message with `mgc_updated=1`.

= 0.9.13.3 =
* **Feature**: Policy Versioning System. Automatic immutable snapshots of legal texts in `mgc_policy_versions`.
* **Feature**: Visual Traceability. New modal inspection for policy snapshots and detailed logs in admin tables.
* **Feature**: Plain-text Audit Log for improved administrative transparency.
* **Security**: SHA-256 irreversible hashing for ARCO erasure/access events (Accountability without PII retention).
* **Security**: Hardened SQL identifiers using `%i` and reinforced AJAX security with immediate `wp_kses` escaping.
* **Fix**: Resolved critical Fatal Error caused by dependencies on private core functions.
* **Fix**: Full WordPress 6.7 compatibility (I18n loading notices silenced).

= 0.9.12 =
* **Fix**: Synchronized documentation and internal changelogs.

= 0.9.11 =
* **Fix**: Resolved version mismatch loop and admin menu icon layout issues.

= 0.9.9 =
* **Feature**: Automatic Update engine via GitHub Mirror.
* **Feature**: Full es_ES localization.
* **Security**: HMAC data integrity proofs.